巻き順とは何か、裏面カリングにどのように使われるかを理解しています。
しかし、Blender のような 3D モデリング プログラムがどのようにして三角形の任意のグループを取得し、それらをすべて正しく巻くことができるのか、正確にはわかりません。
私は答えをグーグルで調べてみましたが、これが私が見つけた最高のものでした:
http://www.gamedev.net/topic/550481-vertex-winding-order-counter-clockwise-oder-vertex---algorithm/
基本的に、各三角形について、その中心 (正確には重心) を見つけ、その三角形から法線ベクトルを計算します。これにより光線が得られます。この光線を取り、他のすべての三角形との交差に対してテストします。偶数の場合、巻線は正しく、奇数の場合、巻線は正しくありません (これは、法線ベクトルを正確に生成した方法に依存すると思いますが、何らかの方法で奇数/偶数戦略を使用します)。とにかく、それはこのプロセス全体が一般的に O(n^2) であることを意味します。1000 個の三角形がある場合、三角形ごとに、他の 999 個の三角形の交差に対してテストする必要があります。頂点を正しく巻くためのあまり明白でない方法はありますか?それはより効率的ですか?