Bonjour à tous,
Je bosse toujours sur mon modeste moteur 3D, et je suis en train de plancher sur l'implementation des metaballs.
En gros, je suis la methode de base qui consiste a mettre en place un champ scalaire, a calculer en chaque point de ce champ la contribution de chaque metaball, et a tracer une isosurface sur une valeur seuil a choisir.
Pour generer l'isosurface, il semble que la solution standard soit l'utilisation de l'algorithme dit de "Marching Cubes" dont j'ai trouvé un tuto/code source sympa au lien suivant:
http://local.wasp.uwa.edu.au/~pbourk...ry/polygonise/
Cependant, il y a deux points que je ne coprends pas dans cette implementation:
a la ligne "
if (grid.val[0] < isolevel) cubeindex |= 1;
"
(et lignes suivantes)
A quoi correspond le symbole "|="? Si j'ai bien compris, il s'agit d'attribuer un 1 au bit de poids faible si la valeur seuil est dépassée, et 0 sinon, mais pourquoi c'est écrit comme ca? (moi j'aurais betement mis +=)
deuxieme point:
un peu plus loin, il est ecrit:
if (edgeTable[cubeindex] & 1)
a quoi correspond le symbole & dans ce contexte?
merci pour votre aide!
a bientot
Z.
Partager