【问题标题】:How to smooth a mesh generated by Marching Cubes in real-time?如何实时平滑由 Marching Cubes 生成的网格?
【发布时间】:2010-07-20 09:57:22
【问题描述】:

我现在在一个项目中使用 Marching cubes 算法(从 CT 图像实时渲染人类牙齿)。这是渲染结果:

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

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

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

【问题讨论】:

  • 顺便说一句,Kevin - 您是否在某处发布您的工作成果,可能是开源的?
  • 对于一个可能的替代方案,请参阅此答案(我从未评估过):stackoverflow.com/questions/3894283/…

标签: mesh smoothing marching-cubes


【解决方案1】:

Catmull-Clark subdivision 是一个很好的算法,它为平滑提供了很好的结果。您可以多次应用它。

算法实现起来相当简单。

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

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

这两个可以一起使用。

【讨论】:

    【解决方案2】:

    只是一张支票。如果您有重复的顶点,则重新计算法线将不会产生平滑效果。所以,在行进立方体算法之后,一定不要有重复的顶点。我有同样的问题,然后我删除了重复的,现在我有一个平滑的网格

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多