Voila un petit moment que je voulais implémenter ce bel algo qu´est le marching cube.
http://perso.numericable..fr/~fvirtman/progs/mcubes.zip
Le principe est simple : vous définissez mathématiquement l´espace par des volumes de bases.
Par exemple, vous dites que vous voulez une sphere de tel rayon a un endroit de l´espace.
Vous dites que vous voulez ajouter un Cone.
Vous dites enfin que vous voulez retrancher un cylindre (c´est a dire que vous posez dans l´esapce un cylindre invisible qui enleve la matiere)
Ainsi, par exemple, un cube troué, c´est un cube moins un cylindre.
Et pour un point x,y,z donné, vous savez si vous etes dans la matiere ou non.
Cela est sommairement l´arbre CSG.
Le marching cube est l´algo qui, a partir d´une fonction qui dit, a x,y,z donné, si on est dans la matiere ou non, vous pond une triangulation.
La finesse de la triangulation peut etre réglée.
Voici une petite implémentation de cela (une premiere version), regardez juste le main pour comprendre comment ça fonctionne ! et les autres fichiers pour voir le détail...