【发布时间】:2017-12-15 20:56:16
【问题描述】:
我有这个对象/点云,用 pyopengl 和 pygame 渲染。
我的对象是点坐标的 numpy 数组。我希望为这个对象生成一个 3d 三角形网格,如果你能减少三角形的数量,那就太好了。
我已经尝试过 scipy.spatial.Delaunay,但它不会为 3d 对象生成三角形。
【问题讨论】:
标签: python 3d mesh triangulation pyopengl
我有这个对象/点云,用 pyopengl 和 pygame 渲染。
我的对象是点坐标的 numpy 数组。我希望为这个对象生成一个 3d 三角形网格,如果你能减少三角形的数量,那就太好了。
我已经尝试过 scipy.spatial.Delaunay,但它不会为 3d 对象生成三角形。
【问题讨论】:
标签: python 3d mesh triangulation pyopengl
双轮廓在这里可能会很好用,它是一种将体素化数据转化为网格的算法。我不太明白在这里概述它,但基本上你会把你的点数组放入一个 3D 网格数组中,如果该网格单元包含一个点,它被设置为等于 1(满),如果它不是设置为 0(空),然后你会在这个网格上运行 DC 算法,它会输出一个网格。这个算法的好处是它支持内腔和凹形。
以下是我发现的一些链接,如果您决定使用 DC,可能会对您有所帮助:
Basic Dual Contouring Theory http://ngildea.blogspot.com/2014/11/implementing-dual-contouring.html
这是我在 Unity3D 中实现此算法时使用的源代码的 github 存储库: https://github.com/nickgildea/DualContouringSample
【讨论】: