从点云绘制 3d 三角形网格
Plotting a 3d triangular mesh from point cloud
我有这个 object/point 云,用 pyopengl 和 pygame 渲染。
我的对象是点坐标的numpy数组。我想生成这个物体的3d三角形网格,如果你能减少三角形的数量就好了。
我试过 scipy.spatial.Delaunay 但它不会为 3d 对象生成三角形。
Dual Contouring 在这里可能效果很好,它是一种采用体素化数据并将其转化为网格的算法。我不太理解这里的概述,但基本上你会把你的点数组放在一个 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
我有这个 object/point 云,用 pyopengl 和 pygame 渲染。
我的对象是点坐标的numpy数组。我想生成这个物体的3d三角形网格,如果你能减少三角形的数量就好了。
我试过 scipy.spatial.Delaunay 但它不会为 3d 对象生成三角形。
Dual Contouring 在这里可能效果很好,它是一种采用体素化数据并将其转化为网格的算法。我不太理解这里的概述,但基本上你会把你的点数组放在一个 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