我瞭解繞線順序是什麼,以及它如何用於背面剔除。頂點的繞線順序
但是,我不確定像Blender這樣的3D建模程序如何取得任意一組三角形並將它們全部正確地纏繞。
我試着用搜索引擎的答案,這是我找到了最好的:
http://www.gamedev.net/topic/550481-vertex-winding-order-counter-clockwise-oder-vertex---algorithm/
基本上,每個三角形,你會發現它的中心(重心要準確),從三角計算法向量,這給你一個光線。你拍這張光線並測試它與其他三角形的交點。如果它是偶數,那麼你的繞組是正確的,如果它是一個奇數,你的繞組是不正確的(我想這取決於你如何生成法向量,但你以某種方式使用奇/偶策略)。不管怎樣,這意味着整個過程通常是O(n^2)。如果您有1000個三角形,那麼對於每個三角形,您必須針對其他999個三角形的交叉點進行測試。有沒有一種不太明顯的方法來正確的頂點風,這是更有效的?
我不確定你是什麼意思的任意一組三角形。通常,三角形由網格創建,網格是以正確的纏繞順序構建的。 –
是的,當您爲某些渲染系統導出網格時,它將具有正確的纏繞順序。但是,這個3D建模器如何首先確定事物的正確排列順序? – newprogrammer