三角形のインデックスのリストが与えられた場合、それをジオメトリシェーダーの隣接性を持つインデックスのリストにどのように正確に変換しますか?
ここでは厳密にインデックスについて話していることに注意してください-頂点は存在しますが、浮動小数点比較やイプシロンに入る必要なしにそれらを使用して重複した頂点を一致させることができるため、インデックスのみに焦点を当てます-その仕事はすでに行われています。
リスト内の特定の三角形について、インデックス{0、1}、{1、2}および{2、0}(または{n、n + 1}、{n + 1、n + 2}、{ n + 2、n}必要に応じて)エッジから形成されます。インデックスリストは整形式であり、曲順を正しく順守します。
このようなエッジの場合、リスト全体を検索して、それらのインデックスのうちの2つを使用する別の三角形を検索できます。その三角形の3番目のインデックスは、そのエッジの隣接する三角形を完成するために使用するインデックスです。
隣接リストでは、元の三角形はそれぞれ6つのインデックスで表され、元のインデックスはスロット0、2、4に挿入されます。隣接関係を完了するための新しいインデックスはスロット1、3、5に移動します。エッジ{0、1}に対して完了するインデックスはスロット1に移動し、エッジ{1、2}に対して完了するインデックスはスロット3に移動します、インデックスエッジ{2、1}を完了するためにスロット5に入ります。
私は何を試しましたか?
私はそれを総当たりにしてみましたが、そうです、それでうまくいきますが、私はもっとエレガントなアプローチを求めています。
Eric Lengyelのエッジリストビルダーを試してみましたが、(1)元の三角形の順序が考慮されていないようです(2)曲がり順が考慮されていないようです(3)どこに行くか泥のように明確です次に、エッジリストを作成した後、(4)「triangleIndex」と「faceIndex」のような明白な明白なエラーがあるサンプルコードの疑いがあります。作成者もコードをコンパイルしたので、実行しないでください。確認しますか?
だから-これからの提案やポインタは?