3d 合并相邻面和共平面
我正试图通过合并3D OBJ文件中的相邻面和共面来简化3D网格,OBJ文件包括网格的三角剖分,我希望减少边的数量,而不降低网格的质量。有什么算法能帮我解决这个问题吗 输入: 预期产出:3d 合并相邻面和共平面,3d,geometry,cgal,3d,Geometry,Cgal,我正试图通过合并3D OBJ文件中的相邻面和共面来简化3D网格,OBJ文件包括网格的三角剖分,我希望减少边的数量,而不降低网格的质量。有什么算法能帮我解决这个问题吗 输入: 预期产出: 每条边由2个点定义,由于所有面都是三角形,因此每条边与2个相邻三角形共用。如果考虑这两个三角形,则总共有4个点:边的两个端点(两个三角形共用)和两个三角形的两个端点 你可以做的是在所有边上循环,检查这4个点是否共面。如果是,边缘是无用的,您可以删除它 要检查4个点是否共面,请执行以下操作: 从4个点中选取3个点
每条边由2个点定义,由于所有面都是三角形,因此每条边与2个相邻三角形共用。如果考虑这两个三角形,则总共有4个点:边的两个端点(两个三角形共用)和两个三角形的两个端点 你可以做的是在所有边上循环,检查这4个点是否共面。如果是,边缘是无用的,您可以删除它 要检查4个点是否共面,请执行以下操作:
- 从4个点中选取3个点,计算由这3个点定义的平面方程(平面方程的形式为ax+by+cz+d=0)
- 检查第四点是否满足平面方程
join\u face()
通常不起作用)。如果组件只是简单连接,则您知道可以删除所有边。通过从组件的边界边缘开始并围绕目标循环,可以在该面的边界上行走,从而定义边界边缘的循环。您遇到的问题是什么?只需检查面的相邻面是否具有相等法线并合并即可。您可以使用来合并共面面。