2011-08-27 55 views
1

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

我试图下述(伪):


1.定义第一三角形法线方向是右方向
2.过去使用一种DFS的这样的网格:
3.三角形=在triangle.getNeighbours第一三角形
4.的foreach neigbour
5.如果邻居和三角形大于180做neighbor.flip()
6.三角形=邻居
7之间的角度,如果邻居已经挑选的Ñ继续下一个邻居
8.递归继续4.

但在算法步骤5不工作,因为斜面知道如果角度大于180,因为我需要在女巫方向(顺时针或逆时针知道)。

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

回答

4

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

+0

它正在解决所有的情况下,这种方法有问题,请访问我的问题在这里http://stackoverflow.com/questions/17036970/how-to-correct-winding-of-triangles-to-counter-顺时针方向的3D网格,并指导我现在要做什么......谢谢。 – furqan