2. Volume Rendering
• Il Volume Rendering è un insieme di tecniche
della computer grafica atte a mostrare una
proiezione 2D di un dataset 3D.
• Un tipico esempio di 3D Dataset è un insieme
di immagini, prese da una risonanza
magnetica.
• Il termine voxel denota un singolo elemento
del volume, come un pixel per un immagine in
2D
• Indirect Volume Rendering
• Direct Volume Rendering
3. Indirect Volume
Rendering
Adatta primitive geometriche all’interno dei dati,
poi effettua il render:
• Marching Cubes
• Surface Tracking
• Fourier Trasform Rendering
Metodo veloce ma di scarsa qualità
Non è conveniente rappresentare fuoco o
nuvole
4. Direct Volume
Rendering
•
Realizza un proiezione dell’intero volume dei
dati, assegnando trasparenza e colore a
ciascun voxel (tutti)
•
Il colore e la trasparenza a ciascun voxel si
assegna mediante una funzione di
trasferimento che mappa l’intensità di ciascun
voxel in un valore di RGBA.
5. DVR: formulazione intuitiva del
problema
L’idea è quella di
imitare la supervista
di Superman in
modo da poter avere
una visione semplice
e comprensibile
dell’interno di un
volume
7. Funzione di
Trasferimento
Assegna ad ogni
voxel dei valori RGB
ed un valore Alpha
(trasparenza)
Si calcola poi il
gradiente/normale
per applicare
l’illuminazione
9. Splatting
Tecnica molto semplice, veloce ma
poco accurata. Ogni Voxel del volume
è “splatted like a snow ball”
(Lee Westover), lanciato come una
palla di neve, sul piano immagine,
ottenendo dei dischi
Quando due dischi si intersecano i loro
colori sono interpolati
10. Texture Mapping
Descritta da Bill Hibbard e Dave
Santek
Ottimizzato per schede grafiche 3D
Le singole Slice sono allineate con il
volume e renderizzate ad una
angolazione scelta dal visualizzatore
Interpolazione dei valori tra slices
causa overhead
11. 2D Texture Mapping
Slices parallele agli assi
Seleziona il miglior allineamento
Può produrre artefatti
12. 3D Texture Mapping
Usa un reticolo di slices
Costo computazionale alto, ma ottimizzabile via
GPU
L’intero dataset deve essere al’interno della
memoria della GPU
Risoluzione limitata a quella della GPU
(problematico per schede video datate)
13. Shear Warp
1. Transforma i dati del volume
all’interno dello spazio tagliato
ottenuto traslando ogni fetta del
volume. Le immagini in 2D che
compongono il volume vengono
scalate per poter effettuare le
trasformazioni prospettiche.
2. Unisce le slices in ordine front-to-
back. Da questo step si ottiene un
immagine 2D intermedia in quanto
è distorta.
3. Transforma l’immagine distorta
nell’immagine finale tramite il
warping.
15. Ray
Casting
Parte un raggio da ogni pixel del piano
immagine ed attraversa il volume
dell’oggetto da renderizzare.
Samplin
g
Esegue un campionamento dei valori
ad ogni intervallo del raggio che
attraverso il volume.
16. Shading
Per ogni valore campionato viene
calcolato il colore e la trasparenza ed il
gradiente in base anche alla posizione
della camera e della luce.
Compositin
g
Dopo aver illuminato tutti
i punti campione, essi
vengono composti per
avere il colore finale del
pixel
17. Volume Ray Casting :
Miglioramenti
•
Parallelismo via GPU
-Problema della gestione della memoria
•
Trovare la fine del raggio
-Variazione di colore molto alta
•
DownScaling dell’immagine
•
Saltare le zone trasparenti /
invisibili
18. Mipmapping
Conservare
varie copie del
volume con
risoluzione
diversa.
Grande spreco
di memoria
19. DVR: Artefatti
Una causa di artefatti
è il basso sampling
rate
Aumentare il
sampling rate,
sampling rate
adattivo
Utilizzo di un filtro bi-
cubico
21. DVR: Artefatti 2
Artefatti Shading:
Dovuti alla pre-computazione del gradiente o
al’interpolazione
Soluzione: Calcolare il gradiente al momento,
costo del calcolo maggiore
22. SPVOLREN
A simple and flexible Volume render
Framework for Graphics-hardware-based
Raycasting
Applicativo scritto in C++ Permette di caricare il
con OpenGL Shading modello 3D e di
Languages visualizzarlo con I diversi
settaggi di
rappresentazione delle
superfici
23. Peter Triers Volume Ray Casting in
CG
•
Applicativo scritto in C
•
Costruito come esempio, non da la possibilità di
caricare dati diversi da quelli di default
•
Possibile modificare il valore di Sampling,
aumentando o diminuendo lo STEPSIZE di
campionamento
29. Il Raycasting nei
Videogiochi
•
Il ray casting è parte del
Volume Ray Casting.
•
Usato anche nei giochi per
rappresentazione di fumo,
esplosioni e nuvole.
•
Usato per la prima volta su
wolfstein 3D idSoftware
30. Programmare la GPU
Vertex Shader e
Fragment shader
sono
programmabili a
basso livello con
codice assembler
ad alto livello con
codice:
•GLSL (OpenGL)
•CG (NVidia)
•HLSL (Direct X)
31. DVR: SVILUPPI FUTURI
•
È possibile eseguire il Direct Volume Rendering
anche via Browser Web tramite le API WebGL e
l‘HTML5
•
http://demos.vicomtech.org/volren/