background image

Grafika komputerowa

Grafika komputerowa

Standardy graficzne

Wykład 

background image

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.

background image

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

background image

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

background image

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)

background image

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)

background image

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

background image

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 

background image

Cieniowanie - porównanie

a)

model nieoświetlony

b)

cieniowanie stałą barwą wielokąta

c)

cieniowanie metodą Gourauda

d)

cieniowanie metodą Phonga

background image

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 

background image

Standard CGI

background image

Standardy przemysłowe



XWindow (

MIT

)



IRIS Performer (

Silicon Graphics

)



OpenGL (

Silicon Graphics

)



PostScript (

Adobe

)

background image

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

)

background image

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 

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

background image

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

background image

Możliwości funkcjonalne



opis geometryczny za pomocą odcinków, trójkątów i czworokątów



krzywe 

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

background image

Prymitywy graficzne w OpenGL

background image

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

background image

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

background image

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

background image

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)

background image

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

background image

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 

background image

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ń

background image

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

background image

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

background image

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

background image

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).

background image

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

background image





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

background image

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

background image

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

background image

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

d0

d0

SA-6

SA

SA

-

-

6

6

OpenFlight

– grupa LOD

background image

Obiekt

Obiekt

Obiekt

sprawny

Obiekt

sprawny

Obiekt

uszkodzony

Obiekt

uszkodzony

Obiekt

zniszczony

Obiekt

zniszczony

- switch

OpenFlight

– grupa Switch

background image

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