GRAFICA 3D
Valentin Stoica
Grafica 3D UPB 2020-20021 1
Sisteme de referinta tridimensionale
coordonate cilindrice
P(ρ, φ, z)
coordonate sferice
P(r, θ, φ)
coordonate carteziene
P(x, y, z)
Grafica 3D UPB 2020-20021 2
Sisteme de coordonate carteziene
Sistem de referinţă universal
este sistemul de coordonate cartezian în care sunt definite
toate obiectele scenei virtuale
Se defineşte prin originea O şi trei axe
perpendiculare, Ox, Oy şi Oz, orientate după regula
mâinii drepte sau după regula mâinii stângi
y y
x O x
z (a) (b)
(a) Sistem de coordonate orientat după regula (b) Sistem de coordonate orientat după regula
mâinii drepte (sistem de coordonate drept) mâinii stângi
Grafica 3D UPB 2020-20021 3
Sisteme de coordonate carteziene
Un punct P în spaţiul tridimensional se reprezintă în
sistemul de referinţă cartezian printr-un tripet de valori
scalare x, y, z, ce reprezintă componentele vectorului de
poziţie OP pe cele trei axe de coordonate
În notaţia matriceală un punct în spaţiul tridimensional se
poate reprezenta printr-o matrice linie sau coloană:
x
P x y z sau P y
z
Convenţia de reprezentare matematică folosita de
biblioteca grafică OpenGL este cea de matrice coloană
pentru un punct în spaţiul tridimensional
Grafica 3D UPB 2020-20021 4
Modele de culoare
Modelul RGB
culoarea este reprezentată printr-un triplet de culori
primare, roşu (red) verde (green), albastru (blue).
spaţiul de reprezentare a tuturor
culorilor în modelul RGB este un Verde
cub într-un sistem de coordonate Cian
Alb
Galben
cu axele notate Roşu (Red), Verde Negru
(Green), Albastru (Blue) Albastru
Rosu
C(r,g,b) = rR + gG + bB
Magenta
Modelul RGBA
cea de-a patra componentă () indică transparenţa
suprafeţei:
= 1suprafaţă opacă
= 0 suprafaţă complet transparentă
Grafica 3D UPB 2020-20021 5
Modelul RGB
Grafica 3D UPB 2020-20021 6
Modele de culoare
Modelul HSV
transformare neliniară a spaţiului RGB, prin care culorile
sunt specificate prin componentele: nuanţă (hue), saturaţie
(saturation) şi valoare (value).
Spaţiul culorilor în modelul HSV V
Verde Galben
este o piramidă hexagonală într-un Cian
Alb
Roşu
sistem de coordonate polare HVS Albastru Magenta
H
Negru S
Grafica 3D UPB 2020-20021 7
Modelarea obiectelor
Proprietăţile obiectelor tridimensionale ce se
modelează în aplicaţiile grafice se pot împărţi în
două categorii:
forma
solide
deformabile
aspect
Modelarea solidelor
o tehnică de proiectare, vizualizare şi analiză a modului în
care obiectele reale se reprezintă în calculator
modelare prin:
suprafaţă de frontieră (modelarea poligonală, modelarea prin
reţele de petice parametrice)
volum (modelarea prin compunerea obiectelor, modelarea
prin divizare spaţială)
Grafica 3D UPB 2020-20021 8
Metodele de modelare si reprezentare a
obiectelor
Modelarea poligonală: obiectele sunt
aproximate printr-o reţea de feţe care sunt
poligoane planare.
Grafica 3D UPB 2020-20021 9
Metodele de modelare si reprezentare a
obiectelor
Modelarea prin reţele de petice parametrice
bicubice (bicubic parametric patches): obiectele
sunt aproximate prin reţele de elemente spaţiale
numite petice (patches). Acestea sunt reprezentate
prin polinoame cu două variabile parametrice, în
mod obişnuit cubice.
Puncte
de control
Grafica 3D UPB 2020-20021 10
Metodele de modelare si reprezentare a
obiectelor
Modelarea prin compunerea obiectelor
(Constructive Solid Geometry - CSG):
obiectele sunt reprezentate prin colecţii de
obiecte elementare (cilindri, sfere, poliedre,
etc.).
Sfera
Cub
Grafica 3D UPB 2020-20021 11
Metodele de modelare si reprezentare a
obiectelor
Modelarea prin divizare spaţială: obiectele
sunt încorporate în spaţiu, prin atribuirea unei
etichete fiecărui element spaţial, în funcţie de
obiectul care ocupă elementul respectiv.
Grafica 3D UPB 2020-20021 12
Modelarea poligonala a obiectelor
Forma “clasică” de modelare a obiectelor folosită în
grafica pe calculator:
uşurinţa în modelare
posibilitatea de redare rapidă a imaginii obiectelor
Reprezentarea poligonală:
un obiect tridimensional este compus dintr-o colecţie de
feţe, fiecare faţă fiind o suprafaţă plană reprezentată printr-
un poligon
Grafica 3D UPB 2020-20021 13
Reprezentarea poligoanelor
Poligon:
o regiune din plan mărginită de o colecţie finită de
segmente de dreaptă care formează un circuit închis
simplu.
Fie n puncte în plan (v0, v1, …,vn–1) şi n segmente
de dreaptă (e0 = v0v1, e1 = v1v2, …. en–1 = vn–1v0) care
conectează perechi de puncte succesive în ordine
ciclică, deci inclusiv conexiunea între ultimul punct şi
primul punct din listă. Aceste segmente mărginesc
un poligon, dacă şi numai dacă:
intersecţia fiecărei perechi de segmente adiacente în
ordinea ciclică este un singur punct, conţinut de ambele
segemente: ei ei+1 = vi+1, pentru oricare i = 0,…, n–1.
segmente neadiacente nu se intersectează: ei ej = ,
pentru orice j i+1.
Grafica 3D UPB 2020-20021 14
Reprezentarea poligoanelor
vi - vârfurile poligonului (vertices)
ei - muchii (sau laturi) ale poligonului
Un poligon:
conţine n vârfuri şi n muchii
muchiile sunt orientate, astfel încât formează un ciclu
(circuit închis) = orientare consistentă (dacă se parcurg
muchiile în sensul lor de definiţie, interiorul poligonului este
văzut întotdeauna în partea stângă/dreaptă).
v1 e0 v0
e1
v2 e4
e2 v4
v3
e3
Grafica 3D UPB 2020-20021 15
Reprezentarea poliedrelor
Modelarea şi reprezentarea prin suprafaţa de frontieră =
obiectele sunt aproximate prin poliedre şi modelul lor este
reprezentat prin suprafaţa poliedrului, compusă dintr-o colecţie
de poligoane
Suprafaţa de frontieră a unui poliedru conţine trei tipuri de
elemente geometrice: vârfurile (punctele), care sunt zero-
dimensionale, muchiile (segmentele), care sunt unidimensionale
şi feţele (poligoanele), care sunt bidimensionale
Fete poligonale
Muchii
Vârfuri
Grafica 3D UPB 2020-20021 16
Implementarea modelului poligonal
Printr-o listă de poligoane (vector, listă înlănţuită,
etc.).
Întreaga informaţie referitoare la forma unui obiect
este compusă din liste de coordonate ale vârfurilor,
la care se mai adaugă şi alte informaţii geometrice
necesare în redare (de exemplu, normalele la
suprafeţe).
Forma unui obiect modelat prin reţea de poligoane
poate fi reprezentată ca un vector de feţe, fiecare
faţă fiind un vector de vârfuri, fiecare vârf fiind un
vector de trei coordonate în virgulă flotantă
Grafica 3D UPB 2020-20021 17
Implementarea modelului poligonal
Exemplu: cub
double CubeFaces[6][4][3] = {
{{-1,-1,-1}, // fata 0
{ 1,-1,-1},
{ 1,-1, 1},
{-1,-1, 1}},
{{-1, 1, 1}, // fata 1
{ 1, 1, 1},
{ 1, 1,-1},
{-1, 1,-1}},
{{-1,-1, 1}, // fata 2
{ 1,-1, 1},
{ 1, 1, 1},
{-1, 1, 1}},
{{ 1,-1,-1}, // fata 3
{-1,-1,-1},
{-1, 1,-1},
{ 1, 1,-1}},
{{ 1,-1, 1}, // fata 4
{ 1,-1,-1},
{ 1, 1,-1},
{ 1, 1, 1}},
{{-1,-1, 1}, // fata 5
{-1, 1, 1},
{-1, 1,-1},
{-1,-1,-1}}
};
implementare ineficientă deoarece
fiecare vârf este prelucrat de trei ori,
pentru fiecare faţă adiacentă acestuia
Grafica 3D UPB 2020-20021 18
Implementarea modelului poligonal
Exemplu mai eficient: cub
double CubeCoords[8][3]={
{-1,-1, 1},
{ 1,-1, 1},
{ 1,-1,-1},
{-1,-1,-1},
{-1, 1, 1},
{ 1, 1, 1},
{ 1, 1,-1},
{-1, 1,-1}
};
int CubeIndexFace[6][4]={
{3, 2, 1, 0},
{4, 5, 6, 7},
{0, 1, 5, 4},
{2, 3, 7, 6},
{1, 2, 6, 5},
{0, 4, 7, 3}
};
Grafica 3D UPB 2020-20021 19
Reprezentarea poliedrelor
O reţea de poligoane
poate să reprezinte:
suprafaţa de frontieră
închisă a unui solid
suprafaţa deschisă,
necesară în anumite
situaţii de modelare, cum
este suprafaţa terenului
simulat într-o scenă
virtuală
Grafica 3D UPB 2020-20021 20
Reprezentarea poliedrelor
Tipuri de reprezentare:
reprezentare ca suprafaţă
(poligoane “pline”)
reprezentare prin contur
“cadru de sârmă”
(wireframe)
Grafica 3D UPB 2020-20021 21
Reprezentarea poliedrelor
Precizia de reprezentare a modelului
diferenţa dintre suprafaţa obiectului şi feţele
poligonale prin care este aproximat
numărul mare de poligoane = precizia de
reprezentare mai bună = cerinţe de calcul sporite
16x16 poligoane 32x32 poligoane 64x64 poligoane
Grafica 3D UPB 2020-20021 22