【发布时间】:2013-07-27 14:44:48
【问题描述】:
我在 iso 平面上运行 marching squares(相对于行进立方体)算法,然后将数据转换为三角形网格。
这可行,但会创建非常复杂的网格数据。我想将其简化为所需的最小三角形,如下图所示:
我尝试过围绕轮廓循环(点 -> 段 -> 点 -> ...),但如果一个点的连接段超过 2 个,则轮廓可能会倒转。
理想情况下,解决方案应该相当快,以便可以在运行时完成。我使用的语言是 C#,但可能可以从大多数其他类似 C 的语言中移植过来。
【问题讨论】:
-
所以你已经运行了你链接的 wiki 页面上描述的等值线算法,它为你提供了一个网格,你想把它转换成最小的三角形表示吗?
-
您尝试翻译的数据是如何表示的?
-
为什么必须是“最小”三角形?你不能只把内部的正方形切出来吗?
-
@JSQuareD,正确我有一个 IsoCells 的二维数组,这会导致许多冗余多边形(如提供的图像中所示)。所以目标是尽可能减少多边形的数量来优化网格。
-
@NicolBolas 它不一定是完美的最小值,但理想情况下非常简化。我将生成的三角剖分用于刚体碰撞网格,用复杂的网格实例化非常慢。
标签: c# opengl mesh triangulation marching-cubes