2010-07-20 25 views
2

J'utilise maintenant l'algorithme des cubes marching pour un projet (rendu en temps réel de dents humaines à partir d'images CT). Voici le résultat de rendu:help: comment lisser un mesh généré par Marching Cubes en temps réel

http://www.freeimagehosting.net/uploads/4c2e2c94be.jpg

Vous pouvez voir que le maillage généré par MC est pas si lisse. Êtes-vous conscients de tout algorithme de lissage en temps réel qui peut être appliqué à la sortie du MC? Ou, y a-t-il une version améliorée de MC qui peut générer une surface lisse?

Toute aide serait fortement appréciée!

Veuillez noter que l'algorithme de lissage doit être rapide, car plus tard je dois utiliser MC à environ 30HZ, pour le recalcul de l'isosurface pendant la déformation interactive.

Kevin

+0

BTW, Kevin - publiez-vous les résultats de votre travail quelque part, éventuellement en open source? – Kos

+0

Pour une alternative possible, voir cette réponse (que je n'ai jamais eu à évaluer): http://stackoverflow.com/questions/3894283/adaptive-implicit-surface-polygonization/3943906#3943906 – ergosys

Répondre

1

Catmull-Clark subdivision est un algorithme agréable qui donne d'assez bons résultats pour le lissage. Vous pouvez l'appliquer plusieurs fois.

L'algorithme est assez simple à implémenter. En ce qui concerne le temps réel, je ne l'ai mis en œuvre que de manière statique, mais - AFAIK - il est tout à fait possible de l'implémenter comme un geometry shader.

Il y a aussi le smoothing algorithm utilisé dans Blender. Il n'est pas basé sur la subdivision (il ne modifie pas le nombre de vertex ou de faces); il ne fait que repositionner les sommets afin de réduire les angles entre les sommets voisins. Encore une fois, devrait être possible d'être mis en œuvre dans GLSL, clairement en temps réel.

Ces deux peuvent être utilisés ensemble.

0

Juste un chèque. Si vous avez des sommets dupliqués, les normales de recalcul ne seront pas lissées. Donc, assurez-vous de ne pas avoir de sommets dupliqués après l'algorithme du cube de marche. J'ai eu le même problème et puis j'ai supprimé les doublons maintenant j'ai un maillage lisse