2011-08-27 58 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