Standardy graficzne
Wykład
GKS (
Graphical Kernel System
)
GKS-3D
PHIGS (
Programmer’s Hierarhical Interactive Graphics System
)
PHIGS+
CGM (
Computer Graphics Metafile
)
CGI (
Computer Graphics Interface
)
Standardy przemysłowe
XWindow (
MIT
)
IRIS Performer (
Silicon Graphics
)
OpenGL (
Silicon Graphics
)
PostScript (
Adobe
)
interfejs między programem użytkowym a wejściowymi i
wyjściowymi urządzeniami grafiki komputerowej
ok. 200 podprogramów do tworzenia obrazu z dostępnych
prymitywów graficznych i przyjmowania danych z różnych urządzeń
prymitywy graficzne: łamana, markery, wypełniony obszar, tekst,
tabela komórek
atrybuty: rodzaj i szerokość linii, sposób wypełniania obszaru
definicja 6 logicznych urządzeń do wprowadzania informacji:
a) urządzenie do podawania współrzędnych punktu - lokalizator
b) urządzenie do podawania współrzędnych ciągu punktów
c) urządzenie do podawania wielkości skalarnej – waluator
d) urządzenie do wprowadzania tekstu
e) wskaźnik elementu obrazu
f) wskaźnik wyboru menu
uogólnienie
standardu
GKS
na
grafik
trójwymiarową
wszystkie prymitywy standardu 2D uogólnione
do trzech wymiarów
dodatkowe funkcje:
przekształcenia w przestrzeni 3D
operacje usuwania niewidocznych linii i powierzchni
standard
umożliwia
tworzenie
obrazu
2D o złożonej strukturze logicznej oraz tworzenie
obrazów tych modeli
czynności definiowania modelu i wyświetlania są oddzielone
prymitywy graficzne: linie, markery, tekst, wypełniony obszar
oraz związane z nimi atrybuty
możliwość grupowania elementów składowych modelu
możliwość budowania modeli o strukturze hierarchicznej
(poszczególne elementy mogą być definiowane w różnych
układach współrzędnych a następnie przenoszone do
wspólnego układu)
struktury definiujące model przechowywane w pliku
o nowe prymitywy i funkcje do modelowania krzywych i
powierzchni:
siatki trójkątne i czworokątne
krzywe i powierzchnie B-sklejane
funkcje do definiowania źródeł oświetlenia:
światło otaczające
światło punktowe kierunkowe
światło punktowe pozycyjne
światło stożkowe
funkcje do realizacji cieniowania:
- wyznaczenie wektorów normalnych do wszystkich wierzchołków
jako średniej arytmetycznej wektorów normalnych wszystkich ścian,
do których ten wierzchołek należy.
- na podstawie wektora normalnego wyznaczenie barwy wierzchołka
korzystając z wybranego modelu oświetlenia
2.
Liniowa interpolacja barwy dla wszystkich punktów wielokąta zgodnie
z zaprezentowanymi wzorami
.
każdego punktu wielokąta, a następnie wyznaczenie na tej podstawie
intensywności barwy.
Etapy:
1.
Wyznaczenie wektorów normalnych do wszystkich wierzchołków wielokąta
jako średniej arytmetycznej wektorów normalnych wszystkich ścian, do
których ten wierzchołek należy.
2.
Liniowa interpolacja wartości wektorów normalnych dla wszystkich punktów
wielokąta (dla wszystkich pikseli):
2.1. Interpolacja wzdłuż krawędzi;
2.2. Interpolacja wzdłuż linii horyzontalnych.
3.
Na podstawie wartości wektorów normalnych wyznaczenie barwy dla
wszystkich punktów wielokąta zgodnie z przyjętym modelem oświetlenia
a)
model nieoświetlony
b)
cieniowanie stałą barwą wielokąta
c)
cieniowanie metodą Gourauda
d)
cieniowanie metodą Phonga
zdolne do przyjmowania, przechowywania i przetwarzania
informacji wejściowych oraz generowania wyjściowych
informacji obrazowych
funkcje standardu są niezależne od urządzenia
funkcje standardu są ulokowane pomiędzy oprogramowaniem (standard
GKS) a urządzeniem lub metaplikiem
Funkcje CGI:
funkcje sterujące: określają tryby pracy innych funkcji
prymitywy graficzne i ich atrybuty: opisują elementy obrazu
funkcje rastrowe: umożliwiają generowanie i przetwarzanie map bitowych
funkcje segmentowe: umożliwiają pamiętanie i manipulowanie grupami
prymitywów i ich atrybutów
funkcje wejściowe: umożliwiają odbieranie danych obrazowych
XWindow (
MIT
)
IRIS Performer (
Silicon Graphics
)
OpenGL (
Silicon Graphics
)
PostScript (
Adobe
)
konsorcjum OpenGL Architecture Review Board (
Silicon
Graphics, IBM, Intel, HP, Microsoft, Intergraph
)
biblioteka kilkuset procedur i funkcji graficznych opracowana dla
potrzeb najnowszych tendencji w technologii sprzętu grafiki
komputerowej. Wykorzystywany model klient – serwer, w którym
klient (program) wysyła polecenia a serwer (GL) wykonuje
polecenia
OpenGL jest niezależny od systemu operacyjnego (UNIX, Linux,
Win95/98/NT, Mac OS, OS/2) i dostępny na wielu platformach
sprzętowych
OpenGL stanowi podstawę do tworzenia zaawansowanych bibliotek
graficznych (np.
SGI OpenGL Performer, MultiGen-Paradigm Vega
prymitywów graficznych w pełnym zestawie barw (24 bity)
wykonywanie
na obiektach przekształceń geometrycznych
(translacje, rotacje, skalowanie, rzutowanie)
wykonywanie
obliczeń
związanych
z
oświetleniem,
odwzorowaniem tekstur i usuwaniem niewidocznych linii i
powierzchni
wspomaganie programisty w zakresie realizacji złożonych efektów
graficznych, takich jak: wizualizacja mgły i głębi przestrzennej,
rozmycie obiektów w ruchu, oraz usuwanie efektu aliasingu
opisywania
złożonych
obiektów
za
pomocą
gotowych
mechanizmów
(np.
brak
wbudowanych
mechanizmów
zapisywania/czytania modeli obiektów z pliku)
generowania w sposób automatyczny efektów wizualnych takich
jak: cienie, odbicia lustrzane obiektów
krzywe
i
powierzchnie
nieregularne
definiowane
przez
niejednorodne parametryczne funkcje B-sklejane (NURBS)
pełen zestaw barw (24 bity)
cieniowanie metodą Gourauda
operacje HLHSR realizowane z wykorzystaniem Z-bufora
modelowanie oświetlenia (do 8 różnych źródeł światła)
operacje na pixelach
funkcje sterujące buforowaniem ekranu
antyaliasing
funkcje sterujące nakładaniem (mapowaniem) tekstury
modelowanie efektów atmosferycznych (mgła, zachmurzenie, pora
Void Kwadrat()
{
glColor3f(0.0,0.0,1.0);
glBegin(GL_QUADS);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(0.0, 1,0, 0.0);
glVertex3f(1.0, 1.0, 0.0);
glVertex3f(1.0, 0.0, 0.0);
glEnd();
}
Płaszczyzna XY
Obiekt: kwadrat o boku 1 leżący na płaszczyźnie XY
Void Koło()
{
glColor3f(0.0,1.0,0.0);
glBegin(GL_TRIANGLE_FUN);
glVertex3f(0.0, 0.0, 0.0);
for (i=0; i*dAlfa<=360.0; i++);
{
glVertex3f(r*cos(DEG2RAD(i*dAlfa)),
0.0,r*sin(DEG2RAD(i*dAlfa)));
- dAlfa – wartość kąta wyznaczającego kolejny punkt na okręgu
dAlfa=360/N; gdzie: N-liczba podziałów koła
Płaszczyzna XZ
v
1
v
2
v
3
v
4
v
5
v
6
v
8
v
7
v
0
Void powierzchnia_boczna_walca()
{
glColor3f(1.0,1.0,0.0);
glBegin(GL_QUAD_STRIP);
for (i=0; i*dAlfa<=360.0; i++);
{
glVertex3f(r*cos(DEG2RAD(i*dAlfa)),
0.0,r*sin(DEG2RAD(i*dAlfa)));
glVertex3f(r*cos(DEG2RAD(i*dAlfa)),
podstawy w punkcie (0,0,0) leżącej na płaszczyźnie XZ
- dAlfa – wartość kąta wyznaczającego kolejny punkt na brzegu podstawy
dAlfa=360/N; gdzie: N-liczba podziałów pionowych walca
Z
X
Y
V
i+1
V
i+3
V
i+2
V
i
r
h
przesunięcia
glTranslate*(x,y,z)
skalowanie
glScale*(sx,sy,sz)
obrót wokół zadanej osi
glRotate*(α,x,y,z)
Rodzaje rzutów w OpenGL:
rzut perspektywiczny
glFrustum*(l,r,b,t,n,f)
rzut ortogonalny (równoległy)
glOrtho*(l,r,b,t,n,f)
Funkcje generują macierz przekształcenia
P
Etapy rzutowania:
przekształcenie współrzędnych obserwatora do współrzędnych
dokumentów drukowanych bądź wyświetlanych. Tekst i obrazy s
traktowane jako obiekty i podlegają takim samym przekształceniom
jak wektory. Plik PostScript zawiera nagłówek definiujący, który jest
wykorzystywany do automatycznego rozplanowania strony.
Proces tworzenia dokumentu drukowanego przebiega dwustopniowo:
A.
generacja opisu niezależnego od urządzenia przez program użytkowy
B.
interpretacja opisu przez program sterujący urządzeniem rastrowym
Podstawowe typy obiektów graficznych:
tekst: różne fonty, wielkości czcionki, orientacja, położenie na stronie
grafika: prymitywy - odcinki, łuki, krzywe Beziera
PCX (
Zsoft Corporation
)
opracowany dla obrazów generowanych przez program
Paintbrush
128-bajtowy nagłówek definiujący specyfikację obrazu
sposób kodowania
liczba bitów na pixel
rozmiary obrazu
rodzaj palety barw
liczba warstw
sposób interpretacji palety barw
dane obrazowe 1-bajtowe zakodowane metodą ciągu
RLE (
Uniwersytet w Utah
)
przeznaczony do pamiętania wielowarstwowych
obrazów rastrowych (do 255 warstw)
dowolne rozmiary obrazów
8 bitów na składowe R, G, B i A
dane obrazowe w postaci skompresowanej
TIFF (
Tag Image Format File
- Aldus Corporation)
opracowany do opisu i przesyłania obrazów rastrowych
dowolne rozmiary obrazów
obrazy czarno-białe, monochromatyczne z pełną gradacją szarości,
kolorowe z paletą barw lub pełną barwą
różne modele koloru (RGB, CMYK, YCrCb)
możliwość wykorzystania różnych metod kompresji
obrazy mogą pochodzić z różnych urządzeń (skanery, kamery,
urządzenia akwizycji obrazów) oraz z różnych programów do
malowania i retuszowania
możliwość dodawania specjalnych informacji
standardowa metoda kompresji zdigitalizowanych fotografii
kodowanie kolorów: True Color RGB 2
24
=16,7 mln barw
kompresja stratna, próbkowane są bloki 8x8 pikseli: dokładnie
zapamiętywana jest uśredniona wartość barwy, informacje o
zmianach jasności lub koloru pikseli zapamiętywane są mniej
dokładnie niż obszary jednolite. Im większy stopień kompresji, tym
więcej pikseli w bloku będzie miało zbliżoną barwę. Transformacyjna
metoda kompresji DCT (
Digital Cosinus Transform
) połączona z
kodowaniem różnicowym
najpopularniejszy format kodowania obrazów o pełnej skali szarości
i kolorowych dla potrzeb sieci Internet, programów prezentacyjnych
i multimedialnych, wymagających plików o niewielkich rozmiarach
im większy stopień kompresji tym mniejszy plik i tym większa strata
format plików służący do prezentacji, przenoszenia i drukowania treści
tekstowo-graficznych;
opracowany i promowany przez firmę
Adobe Systems
;
językiem opisu pliku PDF jest okrojona wersja języka programowania
PostScript
;
czytnik formatu (
Acrobat Reader
) jest udostępniany za darmo przez firmę
Adobe na wiele platform sprzętowo-programowych;
istnieje szereg programów płatnych i darmowych mogących wyświetlać,
tworzyć i modyfikować pliki w tym formacie – np.
Ghostscript
;
wiele programów dysponuje funkcją eksportu swoich dokumentów do formatu
PDF - w tym większość pakietów biurowych oraz praktycznie wszystkie
współczesne programy DTP;
istnieje możliwość szyfrowania dokumentów PDF i specyfikowania ograniczeń
czynności, które nie mogą być dokonywane przez użytkownika;
sterowniki PDF - programy działające jak wirtualna drukarka;
GIF (
Graphics Interchange Format
- CompuServe)
opracowany dla potrzeb transmisji obrazów rastrowych
w standardzie VGA z co najwyżej 8 bitami na pixel
DXF (
Drawing Exchange File
- AutoDesk)
opracowany dla potrzeb opisu rysunków tworzonych w
programie AutoCAD
OpenFlight (FLT) (MultiGen Inc.)
format graficznej reprezentacji obiektów 3D
MultGen
MultGen
II Pro (SGI)
II Pro (SGI)
MultiGen Creator
MultiGen Creator
(NT)
(NT)
Charakterystyka:
Charakterystyka:
program do tworzenia i edycji
program do tworzenia i edycji
graficznych baz danych w standardzie
graficznych baz danych w standardzie
OpenFlight
OpenFlight
posiada zintegrowane narzędzia
posiada zintegrowane narzędzia
wspomagające modelowanie
wspomagające modelowanie
ukształtowania i pokrycia terenu
ukształtowania i pokrycia terenu
umożliwia zautomatyzowane
umożliwia zautomatyzowane
modelowanie przyrządów pokładowych
modelowanie przyrządów pokładowych
Korzeń
Korzeń
Korzeń
Grupa 1
Grupa 1
Grupa 1
Grupa 2
Grupa 2
Grupa 2
Grupa 3
Grupa 3
Grupa 3
Obiekt 1
Obiekt 1
Obiekt 1
Obiekt 2
Obiekt 2
Obiekt 2
Obiekt 3
Obiekt 3
Obiekt 3
Grupa 4
Grupa 4
Grupa 4
Grupa 5
Grupa 5
Grupa 5
Grupa 6
Grupa 6
Grupa 6
DCS (
DCS (
Dynamics Coordinate
Dynamics Coordinate
System
System
)
)
–
–
dynamiczny układ współrzędnych
dynamiczny układ współrzędnych
Czołg
M1-A1
Czołg
Czołg
M1
M1
-
-
A1
A1
Wieża
Wieża
Wieża
Działo
Działo
Działo
Działo
Działo
Działo
Kadłub
wieży
Kadłub
Kadłub
wieży
wieży
-
-
grupa DCS
grupa DCS
Kadłub
Kadłub
Kadłub
LOD (
LOD (
Level of Detail
Level of Detail
)
)
–
–
poziom szczegółowości
poziom szczegółowości
L 1
L 1
L 1
L 2
L 2
L 2
L 3
L 3
L 3
d1
d1
d2
d2
d3
d3
d0
d0
SA-6
d0 - d1
SA
SA
-
-
6
6
d0
d0
-
-
d1
d1
SA-6
d1 - d2
SA
SA
-
-
6
6
d1
d1
-
-
d2
d2
SA-6
d2 - d3
SA
SA
-
-
6
6
d2
d2
-
-
d3
d3
-
-
grupa LOD
grupa LOD
SA-6
0 – d0
SA
SA
-
-
6
6
0
0
–
–
d0
d0
SA-6
SA
SA
-
-
6
6
Obiekt
Obiekt
Obiekt
sprawny
Obiekt
sprawny
Obiekt
uszkodzony
Obiekt
uszkodzony
Obiekt
zniszczony
Obiekt
zniszczony
Eksplozja
Eksplozja
Eksplozja
Klatka 1
Klatka
Klatka
1
1
Klatka 2
Klatka
Klatka
2
2
Klatka n
Klatka
Klatka
n
n
.......
.......