スムーズ スキニングを使用してゲーム内でメッシュをアニメーション化しようとすると問題が発生します。Maya からメッシュ、ジョイント、およびすべてのアニメーション データをエクスポートし、ゲーム内で適切にインポートしています。また、関節が適切にアニメーション化されていることを確認するために、ゲーム内で関節を球体として表示しました。頂点をボーン スペースに変換するときに問題が発生しました。その理由がわかりません。ここでは、私が現在行っていることの基本的な概要を説明します。
バインド ポーズ内の各ボーンの逆数を事前に計算します。ボーン階層もここで設定されます。要求に応じてワールド マトリックスが計算されるため、ローカル マトリックスのみを設定します。
キーフレーム間のマトリックスを補間すると、球体が正しくアニメーション化されるため、これが機能しているように見えます。
メッシュの頂点をバインド ポーズから別のバッファにコピーして変更する
各頂点の変換:
頂点ごとに
For each influencing bone in vertex Vertex tempvert; tempvert = vertex.position * local bone inverse matrix; tempvert = tempvert * world interpolated bone transform; tempvert *= influence weight; vertex += tempvert;
変換された頂点で GPU を更新する
また、ボーンのローカル変換とワールド変換を切り替えてみましたが、役に立ちませんでした。私は何かばかげたことをしていると確信しています。数学ライブラリをバラバラにする前に、それが事実であることを確認したいだけです。
助けてくれてありがとう。