尝试修复3D网格法线

时间:2011-08-27 17:00:24

标签: algorithm graphics mesh depth-first-search normals

我有三角形集合来定义我的3D形状的网格表面, 我想修正每个三角形的法线以指出形状。

我正在尝试以下(伪):


1.定义第一个三角形法线方向是正确的方向
2.使用DFS这样的方式遍历网格:
3.三角形=第一个三角形
4.在三角形附近的neigbour.getNeighbours
5.如果邻居和三角形之间的角度大于180则相邻.flip()
6. triangle = neighbor
7.如果邻居已经被选中,那么继续下一个邻居
8.继续递归到4。

但算法中的第5步不起作用,因为无法知道角度是否大于180,因为我需要知道巫婆方向(顺时针或逆时针)。

您能帮我理解如何修复算法吗?

1 个答案:

答案 0 :(得分:5)

无需计算邻居之间的角度。如果三角形ABC面向(A->B->C),并且边缘AB上的邻居是三角形ABD,则必须在边AB上具有相反的方向。这意味着,必须将neigbouring triangle定位B->A->D