2

Collada fileアニメーションの解析を行っています。私はそれをうまく描画してアニメーション化しましたが、問題はテクスチャ座標をどのように設定するかです。OpenGLcollada daeファイルがどのようにそれを私に与えるかを正確にフィードしますが、マップは完全に間違っています。座標はからの範囲です[0-1].

再配置する必要がありますか?

もしそうなら、それについてどうやって行くかについて私に説明してください。GL_LINEARとGL_NEARESTを使ってみましたが、問題は解決しません。なぜ何かアイデアはありますか?

私が使用しているモデルは、http://www.wazim.com/Collada_Tutorial_1.htmが提供するAstroBoyとAmnesiaServantGruntです

4

2 に答える 2

3

完全に間違ってマッピングされていることが判明したというあなたの発言に基づいて、テクスチャ インデックス値を考慮していないと思います。私も同様の問題を抱えていました(ただし、モデルは異なります)。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' は実際には非常に便利です。それ。)

于 2013-01-16T23:02:50.197 に答える
1

いいえ、colladaの基本的な知識を読むことをお勧めします。

 <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......

169は三角形の最初のポイントインデックス、0は最初の法線インデックス、171は最初のtexcoordインデックスなどです。

于 2013-01-25T05:31:14.970 に答える