Informatica Grafica Gianluigi Ciocca, Simone Bianco F1801Q120 Clipping 3D (1) Dopo essere state trasformate, le coordinate cartesiane di un punto 3D diventano (in coordinate omogenee): x xh y y M volume − >canonical = h z zh 1 h Tutti i punti che stanno nel canonical view volume (e quindi visibili dalla camera) hanno coordinate tali che −1 ≤ xh ≤1 h −1 ≤ yh ≤1 h −1 ≤ Informatica Grafica zh ≤1 h 80 Clipping 3D (2) L’algoritmo di clipping 2D Cohen-Sutherland può essere direttamente esteso al caso 3D A ciascun endpoint è associato un codice di 6 bit B5B4B3B2B1B0 con Bi={0,1} B0 : il punto è alla sinistra del cubo (xh < -h) B1 : il punto è a destra del cubo (xh > h) B2 : il punto è sotto il cubo (yh < -h) B3 : il punto è sopra il cubo (yh > h) B4 : il punto è di fronte al piano near (xh < -h) B5 : il punto è oltre il piano far (zh > h) Le condizioni sopra elencate valgono se h>0 Se h<0, le condizioni si applicano negando le coordinate Informatica Grafica 81 Clipping 3D (3) L’algoritmo di clipping 2D Cohen-Sutherland può essere direttamente esteso al caso 3D y Top Far z Near x Bottom Left Right 011001 011000 011010 001001 001000 001010 101001 101000 101010 010001 010000 010010 000001 000000 000010 100001 100000 100010 010101 010100 010110 000101 000100 000110 100101 100100 100110 Region Codes In front of Near plane Region Codes Between Near and Far planes Informatica Grafica Region Codes Behind Far plane 82 Clipping 3D (4) Anche l’algoritmo Liang-Barsky può essere esteso al 3D nello stesso modo L’equazione parametrica della linea diventa (xh1 , yh1 , zh1 , h1 ) (xh 2 , yh 2 , zh 2 , h2 ) u=0 u=1 xh = xh1 + u ⋅ ( xh 2 − xh1 ) yh = yh1 + u ⋅ ( yh 2 − yh1 ) 0 ≤ u ≤1 z h = z h1 + u ⋅ ( z h 2 − z h1 ) h = h1 + u ⋅ (h2 − h1 ) Informatica Grafica 83 Modellazione 3D (1) Modellare significa Definire/acquisire una rappresentazione degli oggetti Cosa Definire la descrizione (modello) degli oggetti Come Definire gli attributi associati ai vari elementi degli oggetti Aspetto Informatica Grafica 84 Modellazione 3D (2) I modelli degli oggetti possono essere definiti in modo diverso a seconda del loro uso e di come sono stati creati Volumi Voxel Geometria solida costruttiva ... Contorni Poligoni e mesh Curve implicite Patch parametriche ... Informatica Grafica 85 Boundary Representation (1) Descrizione basata sul contorno Gli oggetti sono descritti attraverso le loro superfici Vertici Spigoli Poligoni Facce Mesh Poliedri Informatica Grafica 86 Boundary Representation (2) Mesh di poligoni Uno spigolo (edge) è un segmento che unisce due vertici Un poligono è una sequenza chiusa di spigoli Informatica Grafica 87 Boundary Representation (3) Mesh di poligoni Il poligono elementare più usato è il triangolo La faccia del triangolo è garantita giacere su un piano E’ possibile definire la normale del piano E’ definita dall’ordine dei vertici (usualmente antiorario) N C N = (B − A) × (C − A) A B Informatica Grafica 88 Boundary Representation (4) Mesh di poligoni Un insieme connesso di poligoni è una maglia poligonale (mesh) Per una corretta modellazione, la mesh deve essere 2-manifold Uno spigolo deve appartenere al più a 2 poligoni Informatica Grafica 89 Boundary Representation (5) Mesh di poligoni Le mesh possono essere di diverso tipo Strip Fan Semplice Informatica Grafica 90 Boundary Representation (6) Mesh di poligoni L’orientazione di due facce è detta compatibile se i vertici dell’edge in comune sono percorsi in ordine inverso Tutte le normali hanno la stessa orientazione N Informatica Grafica N 91 Boundary Representation (7) Mesh di poligoni Gli oggetti sono costruiti con mesh chiuse (poliedri) Tutti gli edge appartengono esattamente a 2 facce Le normali di un poliedro siano coerenti tra loro (“uscenti” dall’oggetto) Informatica Grafica 92 Boundary Representation (8) Spesso è necessario una struttura dati efficiente per codificare le mesh Interrogazioni sulla topologia Manipolazione della geometria ... La codifica deve anche minimizzare la duplicazione di informazioni Informatica Grafica 93 Boundary Representation (9) Codifica esplicita P1={(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)} P2={(x1,y1,z1),(x4,y4,z4),(x2,y2,z2)} ... V3 V2 P1 P2 Lista di vertici V={V1,V2,V3,V4} P1={V1,V2,V3} P2={V1,V4,V2} V1 V1=(x1,y1,z1) V2=(x2,y2,z2) V3=(x3,y3,z3) V4=(x4,y4,z4) Informatica Grafica V4 94 Boundary Representation (10) Lista di Edge V={V1,V2,V3,V4} E1={V3,V1,P1,λ} E2={V1,V4,P2,λ} E3={V4,V2,P2,λ} E4={V2,V3,P1,λ} E5={V1,V2,P1,P2} V1=(x1,y1,z1) V2=(x2,y2,z2) V3=(x3,y3,z3) V4=(x4,y4,z4) V3 E4 E1 V2 P1 E5 P2 E3 V1 E2 P1={E1,E5,E4} P2={E2,E3,E5} Informatica Grafica V4 95 Boundary Representation (11) Winged-Edge representation La struttura contiene 3 tabelle di dati Face Table Lista delle facce: ogni entry contiene un puntatore ad uno degli edge incidenti alla faccia Vertex Table Lista dei vertici: ogni entry contiene un puntatore ad uno degli edge incidente al vertice Edge Table Lista degli edge: ogni entry è composta da 8 valori: Start Vertex, End Vertex, Left Face, Right Face, Left Face Predecessor Edge, Left Face Successor Edge, Right Face Predecessor Edge, Right Face Successor Edge Informatica Grafica 96 Boundary Representation (12) Winged-Edge representation Esempio c 1 b 2 X a b e Y d Start End Left Face Right Face Left Face Pred Left Face Succ Right Face Pred Right Face Succ X Y 1 2 a c e d Informatica Grafica 97 Boundary Representation (13) Winged-Edge representation Esempio D 3 e a 1 2 c C f A 4 d b Vertex Edge Face Edge A a 1 a B b 2 c C d 3 a D a 4 b In totale è necessario memorizzare V+F+8E valori B Edge Start End L. Face R. Face L. Pred. Edge L. Succ. Edge R. Pred Edge R. Succ Edge a A D 3 1 f e c b b A B 1 4 a c d f c B D 1 2 b a e d d B C 2 4 c e f b e C D 2 3 d c a f f A C 4 3 b d c a Informatica Grafica 98 Boundary Representation (14) Winged-Edge representation Esempio di interrogazione Trovare tutti gli edge incidenti nel vertice X (enumerati in senso antiorario) Recuperare l’edge incidente dalla tabella Due casi da considerare X X next next current X è Start Edge: l’edge successivo è il Left Face Pred current X è End Edge: l’edge successivo è il Right Face Pred Informatica Grafica 99 Boundary Representation (15) Winged-Edge representation Esempio Trovare tutti gli edge incidenti nel vertice X (enumerati in senso antiorario) Algoritmo Given X Get incident edge e s:=e do output s if start vertex of s is X s:= predecessor of left face else s:= predecessor of right face end while s!=e Informatica Grafica 100 Boundary Representation (16) Winged-Edge representation Esempio di interrogazione Trovare tutti gli edge incidenti una faccia F (enumerati in senso antiorario) Recuperare l’edge incidente dalla tabella Due casi da considerare current current next next La faccia è una Right Face: l’edge successivo è il Right Face Succ La faccia è una Left Face : l’edge successivo è il Left Face Succ Informatica Grafica 101 Boundary Representation (17) Winged-Edge representation Esempio Trovare tutti gli edge incidenti una faccia F (enumerati in senso antiorario) Algoritmo Given face F Get incident edge e s:=e do output s if F is left face of s s:= successor of left face else s:= successor of right face end while s!=e Informatica Grafica 102 Superfici Curve 3D (1) Le superfici parametriche 3D sono estensioni delle curve parametriche 2D In 2D una curva parametrica cubica p è costruita da 4 punti di controllo Pi e da 4 funzioni di blend fi 4 p (t ) = ∑ f i (t ) Pi i =1 In 3D una superficie curva è costruita da 16 punti di controllo disposti a griglia 4 4 p (u , v) = ∑∑ f i (u ) f j (v) Pi , j i =1 j =1 Informatica Grafica 103 Superfici Curve 3D (2) Le curve parametriche 3D sono estensioni di quelle 2D 4 4 p (u , v) = ∑∑ f i (u ) f j (v) Pi , j i =1 j =1 Patch di Bezier Informatica Grafica 104 Superfici Curve 3D (3) Patch di Bezier Per la continuità C1 I 4 estremi sono interpolati Informatica Grafica 105 Surface Subdivision (1) Per rappresentare delle superfici curvilinee con poligoni si può ricorrere alla tecnica di surface subdivision Suddivisione di una curva a segmenti in modo tale da approssimare una curva smooth 2D 3D Informatica Grafica 106 Surface Subdivision (2) Si suddivide la mesh poligonale introducendo poligoni più piccoli in modo ricorsivo Se la regola di suddivisione è opportuna, si giunge and una superficie limite smooth Mesh Base Informatica Grafica 107 Surface Subdivision (3) Si suddivide la mesh poligonale introducendo poligoni più piccoli in modo ricorsivo Se la regola di suddivisione è opportuna, si giunge and una superficie limite smooth Superficie Limite Informatica Grafica 108 Surface Subdivision (4) Algoritmo di Chaikin (usato dal 1974 in CG) Segmenti iniziali approssimanti Informatica Grafica 109 Surface Subdivision (5) Algoritmo di Chaikin (usato dal 1974 in CG) Split degli edge (es. a metà) Informatica Grafica 110 Surface Subdivision (6) Algoritmo di Chaikin (usato dal 1974 in CG) I vecchi vertici sono spostati considerando i vertici dello step precedente e una regola (es. media) Informatica Grafica 111 Surface Subdivision (7) Algoritmo di Chaikin (usato dal 1974 in CG) Nuova curva approssimante Informatica Grafica 112 Surface Subdivision (8) Algoritmo di Chaikin (usato dal 1974 in CG) Split Informatica Grafica 113 Surface Subdivision (9) Algoritmo di Chaikin (usato dal 1974 in CG) Calcolo dei nuovi vertici Informatica Grafica 114 Surface Subdivision (10) Algoritmo di Chaikin (usato dal 1974 in CG) Nuova curva approssimante Informatica Grafica 115 Surface Subdivision (11) Algoritmo di Chaikin (usato dal 1974 in CG) Se ripetuto all’infinito, la curva approssimante converge ad una curva limite Informatica Grafica 116 Surface Subdivision (12) Gli schemi di suddivisione delle superfici 3D si differenziano per Tipo di mesh (triangolare o quadrata) Tipo di curva limite (interpolante o approssimante) Tipo di suddivisione (faccia o vertice) Face Split Triangular meshes Quad. meshes Approximating Loop Catmull-Clark Interpolating Butterfly Kobbelt Vertex Split Quad. meshes Approximating Doo-Sabin, Midedge Informatica Grafica 117 Surface Subdivision (13) Doo-Sabin Si considerano mesh quadrate Si considera il baricentro dei vertici delle facce Si considerano i punti mediani degli edge incidenti i vertici Il nuovo vertice è il baricentro delle posizioni dei punti trovati e il vertice stesso Informatica Grafica 118 Surface Subdivision (14) Doo-Sabin Ogni faccia ha una nuova faccia (F-face) con la stessa forma dell’originale Ogni edge ha associata una faccia (E-face) quadrangolare Ogni vertice ha associata una faccia (V-face) con un numero di edge pari al numero di edge incidenti il vertice originario Informatica Grafica 119 Surface Subdivision (15) Doo-Sabin Informatica Grafica 120 Surface Subdivision (16) Loop Ogni triangolo è suddiviso in 4 triangoli più piccoli suddividendo gli spigoli Anche i vecchi vertici sono modificati come media dei vertici degli edge incidenti Informatica Grafica 121 Surface Subdivision (17) Loop Informatica Grafica 122 Surface Subdivision (18) Catmull-Clark Usiamo mesh quadrate come esempio Si considera il baricentro (F-Point) dei vertici che definiscono la faccia Per ogni edge si definisce un punto (E-Point) come la media i due FPoint adiacenti all’edge e i punti dell’edge Informatica Grafica 123 Surface Subdivision (19) Catmull-Clark Informatica Grafica 124 Surface Subdivision (20) Catmull-Clark Oscar © 2005 nella categoria Technical Achievement Award Schema usato nel cortometraggio “Geri’s game” Volto Mani Tessuti © Pixar Geri’s Game 1997 Informatica Grafica 125 Surface Subdivision (21) Butterfly E’ uno schema ad interpolazione I vecchi vertici sono mantenuti Ne vengono creati di nuovi Informatica Grafica 126 Surface Subdivision (22) Butterfly Informatica Grafica 127 Surface Subdivision (23) Confronto Informatica Grafica 128 Surface Subdivision (24) Usi Loop e Catmull se non è necessaria interpolazione Loop migliore per mesh triangolari Catmull migliore per mesh quadrate Informatica Grafica 129 Surface Subdivision (25) La tecnica di surface subdivision è definita Tessellation Gli algoritmi di surface subdivision sono definiti Tessellator La Tassellation è stata introdotta di recente nelle pipeline di rendering di DirectX 11 e OpenGL 4.0 Usata in congiunzione con il Displacement Mapping Base Tesselation Informatica Grafica Tesselation + Displacement 130