C ++で骨格アニメーションを行うには、複数のマトリックスを組み合わせる必要があります。
私はすでに次の行列を取得しています:
- COLLADA ファイルから Shape Matrix をバインドします。
- COLLADA ファイルのすべてのボーンの Bone Matrix。
- COLLADA ファイルのすべてのボーンに Pose Matrix をバインドします。
- 計算されたすべてのボーンの逆バインド ポーズ マトリックス。
- COLLADA ファイルからのアニメーションのボーンごとのすべてのフレームのフレーム マトリックス。
これらの行列を呼び出しましょう:
- bindShapeTrans (XMFloat4X4)
- localBoneTrans (XMFloat4X4 のベクトル)
- bindPoses (XMFloat4X4 のベクトル)
- invBindPoses (XMFloat4X4 のベクトル)
- アニメーション (XMFloat4X4 のベクトルのベクトル)
次に、これらから行列の配列を作成して頂点シェーダーに渡す必要があります。頂点シェーダーは、それを使用して、重みを考慮して頂点の最終的な位置を計算します。
そしてここで迷子になりました。私はすでに多くのチュートリアルを読みましたが、マトリックスを結合する順序についてはすべて異なることを言っています。また、マトリックスに異なる名前を使用しているため、今では完全に混乱しています。
では、正しい最終的な行列を取得するには、これらの行列をどのように組み合わせる必要がありますか?
ご協力ありがとうございました。