完全に間違ってマッピングされていることが判明したというあなたの発言に基づいて、テクスチャ インデックス値を考慮していないと思います。私も同様の問題を抱えていました(ただし、モデルは異なります)。OpenGL が頂点を描画する順序を認識できるように、インデックス値の配列を持つことができるのと同じように、Collada は UV インデックス値 (および通常のインデックス値) を割り当てますが、面倒なことに、それらは同じ順序になることはありません。たとえば、次の Collada サンプルを見てください。
<source id="Box001-POSITION">
<float_array id="Box001-POSITION-array" count="1008">
-167.172180 -193.451920 11.675772
167.172180 -193.451920 11.675772 .....
....
....
<source id="Box001-Normal0">
<float_array id="Box001-Normal0-array" count="5976">
-0.000000 -0.025202 -0.999682
-0.000000 -0.025202 -0.999682 .....
....
....
<source id="Box001-UV0">
<float_array id="Box001-UV0-array" count="696">
0.000000 0.000000
1.000000 0.000000
0.000000 1.000000 .....
....
....
<triangles count="664" material="_13 - Default">
<input semantic="VERTEX" offset="0" source="#Box001-POSITION"/>
<input semantic="NORMAL" offset="1" source="#Box001-Normal0"/>
<input semantic="TEXCOORD" offset="2" set="0" source="#Box001-UV0"/>
<p> 169 0 171 170 1 172 171 2 173 171 3
173 168 4 170 169 5 171 173 6 175 174
7 176 175 8 177 175 9 177 172 10 174 173 11 175 108 ....
最初の 3 つのセクションは頂点/法線/テクスチャ座標の値を示しますが、最後のセクションは各値のインデックスを示します。最初の頂点インデックスが 169 であるのに、最初の法線インデックスが 0 であることに注目してください。いたるところにあります!Collada ファイルが指定する方法で、頂点とテクスチャの値を並べ替える必要があります。
もう 1 つの方法は、collada ファイルを解析し、すべての頂点、法線、および UV 値をインデックス値に基づいて正しい順序に再配置する小さなプログラムを作成することです。次に、ポイントを OpenGL に直接フィードするだけで、質問する必要はありません。もちろん、どのように処理するかはあなた次第です。
(PS: Collada ファイル用の優れたパーサーを作成できる場合、'interleaved-indexing' は実際には非常に便利です。それ。)