Marching cubes
Da Wikipedia, l'enciclopedia libera.
Marching cubes (tradotto letteralmente: cubi marcianti) è un algoritmo di computer grafica, pubblicato al SIGGRAPH del 1987 da Lorensen e Cline per estrarre una mesh poligonale di una isosuperficie da un campo scalare 3D (talvolta chiamati voxel).
[modifica] Descrizione dell'agoritmo
L'algoritmo procede attraverso il campo scalare, prendendo otto locazioni neighbor per volta (formando così un cubo immaginario), determinando quindi il poligono o i poligoni necessari per rappresentare la parte della isosuperficie che passa attraverso questo cubo. I poligoni individuali sono quindi fusi nella superficie desiderata.
Questo viene fatto creando un indice in un array precalcolato di 256 configurazioni di poligoni possibili (28 = 256) all'interno del cubo, trattando ciascuno degli 8 valori scalari come un bit in un intero di 8-bit. Se il valore dello scalare è più alto dell'iso-valore (cioè è all'interno della superficie) allora il bit appropriato viene posto a uno, mentre se è più basso (esterno) è impostato a zero. Il valore finale dopo che tutti gli 8 scalari sono controllati, è l'indice all'array della configurazione del poligono.
Infine ciascun vertice di poligoni generati è messo nella posizione appropriata lungo il vertice del cubo interpolando linearmente i valori dei due scalari che sono connessi da quel vertice.
L'array precalcolato delle 256 configurazioni può essere ottenuto per riflessione e rotazioni simmetriche degli unici 15 casi.
Il gradiente del campo scalare ad ogni punto della griglia è anche il vettore normale di una ipotetica isosuperficie da quel punto. Quindi, dovremmo interpolare queste normali lungo i cardini di ciascun cubo per trovare le normali dei vertici generati che sono essenziali per ombreggiare la mesh risultante con qualche modello di illuminazione.
[modifica] Applicazioni
Le applicazioni di questo algoritmo sono principalmente nel campo della visualizzazione medica come la scansione di dati di immagini CT e MRI, ed effetti speciali per modellazione 3-D con quello che di solito viene indicato in metaball o altre metasurface.