La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Informatica grafica Solidi e Rendering1 Modellazione Solida Superfici in 2D 3D non definiscono sempre un volume. In molte applicazioni é necessario definire.

Presentazioni simili


Presentazione sul tema: "Informatica grafica Solidi e Rendering1 Modellazione Solida Superfici in 2D 3D non definiscono sempre un volume. In molte applicazioni é necessario definire."— Transcript della presentazione:

1 Informatica grafica Solidi e Rendering1 Modellazione Solida Superfici in 2D 3D non definiscono sempre un volume. In molte applicazioni é necessario definire solidi. Collezioni di linee, curve e superfici non necessaria- mente definiscono solidi. Esempio:

2 Informatica grafica Solidi e Rendering2 Proprietà Rappresentazione Dominio generale: permette la rappresentazione di molti solidi significativi. Completa (non ambigua): ad ogni rappresentazione corrisponde uno ed un solo solido. Univoca : ogni solido ha una sola rappresentazione. Accurata : permette di trovare rappresentazioni senza approssimare. Vieta rappresentazioni non valide. Preserva la chiusura: le trasformazioni non rendono la rappresentazione non valida. Ammette algoritmi efficienti.

3 Informatica grafica Solidi e Rendering3 Operazioni Booleane su Solidi Oggetti possono essere combinati (per formare oggetti più complessi) usando operatori booleani insiemistici. Il problema è che il risultato non é sempre un solido:

4 Informatica grafica Solidi e Rendering4 Operatori Booleani Regolarizzati * * danno sempre come risultato un solido A * B = closure (interior ( A B)) interior = solido - frontiera closure = solido + frontiera Esempio:

5 Informatica grafica Solidi e Rendering5 Esempio Intersezione : la frontiera comune ( C-D ; A-B) appartiene al solido se linterno dei 2 oggetti é dalla stessa parte (A-B). Non appartiene se sono dalla parte opposta (C-D)

6 Informatica grafica Solidi e Rendering6 Operatori Generali Operatori su interno e boundary Posso ora definire gli operatori regolarizzati: A B = (A i B i ) (A b B i ) (B b A i ) ( A b B b same)

7 Informatica grafica Solidi e Rendering7 Primitive Instancing Il sistema definisce insieme di primitive parametriche. Utile per definire oggetti complessi difficili da ottenere per combinazione di oggetti più semplici. Usato nel CAD. Esempio:

8 Informatica grafica Solidi e Rendering8 Sweep Representations Definiti da una figura 2D ed una traiettoria (generalmente lineare o circolare). General sweeps: il profilo si modifica lungo la traiettoria curvilinea. General Sweeps difficili da modellare. Difficile applicare operazioni booleane. Unione di 2 sweeps non é necessariamente una sweep (semplice).

9 Informatica grafica Solidi e Rendering9 Boundary Representations B-Reps Oggetto descritto in termini delle superfici esterne, vertici, lati e facce. Spesso le superfici esterne sono planari e poligonali (triangolari). Superfici curve sono difficili da trattare. Spesso si assume che le superfici di frontiera siano 2-manifold.

10 Informatica grafica Solidi e Rendering10 Poliedri Solido le cui superfici sono poligoni. I vertici appartengono ad un numero pari di poligoni (2 se 2-manifold). Poliedro semplice: non ha buchi. La B-REP di un poliedro semplice soddisfa la formula di Eulero: V-E+F=2 (Se ci sono buchi vale V-E+F-H=2(C-G) ) dove H :n. buchi C : n. compon. G : buchi che attraversano loggetto.

11 Informatica grafica Solidi e Rendering11 Ulteriori Vincoli Soddisfare la formula di Eulero non è sufficiente. Dobbiamo anche imporre : 1) ogni lato connette 2 vertici 2) ogni lato é condiviso da 2 facce 3) in ogni vertice entrano almeno 3 lati 4) le facce non devono tagliarsi Gli operatori di Eulero modificano un oggetto ma senza violare la formula. Operazioni che muovono vertici, lati e facce si chiamano tweak.

12 Informatica grafica Solidi e Rendering12 Operazioni Booleane Applicando operatori regolarizzati a B-Reps otteniamo B-Reps. Per calcolare lintersezione bisogna ispezionare tutti i poligoni dei 2 oggetti (A B) e per ogni poligono p di A verificare se: 1) p A B B i 2 ) p A B - B 3 ) p A B B B same oppure p A B B B diff per determinare quale è la situazione si usano tecniche di ray-tracing.

13 Informatica grafica Solidi e Rendering13 Spatial Partitioning Decomposizione di un solido in molti solidi più semplici non necessariamente uniformi tali che i solidi siano contigui, non intersecanti e di un tipo più semplice. Le rappresentazioni più usate sono: l Cell decomposition l Spatial-occupancy enumeration l Octrees l Binary space partitioning trees

14 Informatica grafica Solidi e Rendering14 Cell Decomposition Insieme di celle primitive (spesso parametriche e curve). Oggetti complessi definiti dallunione di celle primitive. Rappresentazione non-ambigua ma non univoca. Esempio:

15 Informatica grafica Solidi e Rendering15 Spatial-Occupancy Enumeration l Insieme di celle tutte uguali arrangiate in modo regolare. Le celle sono dette voxels. Tipicamente i voxels sono cubi. Rappresentazione non-ambigua e univoca. l Problema principale è lapprossimazione implicita nella rappresentazione. Altro svantaggio è lalto uso di memoria.

16 Informatica grafica Solidi e Rendering16 Octrees Octrees: variante gerarchica di spatial-occupancy. Sono lestensione 3D dei Quadtrees. Idea base: partizione binaria, ogni area può essere piena, vuota o parzialmente piena. La migliore rappresentazione è con alberi di arietà 4 (8 in 3D).

17 Informatica grafica Solidi e Rendering17 Quadtrees l Spazio diviso in quadranti. Esempio di struttura dati:

18 Informatica grafica Solidi e Rendering18 Octrees (2) Lo spazio viene diviso in 8 ottanti numerati da 0 a 7 In generale: il numero dei è nodi proporzionale alla superficie. Dipende solo dallestensione della frontiera, non dal solido.

19 Informatica grafica Solidi e Rendering19 Operazioni Booleane Su Quadtrees (Octrees) Danno sempre risultati rappresentabili. Molto efficienti e facili da realizzare.

20 Informatica grafica Solidi e Rendering20 Neighbor Finding Come trovare il vicino che sta sopra A ? Risalgo da A fino a trovare il primo antenato comune (1), poi scendo verso B (2): (1) risalgo fino al primo nodo a cui arrivo da sud (2) ridiscendo in modo speculare fino a trovare una foglia

21 Informatica grafica Solidi e Rendering21 Binary Space Partitioning Trees Dividono lo spazio in sottospazi, definendo un piano arbitrario Ad ogni nodo è associato un piano. Il figlio sinistro è dietro il piano, il destro davanti. Efficiente per decidere se un punto é interno o no ad un solido. Esempio in 2D :

22 Informatica grafica Solidi e Rendering22 Constructive Solid Geometry Loggetto è albero in cui: »Nodi : operatori (booleani, trasformazioni) »Foglie : primitive Se le primitive sono semplici si può realizzare efficientemente, più delle B-Reps.

23 Informatica grafica Solidi e Rendering23 CSG (2) In CSG le rappresentazioni non sono univoche. Questo può creare dei problemi se lutente può modificare interattivamente il disegno. Esempio:

24 Informatica grafica Solidi e Rendering24 Confronto Accuratezza NO spatial -partitioning B-Reps poliedriche SI CSG primitive complesse B-Reps non poliedriche primitive instancing Generalità NO primitive instancing sweeps Univocità SI octrees spatial occupancy NO altri

25 Informatica grafica Solidi e Rendering25 Confronto (2) Validazione difficile per B-Reps semplice per altri Chiusura NOsweeps, primitive instancing SI altri Compattezza/ Efficienza CSG compatto non molto efficiente octrees e spatial occupancy poco compatti ma efficienti

26 Informatica grafica Solidi e Rendering26 Migliorare Realismo Obiettivo : costruire immagini che diano molte informazioni sulloggetto modellato. Possibilità : creare immagini fotorealistiche, aggiungere effetti speciali. Immagini realistiche sono spesso indispensabili: Progettazione di macchine, aerei, Visualizzazione di processi fisici, chimici.... Videogiochi. Simulatori. Sistemi per linsegnamento.

27 Informatica grafica Solidi e Rendering27 Difficoltà Il mondo é molto complesso: creare un modello completamente accurato é difficile, visualizzarlo può essere molto costoso. Nostro goal: Limmagine deve contenere abbastanza informazioni da far comprendere le relazioni 3D tra gli oggetti. Se le relazioni sono semplici, bastano immagini non dettagliate. Esempio: quale casa é davanti?

28 Informatica grafica Solidi e Rendering28 Problema Le proiezioni in 2D di oggetti 3D perdono molte informazioni generando ambiguità. Come é orientato il cubo a? Per risolvere spesso sfruttiamo la nostra conoscenza delloggetto. A volte, però, non basta. E il sopra di una scala oppure il sotto ? ab c

29 Informatica grafica Solidi e Rendering29 Rendering di Linee Molte tecniche aiutano a migliorare limmagine: l Viste ortografiche multiple. l Proiezioni prospettiche. l Depth cueing. l Depth clipping. l Textures, colore ed eliminazione linee nascoste.

30 Informatica grafica Solidi e Rendering30 Viste Ortografiche Multiple Luso di viste ortografiche multiple è utile per oggetti semplici, ma non è facile da interpretare per oggetti molto complessi Esempio:color plate II. 24

31 Informatica grafica Solidi e Rendering31 Proiezioni Prospettiche Rendono meglio la distanza, ma non sempre sono non ambigue. A sinistra abbiamo un cubo o un tronco di piramide? La casa di sinistra é più piccola o più lontana. Trovare il punto di fuga di lati paralleli aiuta a eliminare le ambiguità.

32 Informatica grafica Solidi e Rendering32 Depth Cueing Oggetti più lontani vengono disegnati meno intensi. Normalmente è realizzato definendo un depth-cue color (background) poi lintensità del colore di un oggetto si ottiene interpolando il suo colore proprio con il depth-cue color. In PHIGS+ abbiamo:front, back depth-cue planes scale factor per ogni piano davanti front color, dietro back color, in mezzo interpola front_color_back. Molto efficace per disambiguare oggetti lontani. Poco utile per oggetti vicini.

33 Informatica grafica Solidi e Rendering33 Depth Clipping Definendo un back clipping plane gli oggetti lontani sono (parzialmente) tagliati. Può essere visto come una variante di depth-cueing. Alternativa : invece di tagliare, evidenziare le intersezioni con il back clipping plane. Effetto molto utile se il back clipping plane viene fatto muovere.

34 Informatica grafica Solidi e Rendering34 Altre Tecniche Texture: applicare sulle superfici disegni o griglie fitte. Può risolvere molte ambiguità, é utile soprattutto nelle proiezioni prospettiche. Colore: assegnare ad ogni oggetto un colore diverso. Il colore può essere proporzionale alla profondità. Eliminazione linee nascoste: rimozione delle linee coperte da superfici più vicine. Aumenta il realismo ma nasconde molte relazioni tra oggetti. Alternativa: mostrare le linee nascoste ma in modo diverso (tratteggiate).

35 Informatica grafica Solidi e Rendering35 Rendering di Immagini con Ombre Su terminali raster possiamo visualizzare immagini ombreggiate. Le tecniche usate sono: l Rimozione parti nascoste l Uso degli effetti di luce l Interpolated shading l Modellazione delle proprietà dei materiali l Uso di textures l Ombre l Trasparenza e riflessione l Effetti fotografici NOTA : tecniche semplici possono però dare problemi di aliasing.

36 Informatica grafica Solidi e Rendering36 Rimozione Superfici ed Effetti di Luce Rimozione di superfici nascoste: con superfici opache la rimozione é indispensabile per disambiguare limmagine. Illuminazione : per evitare di avere oggetti piatti si definiscono sorgenti di luce. Tipi di luce: » Luce ambiente: proviene da tutte le direzioni e produce la stessa illuminazione su tutti gli oggetti. » Sorgente uniforme: approssima la luce di una lampadina. » Sorgente direzionale: approssima la luce solare, è una sorgenteposta allinfinito (raggi paralleli). Effetti di Luce: superfici perpendicolari più intense, quelle più oblique meno illuminate.

37 Informatica grafica Solidi e Rendering37 Altre Tecniche Ombreggiatura con interpolazione: lombreggiatura é calcolata ad ogni vertice di ogni oggetto, migliora laspetto di superfici curve ( Gouraud ) approssimate con poliedri. Proprietà dei materiali: tenere in conto come riflettono la luce ( Phong ). Modelli avanzati per la luce: usano modelli più rispondenti alle proprietà fisiche della luce. Spesso molto difficili da implementare efficientemente. Texture, Ombre, Trasparenza e Riflessione, Uso della Profondità di Campo: permettono di creare immagini molto realistiche

38 Informatica grafica Solidi e Rendering38 Animazione Il realismo di unanimazione è molto diverso da quello di unimmagine: l Minore importanza della fedeltà del modello. l Cura al realismo dl movimento. l Riduzione del temporal-aliasing (effetto ruote di una macchina).

39 Informatica grafica Solidi e Rendering39 Visione Stereo Generare immagini diverse per i 2 occhi migliora molto leffetto di profondità. Però richiede dei visori speciali (es. occhiali).

40 Informatica grafica Solidi e Rendering40 Eliminazione Superfici Nascoste Problema fondamentale: efficienza. In molti computers loperazione viene fatta in hardware. Ci sono due approcci fondamentali: image precision riferimento è limmagine sullo schermo. object precision riferimento sono oggetti nel loro mondo. Pseudocodice image precision: for (ogni pixel dellimmagine) { determina loggetto più vicino allosservatore che è visibile attraverso il pixel; disegna il pixel nel colore opportuno; }

41 Informatica grafica Solidi e Rendering41 Object Precision Pseudocodice object-precision for (ogni oggetto del mondo) { determina le parti delloggetto non coperte da altri oggetti; disegna queste parti nel colore opportuno; } Se n= numero oggetti e P= numero pixels costo image precision O(n p) costo object precisionO(n 2 )

42 Informatica grafica Solidi e Rendering42 Tecniche Generali Problema: algoritmi di image-precision e di object precision sono molto inefficienti. Soluzione: sfruttare la coerenza delle figure per semplificare (evitare) i conti. Ci sono molti tipi di coerenze che si possono sfruttare per calcolare i valori incrementalmente e non sempre da zero.

43 Informatica grafica Solidi e Rendering43 Coerenza Oggetto : separazione tra oggetti sep. componenti (facce, lati). Faccia: proprietà cambiano con regolarità. Lato : la visibilità cambia solo se ci sono intersezioni. Lato implicato : se 2 facce si intersecano la linea di intersezione si calcola da solo 2 punti. Scan line: oggetti incontrati variano poco da una linea alla successiva. Area : un gruppo di pixels è spesso coperto dalla stessa area. Profondità: parti adiacenti cambiano poco in profondità. Frame: 2 frames consecutivi sono molto simili.

44 Informatica grafica Solidi e Rendering44 Trasformazioni Prospettiche La determinazione delle superfici visibili va fatta in 3D. Operazione fondamentale è verificare se un punto copre un altro. Accade solo se sono allineati e la verifica richiede 4 divisioni: X 1 /Z 1 =X 2 /Z 2 Y 1 /Z 1 =Y 2 /Z 2 Più efficiente se proiezioni parallele: X 1 =X 2 Y 1 =Y 2

45 Informatica grafica Solidi e Rendering45 Trasformazioni Prospettiche Soluzione : ridurre la piramide canonica nel cubo canonico. La trasformazione preserva il risultato. La matrice di conversione M vale:

46 Informatica grafica Solidi e Rendering46 Esempio Trasformando un cubo si ottiene:

47 Informatica grafica Solidi e Rendering47 Estensioni e Volumi Delimitanti Conoscere l estensione di oggetti e le loro proiezioni evita molti conti inutili. Assumendo di avere già normalizzato, se lestensione delle proiezioni non si sovrappone è inutile vedere se gli oggetti si coprono. Solo se l estensione si sovrappone potrebbero coprirsi.

48 Informatica grafica Solidi e Rendering48 Bounding Box e Volume Ad ogni oggetto possiamo associare: Bounding volume (3D) dipende solo dalloggetto. Bounding box (2D) dipende dalla proiezione. Per determinare la sovrapposizione (non copertura) spesso basta lestensione 1D. Extents e Bounding volumes sono anche usati per determinare se un raggio interseca l oggetto.

49 Informatica grafica Solidi e Rendering49 Back-Face Culling Nei poliedri é utile identificare le facce nascoste allosservatore. In coordinate normalizzate: back_face normale uscente ha Z<Ø Le backfaces si possono scartare, se il poliedro non é clippato. Eliminando le backfaces si riducono di circa la metà i poligoni da considerare.

50 Informatica grafica Solidi e Rendering50 Partizionamento Spaziale Idea : dividere lo spazio ed assegnare ad ogni sottospazio una parte degli oggetti. Vantaggi : confronti tra oggetti molto ridotti. Problema : non sempre possibile dividere bene lo spazio. Per ovviare a questo prolema si usano tecniche di partizionamento adattivo. Vedremo poi degli esempi.

51 Informatica grafica Solidi e Rendering51 Gerarchie Strutture gerarchiche spesso permettono di capire velocemente se 2 oggetti non si coprono (intersecano). Esempio:

52 Informatica grafica Solidi e Rendering52 Z-Buffer Algorithm E un algoritmo di image-precision. Di facile implementazione hardware/software. Richiede in memoria uno Z-buffer oltre al frame buffer. Non è necessario ordinamento tra poligoni. Non cé alcun confronto tra oggetti. La scan conversion può essere effettuata una riga per volta (nessuna interazione diretta).

53 Informatica grafica Solidi e Rendering53 PseudoCodice void zBuffer() {int pz; /*Polygon's z at pixel coords (x, y)*/ for ( y = 0; y < YMAX; y++ ) { for ( x = 0; x < XMAX; x++ ) { WritePixel(x, y, BACKGROUND_VALUE); WriteZ(x, y, 0);}} for ( each polygon ) { for ( each pixel in polygon's projection ) { pz = polygon's z-value at pixel coords (x, y); if ( pz >= ReadZ(x, y)) { WriteZ(x, y, pz); WritePixel(x, y, polygon's color at pixel coords (x, y)); }}} }

54 Informatica grafica Solidi e Rendering54 Esempio Z-Buffer Costruzione incrementale di 1 poligono per volta. Problema : calcolo delle scan lines può essere costoso. Idea: sfruttare depth coherence per semplificare. Poligoni sono planari Ax+By+Cz+D=Ø quindi z=[-D-Ax-By]/C ma incrementalmente: z 1 =[-D-Ax 1 -By 1 ]/C z 2 =[-D-A(x 1 + x)-By 1 ]/ C=z 1 -[A/C] x

55 Informatica grafica Solidi e Rendering55 Alternativa Il valore di z su una scan line viene calcolato per interpolazione. Esempio:

56 Informatica grafica Solidi e Rendering56 Vantaggi e Svantaggi Vantaggi Molto generale non richiede che gli oggetti siano poliedrici. Facilmente implementabile. E incrementale, salvando lo z-buffer é facile tenere conto di nuovi oggetti. Varianti dello z-buffer si applicano anche a solidi CSG. Svantaggi Richiede molta memoria(~4 byte per pixel). Soffre di problemi di aliasing, a volte ci sono imprecisioni ai bordi dei poliedri.

57 Informatica grafica Solidi e Rendering57 Scan-Line Algorithms Generalizzazione a 3D, si applica ad un insieme di poligoni contemporaneamente. Si mantengono una Edge Table come in 2D ed una Polygon Table con: 1) Equazione del piano 2) Informazioni su colore ed illuminazione 3) Flag booleano (In / Out) La Active Edges Table contiene le stesse informazioni del caso 2D. Quando si attraversa un lato il flag del suo poligono viene flippato. Se il punto appartiene a più poligoni bisogna calcolare le z.

58 Informatica grafica Solidi e Rendering58 Esempio

59 Informatica grafica Solidi e Rendering59 Casi Particolari Caso di prima visto in 3D. Se i poligoni non si tagliano, quando incontra in uscita ABC non cé bisogno di confrontare z. Per evitare le intersezioni conviene splittare i poligoni.

60 Informatica grafica Solidi e Rendering60 Generalizzazione Gli algoritmi di Z-buffer e di scan-line possono essere generalizzati a superfici più complesse: add surfaces to surface table; initialize active-surface table; for( each scan line ) { update active-surface table; for( each pixel on scan line ) { determine surfaces in active-surface table that project to pixel; find closest such surface; determine closest surface's shade at pixel;}

61 Informatica grafica Solidi e Rendering61 Ray Tracing Idea: tracciare un raggio dal centro attraverso ogni pixel e calcolare cosa interseca prima. Facile da implementare.

62 Informatica grafica Solidi e Rendering62 Pseudocodice select center of projection and window on viewplane; for( each scan line in image ) { for( each pixel in scan line ) { determine ray from center of projection through pixel; for( each object in scene ) { if(object is intersected and is closest considered thus far) record intersection and object name; } set pixel's color to that at closest object intersection; } }

63 Informatica grafica Solidi e Rendering63 Calcolo Intersezioini Centro (X ø,Y ø,Z ø ) punto di vista Pixel (X 1,Y 1,Z 1 ) centro del pixel retta : X=X ø +t ²X²X=X 1 -X ø Y=Y ø +t ²Y²Y=Y 1 -Y ø Z=Z ø +t ²Z²Z=Z 1 -Z ø Esempio con la sfera centro (a,b,c)raggio r (X-a) 2 +(Y-b) 2 +(Z-c) 2 = r 2 Sostituendo otteniamo: (²X 2 +²Y 2 +²Z 2 )t 2 +[²X(X ø -a)+²Y(Y ø -b)+²Z(Z ø -c)]2t+(X ø -a) 2 + +(Y ø -b) 2 +(Z ø -c) 2 -r 2 =ø Calcolata l intersezione X Y Z calcoliamo la tangente. Serve per il colore. Per la sfera abbiamo: ( [X-a] /r [Y-b] /r [Z-c] /r )

64 Informatica grafica Solidi e Rendering64 Intersezioni con Poligoni Fatta in 2 passi : 1) intersezione raggio e piano poligono. 2) verifica che sia interna al poligono. Piano : Ax+By+Cz+D=0 Sostituendo: t=-[Ax ø +By ø +Cz ø +D]/[A²x+B²y+C²z] test contenimento fatto in 2D : proiezione ortografica + test

65 Informatica grafica Solidi e Rendering65 Efficienza di Ray Tracing Schermo : 1024x1024 pixels Oggetti : intersezioni da calcolare Soluzioni 1) trovare formule più semplici per calcolare intersezioni. 2) usare bounding volumes semplici da testare come sfere o insiemi di piani paralleli (slabs). 3) usare gerarchie. Quelle definite nella modellazione oppure definite apposta per semplificare il rendering. 4) partizionamento spaziale: controlla lintersezione solo con oggetti nei volumi attraversati dal raggio.

66 Informatica grafica Solidi e Rendering66 Partizionamento Spaziale Metodo semplice : dividere lo spazio in parti uguali. Migliora l efficenza. Metodi più complessi usano un partiziona- mento adattivo.

67 Informatica grafica Solidi e Rendering67 Liste di Priorità Idea : trovare un ordinamento di visibilità degli oggetti e poi disegnarli in ordine ( Object precision). Ci sono molte varianti. Problema : non sempre possibile senza modificare figura Esempio: sino

68 Informatica grafica Solidi e Rendering68 Depth Sort Algoritmo base: ordinare i poligoni rispetto alla profondità. Passi fondamentali: 1) Ordinare per z (minima) crescente. 2) Risolvere le ambiguità (eventualmente splittando). 3) Fare la scan-conversion (back to front). Per risolvere il punto 2 verifichiamo se: Le estensioni su x (y o sul piano xy) si sovrappongono, oppure se esiste un piano (di uno dei loro poligoni) che li separa. Se ancora non riusciamo a risolvere le ambiguità dobbiamo tagliare un poligono con il piano di un altro.

69 Informatica grafica Solidi e Rendering69 Esempio Nel caso a sinistra P sta tutto da na parte rispetto a Q. Nel caso a destra Q sta tutto da una parte rispetto a P.

70 Informatica grafica Solidi e Rendering70 Binary Space-Partitioning Trees Calcola informazioni di visibilità indipendenti dal punto di vista. Utile se dobbiamo fare più proiezioni. Idea: selezionare un poligono e dividere tutti gli altri in due gruppi: Front e Back, in funzione della loro posizione (eventualmente splittando). La costruzione poi continua ricorsivamente per entrambi i gruppi. Conoscendo il viewpoint posso facilmente visitare il BSP in ordine back to front. Richiede un preprocessing costoso ma riutilizzabile per molte proiezioni.

71 Informatica grafica Solidi e Rendering71 Area-Subdivision Algorithms Idea :suddividere il piano di proiezione fino a che é immediato decidere chi è visibile in ogni area Algoritmo di Warnock divide larea in 4 parti uguali ed ad ogni passo la relazione tra immagine e poligono può essere:

72 Informatica grafica Solidi e Rendering72 4 Casi Semplici 1) nessun poligono interseca larea (background). 2) un solo poligono interseca o é contenuto (background+scan-conversion poligono). 3) un solo poligono contiene larea (colore poligono). 4) un poligono contiene ed è davanti agli altri che intersecano o sono contenuti o contengono (colore poligono). Il caso 4 può essere verificato confrontando le z nei quattro estremi. Se non siamo in questi casi continuiamo a dividere.

73 Informatica grafica Solidi e Rendering73 Esempi

74 Informatica grafica Solidi e Rendering74 Algoritmi per Superfici Curve Solo z-buffer per ora tratta le superfici curve. Gli altri richiedono di approssimare le superfici con facce poligonali. Un altro algoritmo per superfici bicubiche è quello di Catmull (generalizzazione di Warnock). Idea : Suddividere i patches in subpatches fino a che siamo in una situazione ovvia.

75 Informatica grafica Solidi e Rendering75 Scan-Line di Superfici Curve for( each patch ) { push patch onto stack; while( stack not empty ) { pop patch from stack; if( patch covers <= 1 pixel ) { if( patch's pixel closer in z ) determine shade and draw; } else {subdivide patch into 4 subpatches; push subpatches onto stack; } }}

76 Informatica grafica Solidi e Rendering76 Confronto Metodi In generale : algoritmi di object-precision vanno bene con scene semplici mentre quelli in image-precision dipendono poco dal numero di oggetti. Non esiste un metodo ottimo, dipende dallapplicazione. Il vantaggio di Z-buffer é la sua semplicità e generalità. Il Raytracing viene usato solo se si vogliono ottenere immagini di alta qualità.


Scaricare ppt "Informatica grafica Solidi e Rendering1 Modellazione Solida Superfici in 2D 3D non definiscono sempre un volume. In molte applicazioni é necessario definire."

Presentazioni simili


Annunci Google