我有这个对象/点云,用pyopengl和pygame渲染。
我的目标是关键点的坐标数组。我希望生成这个对象的三维三角网格,如果你可以减少三角形的数量也会很好。
我尝试过scipy.spatial.Delaunay并且它不会为3d对象生成三角形。
答案 0 :(得分:1)
Dual Contouring在这里可能运行良好,它是一种算法,可以获取体素化数据并将其转换为网格。我不明白这里要概括它,但基本上你会把你的点数组放到一个3D网格数组中,如果那个网格单元包含一个点,它被设置为等于1(完整),如果它不是设置为0(空),然后你会在这个网格上运行DC算法,它会输出一个网格。这个算法的好处是它支持内部空腔和凹形。
如果您决定使用DC,我发现这些链接可能对您有所帮助:
Basic Dual Contouring Theory http://ngildea.blogspot.com/2014/11/implementing-dual-contouring.html
这是我在Unity3D中实现此算法时使用的源代码的github repo: https://github.com/nickgildea/DualContouringSample