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 allinterno 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 dellintero 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 lintensit di ciascun
voxel in un valore di RGBA.
5. DVR: formulazione intuitiva del
problema
Lidea 竪 quella di
imitare la supervista
di Superman in
modo da poter avere
una visione semplice
e comprensibile
dellinterno 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
lilluminazione
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
Lintero dataset deve essere alinterno della
memoria della GPU
Risoluzione limitata a quella della GPU
(problematico per schede video datate)
13. Shear Warp
1. Transforma i dati del volume
allinterno 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 limmagine distorta
nellimmagine finale tramite il
warping.
15. Ray
Casting
Parte un raggio da ogni pixel del piano
immagine ed attraversa il volume
delloggetto 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 dellimmagine
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
alinterpolazione
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
lHTML5
http://demos.vicomtech.org/volren/