如何实时平滑由Marching Cubes生成的网格?

3
我现在正在使用Marching Cubes算法进行项目开发(从CT图像实时渲染人类牙齿)。这是渲染结果:http://www.freeimagehosting.net/uploads/4c2e2c94be.jpg。您可以看到,由MC生成的网格不太平滑。您是否知道任何可以应用于MC输出的实时平滑算法?或者,是否有任何改进版本的MC可以生成光滑表面?请注意,平滑算法需要快速,因为后来我必须以约30HZ的速度使用MC,在交互变形期间重新计算等值面。

顺便问一下,Kevin - 你会把你的工作成果发布到某个地方吗?可能是开源的吗? - Kos
有可能的替代方案请参考这个答案(我从未评估过):https://dev59.com/E1HTa4cB1Zd3GeqPOAYY#3943906 - ergosys
2个回答

2
Catmull-Clark subdivision是一种很好的算法,可以得到相当不错的平滑结果。您可以多次应用它。
该算法实现起来相当简单。
关于它是否实时,到目前为止,我只实现了静态实现,但据我所知,完全可以将其实现为几何着色器。
还有在Blender中使用的平滑算法。它不基于细分(不修改顶点或面数);它只是重新定位顶点以减少相邻顶点之间的角度。同样,应该可以在GLSL中实时明显地实现。
这两个可以一起使用。

0

只是一个检查。如果您有重复的顶点,则重新计算法线将不会产生平滑效果。因此,在执行Marching Cube算法后,请确保没有重复的顶点。我曾经遇到过同样的问题,然后我删除了重复的顶点,现在我的网格很平滑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接