univ-lr

Visualisation Scientifique :

Marching Tétrahedra

accueil
Introduction Marching Square Marching Cube Marching Tetrahedra Exemples d'utilisation Codes sources Conclusion

Algorithme

Programmation

Resultat obtenu

 

Algorithme


L’algorithme du Marching Tetrahedra dérive de l’algorithme du Marching Cubes. Le principe est de diviser le cube élémentaire en six tétraèdres. Chaque tétraèdre se comporte alors comme un volume élémentaire, les propriétés et valeurs des sommets et des arêtes sont inchangées, et ce volume peut être intersecté par l’isosurface.
Comme pour le Marching Cube, il faut trouver les différentes configurations que peut prendre l’isosurface dans un élément de volume, selon la répartition des intersections de l’isosurface sur les arrêtes du volume.
Dans ce cas, le volume élémentaire est un tétraèdre, il y a donc 4 sommets, 6 arêtes et chaque sommet peut prendre 2 états. Cela donne ainsi 16 configurations possibles d’intersections entre le volume et l’isosurface. On peut se ramener facilement à huit configurations grâce aux cas symétriques.

Avec cette méthode le nombre de facettes triangulaires augmente considérablement. Pour le Marching Cubes il y a au maximum 5 facettes par cube élémentaire alors que pour le Marching Tetrahedra il y a au maximum 6*2 = 12 facettes par cube élémentaire.
De plus, cette méthode contrairement au Marching Cubes peut entraîner l’existence de bosses artificielles sur l’isosurface car l’interpolation est faite sur la diagonale d’une face et non sur la face elle même.

L’algorithme est plus simple que le précèdent car aucune table n’est à créer ou à consulter.
Chaque élément de volume du maillage est parcouru. Pour chacun de ces volumes et pour chaque tétraèdre, les valeurs des sommets sont comparées à l’isovaleur. En fonction des ces tests, un index binaire (4 bits) est créé (bit à 1 si la valeur du sommet est inférieure à l’isovaleur, 0 sinon).
Pour chaque arête intersectée, on calcule par interpolation linéaire, les coordonnées du point d’intersections et ensuite il suffit de dessiner ou de stocker la facette.
En résumé :
Pour chaque volume du maillage et pour chaque tétraèdre :


• Créer un index (4 bits) contenant l’état de chaque sommet.
• Trouver les arêtes intersectées
• Calculer les coordonnées d’intersection dans le tétraèdre.
• Dessiner les facettes.

Up

Programmation


Les structures utilisées sont les même que pour le Marching Cubes c’est a dire les structures Point3D,Grille,Triangle et nous avons rajouter la structure Tetrahedre qui contient 4 Poin3D et de leurs valeurs associées. Nous utilisons aussi la table des sommets suivante :

static int tableDesSommets [6][4]={
{0,2,3,7},
{0,6,1,4},
{5,6,1,4},
{0,2,6,7},
{0,4,6,7},
{0,6,1,2}};

Les fonctions utilisées :

• Interpolation Linéaire c’est la même fonction que pour Marching Cubes.

• IndexTetra , cette fonction retourne un index contenant l’état de chaque sommet du tetrahedre.

• Point d’Intersection , cette fonction calcule l’ensemble des points d’intersection selon l’IndexTetra calculé précédemment.

code


• DrawMarchingTetra. Cette fonction remplie et dessine un tetrahedre.

code


Comme dans Marching Cubes nous disposons de nombreuses procédures d’affichage.

Up

Resultat obtenu.

Comme dans Marching Cubes on utilise dans ce programme des fichiers Lumière et Calcul de Normal pour un meilleur rendu d’affichage.
Ci dessous 3 exemples d’une sphère par le Marching Tetra avec :


1. Taille de cellule élémentaire 3.3 , sur taille fenêtre de 10 > 114 facettes.
2. Taille de cellule élémentaire 1.6 , sur taille fenêtre de 10 > 248 facettes.
3. Taille de cellule élémentaire 0.3 , sur taille fenêtre de 10 > 19920 facettes.


En comparaison, le Marching Cubes faisait respectivement 44 , 248 , 6632 avec les mêmes tailles pour de cellule élémentaire et la fenêtre.

Nombre de facette : 19920
Taille de la cellule: 0.3
IsoValeur : 4
Nombre de facette : 720
Taille de la cellule: 1.6
IsoValeur : 4
Nombre de facette : 144
Taille de la cellule: 3.3
IsoValeur : 4
tetra tetra tetra
Up
Valid HTML 4.01!

Réalisé par : Stéphane Bazeille & Baptiste Mougel

Enseignant : Michel EBOUEYA Maitre de Conférences