2

独自のスキン メッシュ ローダーを作成しました。正常に動作していますが、私の問題は、変換が頂点に「焼き付け」られるように、スキンメッシュを変換 (スケーリングと回転) する方法がわからないことです。単なるジオメトリの場合、頂点の変換は簡単ですが、スキニング情報が関係しているため、たとえばスケーリングを行うと、メッシュがすべて引き伸ばされます。スキニング データも変換する必要があることはわかっていますが、どの部分でしょうか? すべてのバインド ポーズ マトリックス?インバース バインド ポーズ マトリックス? これについてどうやって行くのか理解できないようです。

私の実装は C# と OpenTK であり、特に Blender 2.6 からエクスポートされた Skinned Collada ファイルをロードしています。

前もって感謝します。

4

1 に答える 1

0

私は C# と OpenTK を知りませんが、理論的な面で助けようとしています。頂点は、重み付けされたグローバル変換マトリックスによって変換されます。グローバル トランスフォームを形成するには、各ジョイントのローカル トランスフォームを連結する必要があります。ローカル変換を作成するには、ローカルの移動、回転、スケーリングを連結する必要があります。重量はジョイントから発生します。したがって、バインド ポーズのジョイント ローカル回転/平行移動/スケーリングを取得し、それらのローカル マトリックスを操作して、それらをグローバル マトリックスに形成する必要があると思います。その後、グローバル トランスフォームにウェイトを適用し、頂点をトランスフォームします。

次のリンクは、あなたの質問に似ているかもしれません。 COLLADA: 逆バインド ポーズが間違った空間に?

この collada ファイル プレーヤーを作成しましたが、C++ を使用しています。 http://www.youtube.com/watch?v=bXBfVl-msYw

于 2013-11-29T14:01:46.497 に答える