Grafika komputerowa
Grafika komputerowa
Standardy graficzne
Wykład
Standardy graficzne
Standardy graficzne ISO
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
)
Formaty graficzne
PCX, RLE, TIFF, GIF, JPG, PDF, DXF, 3DS, AV, FLT itd.
Standard GKS
Standard określa zbiór funkcji niskiego poziomu dostępnych dla
programów wykorzystujących grafikę 2D. Zapewnia funkcjonalny
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
standard umożliwia tworzenie obrazu obiektów, nie daje
możliwości tworzenia modeli graficznych
wykorzystywany do tworzenia wykresów i rysunków
technicznych
Standard GKS-3D
system graficzny 2D i 3D
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
obiektów, nie daje możliwości tworzenia
modeli graficznych
Standard PHIGS
Standard umożliwia konstruowanie modeli obiektów
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
różne sposoby obserwacji modelu (punkt obserwacji, rodzaj
rzutu: perspektywiczny lub ortogonalny)
Standard PHIGS+
Rozszerzenie standardu PHIGS:
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:
stała barwa wielokąta
metoda Gourauda
metoda Phonga
zmiana barwy w funkcji odległości (efekt głębi przestrzennej)
Cieniowanie Gourauda
1.
Wyznaczenie barwy w wierzchołkach trójkąta:
- 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
.
Cieniowanie Phonga
Cieniowanie metodą Phonga polega na interpolacji wektora normalnego dla
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
Cieniowanie - porównanie
a)
model nieoświetlony
b)
cieniowanie stałą barwą wielokąta
c)
cieniowanie metodą Gourauda
d)
cieniowanie metodą Phonga
Standard CGI
Standard definiuje abstrakcyjne urządzenie graficzne
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
funkcje zewnętrzne: umożliwiają działanie na danych nie związanych
bezpośrednio z generowaniem obrazu
Standard CGI
Standardy przemysłowe
XWindow (
MIT
)
IRIS Performer (
Silicon Graphics
)
OpenGL (
Silicon Graphics
)
PostScript (
Adobe
)
OpenGL (
Silicon Graphics, 1991)
szeroko stosowany standard rozwijany i dokumentowany przez
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
Prime, Open Scene Graph
)
Co umożliwia OpenGL?:
modelowanie obiektów 2D/3D w oparciu o szeroką listę
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
Czego nie umożliwia OpenGL?:
zarządzania oknem graficznym i pętlą obsługi zdarzeń
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
Możliwości funkcjonalne
opis geometryczny za pomocą odcinków, trójkątów i czworokątó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
dnia i nocy, głębia przestrzenna)
możliwość implementacji sprzętowej funkcji i procedur
Prymitywy graficzne w OpenGL
Przykład modelowania obiektu
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
Przykład modelowania obiektu
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)));
}
glEnd();
}
Obiekt: koło o promieniu r i środku w punkcie (0,0,0) leżące na płaszczyźnie XZ
- 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
Przykład modelowania obiektu
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)),
h,r*sin(DEG2RAD(i*dAlfa)));
}
glEnd();
}
Obiekt: powierzchnia boczna walca o promieniu r, wysokości h, o środku dolnej
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
Podstawowe przekształcenia modelujące
przesunięcia
glTranslate*(x,y,z)
skalowanie
glScale*(sx,sy,sz)
obrót wokół zadanej osi
glRotate*(α,x,y,z)
Przekształcenia rzutujące
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
odciętych (macierz
P
),
odcięcie (odrzucenie) prymitywów leżących poza kanoniczną bryłą
widzenia
PostScript (
Adobe, 1991)
Język opisu stron przeznaczony do transmisji i przechowywania
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
atrybuty – grubość linii, rodzaj wypełnienia (poziom szarości, barwa
określona w jednym z modeli RGB, HSB, CMYK, XYZ, YIQ, YUV, wzorzec)
obrazy: mapy bitowe dowolnie położone i zorientowane, możliwość
skalowania
Formaty graficzne
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
powtórzeń
Formaty graficzne – cd.
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
Formaty graficzne – cd.
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
możliwość rozbudowy formatu o nowe funkcje
Formaty graficzne – cd.
JPEG – (
Joint Photographic Experts Group
)
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
jakości. Z obrazu mogą zostać usunięte drobne szczegóły, a linie i
ostre krawędzie zostaną rozmyte. Fotografia po skanowaniu
kodowana jest przeciętnie przy użyciu 1 bitu na piksel.
uwaga: należy używać zawsze tego samego stopnia kompresji przy
wielokrotnym ponownym kompresowaniu tego samego obrazu JPEG
Formaty graficzne – cd.
PDF – (
Portable Document Format
)
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;
PDF995 - darmowy driver do tworzenia dokumentów PDF dostępny na stronie
http://www.pdf995.com
(po zainstalowaniu na liście drukarek pojawi się
wirtualna drukarka o nazwie PDF995).
Formaty graficzne – cd.
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
wykorzystywany w generatorach obrazu „real-time”
hierarchiczna struktura opisu modelu obiektów
grupy i klasy
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
OpenFlight
– program modelujący
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
OpenFlight
– hierarchiczna struktura bazy danych
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
OpenFlight
– grupa DCS
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
OpenFlight
– grupa LOD
Obiekt
Obiekt
Obiekt
sprawny
Obiekt
sprawny
Obiekt
uszkodzony
Obiekt
uszkodzony
Obiekt
zniszczony
Obiekt
zniszczony
- switch
OpenFlight
– grupa Switch
Eksplozja
Eksplozja
Eksplozja
Klatka 1
Klatka
Klatka
1
1
Klatka 2
Klatka
Klatka
2
2
Klatka n
Klatka
Klatka
n
n
-
-
sekwencja
sekwencja
.......
.......
OpenFlight
– grupa Sekwencja