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

时间:2010-07-20 09:57:23

标签: mesh smoothing marching-cubes

我现在正在使用行进立方体算法进行项目(从CT图像实时渲染人类牙齿)。这是渲染结果:

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

您可以看到MC生成的网格不是那么平滑。你们是否知道任何可以应用于MC输出的实时平滑算法?或者,是否有任何可以生成光滑表面的MC改进版本?

请注意,平滑算法需要很快,因为后来我必须在大约30HZ使用MC,以便在交互变形期间重新计算等值面。

2 个答案:

答案 0 :(得分:2)

Catmull-Clark subdivision是一个很好的算法,可以为平滑提供相当好的结果。你可以多次申请。

该算法实现起来非常简单。

关于它是实时的,到目前为止我只是静态地实现它,但是 - AFAIK - 绝对可以将它作为几何着色器实现。

还有Blender中使用的smoothing algorithm。它不是基于细分(它不会修改顶点或面数);它只是重新定位顶点,以减少相邻顶点之间的角度。同样,应该可以在GLSL中实现,显然是实时的。

这两者可以一起使用。

答案 1 :(得分:0)

只是一张支票。如果您有顶点重复重新计算法线将不会有平滑效果。因此,确保在行进立方体算法后没有重复的顶点。我有同样的问题然后我删除了重复项现在我有一个光滑的网格