La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Superfici nascoste Daniele Marini 2 Superfici nascoste in scene con poliedri Si abbiano oggetti composti da n poligoni Problema: per ogni pixel della.

Presentazioni simili


Presentazione sul tema: "1 Superfici nascoste Daniele Marini 2 Superfici nascoste in scene con poliedri Si abbiano oggetti composti da n poligoni Problema: per ogni pixel della."— Transcript della presentazione:

1

2 1 Superfici nascoste Daniele Marini

3 2 Superfici nascoste in scene con poliedri Si abbiano oggetti composti da n poligoni Problema: per ogni pixel della immagine, determina loggetto più vicino allosservatore (COP) calcola il valore del pixel Se p è il numero di pixel il problema è O(n·p) Questo approccio limita la precisione a livello di immagine ( image precision )

4 3 Un approccio di tipo object precision ha complessità dellordine O(n 2 ), richiede il confronto tra tutti gli oggetti per decidere chi è davanti e chi dietro rispetto allosservatore.

5 4 Ottimizzare i calcoli sfruttando la coerenza: Tra oggetti: oggetti disgiunti non richiedono confronto di vicinanza Tra facce: le proprietà di superficie variano lentamente e si può procedere in modo incrementale Tra spigoli: uno spigolo può decidere il cambio di visibilità quando delimita facce orientate opposte allosservatore o quando delimita facce che si intersecano Scan_line: tra due linee di scansione adiacenti le variazioni sono piccole (metodi incrementali) Darea : pixel vicini sono coperti dalla stessa faccia visibile Di profondità: la profondità dei punti di una stessa faccia cambia generalmente meno che tra punti di facce diverse (ancora metodi incrementali) Di frame: valida per sequenze di immagini (sfruttata dai metodi di compressione video)

6 5 Ogni metodo di rimozione di superfici nascoste richiede un Test di profondità Va eseguito in coordinate 3D prima della proiezione piana. Si può eseguire in coordinate normalizzate se si adotta la matrice canonica M persp Come decidere se un punto p 1 : (x 1,y 1,z 1 ) maschera un punto p 2 : (x 2,y 2,z 2 ) ??? occorre prima testare se (COP, p 1 e p 2 ) sono colineari, in tal caso si può confrontare direttamente z 1 con z 2.

7 6 Per decidere la colinearità: Se è una proiezione parallela condizione necessaria e sufficiente è: x 1 =x 2 e y 1 =y 2 Se è una proiezione prospettica invece bisogna fare 4 divisioni: x 1 /z 1 = x 2 /z 2 y 1 /z 1 = y 2 /z 2 Per evitare la divisione si esegue il test prima di deformare lo spazio in prospettico (proiezione parallela)

8 7 Per escludere a priori poligoni che non si possono eventualmente mascherare si esegue un test su bounding box, o test minimax, il cui costo computazionale è minore rispetto al confronto completo dei poligoni:

9 8 Rimozione facce autonascoste e spigoli autonascosti n DOP > 0 dove DOP = (0, 0, -1) Si riduce a un test sul segno di n z (ovvero la componente z della normale n alla faccia) Back face culling

10 9 Per ottimizzare il metodo si ricorre al partizionamento spaziale di due tipi: partizionamento regolare (griglie) partizionamento adattivo (BSPtree, quadtree, octree) gerarchie di oggetti

11 10 Z-Buffer

12 11 Il rendering: Z-buffer Lo Z-buffer è un dispositivo hardware (o simulato via software) che consente la rimozione delle linee e facce nascoste in tempo reale Z-bufferPer ogni punto immagine di ogni poligono lo Z-buffer mantiene linformazione sulla distanza dal punto di vista

13 12 Procedure z_buffer; var pz:integer; begin for y:=0 to YMAX do for x:=0 to XMAX do begin WritePixel(x,y,background_color); WriteZbuffer(x,y,0) end for each polygon do for each pixel in polygons projection do begin pz:=polygons z_value in (x,y) if pz >= ReadZbuffer(x,y) then begin WriteZbuffer(x,y,pz); WritePixel(x,y,polygons color at (x,y)) end end.

14 13 Esempio: calcolo di z 1 in un punto (x 1,y 1 ) di un triangolo lungo una scan-line sullo schermo. Lequazione del piano del triangolo è del tipo: ax + by + cz + d = 0 risolvo rispetto a z e ottengo: z 1 = (- d - ax 1 - by 1 )/c noto z 1 in (x 1,y 1 ) si calcola z 2 nel pixel successivo della scan- line (x 1 + x, y): z 2 = z 1 - x a/c ma a/c =cost, x=1 e il calcolo si riduce ad una sottrazione

15 14 Problemi dello z-buffer Facce parzialmente sovrapposte molto vicine possono creare dei problemi a causa dei metodi di calcolo numerico

16 15 Suddivisione ricorsiva: Warnock Suddivisione ricorsiva (quad- tree) dello spazio immagine, fino al livello del singolo pixel Criteri di colorazione: –Un poligono circonda un quadrante –Un poligono interseca un quadrante –Un poligono è contenuto in un quadrante –Poligono e quadrante sono disgiunti

17 16 Ray casting Adatto a CSG o superfici parametriche Dipende dal punto di vista È una sorta di campionamento spaziale della geometria

18 17 scegli COP e WINDOW for tutte le linee di scansione do for tutti i pixel nella linea do begin determina retta COP-pixel for ogni oggetto nella scena do if retta interseca oggetto e oggetto è il più vicino a COP then attiva pixel end

19 18 Per il calcolo della intersezione si rappresenta la retta in forma parametrica e se loggetto è rappresentato in forma analitica si calcola lintersezione, altrimenti si usano metodi numerici approssimati (es. algoritmo di Newton) Il calcolo delle intersezioni è molto costoso, si può ridurre con varie tecniche: bounding box o bounding volume, orientare la scena con la retta COP-pixel coincidente con z, organizzazione gerarchica dei volumi, partizionamento dello spazio (octree o BSPtree o uniforme) Ray casting

20 19 Ray casting CSG Testare le relazioni booleane:

21 20 Se la scena è composta di più oggetti con operatori booleani, si determina loggetto visibile applicando gli operatori booleani ai tratti di retta COP-pixel che intersecano gli oggetti Il metodo di ray casting risolve automaticamente anche il problema delle superfici nascoste. Ray casting CSG


Scaricare ppt "1 Superfici nascoste Daniele Marini 2 Superfici nascoste in scene con poliedri Si abbiano oggetti composti da n poligoni Problema: per ogni pixel della."

Presentazioni simili


Annunci Google