0

スムーズ スキニングを使用してゲーム内でメッシュをアニメーション化しようとすると問題が発生します。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 を更新する

また、ボーンのローカル変換とワールド変換を切り替えてみましたが、役に立ちませんでした。私は何かばかげたことをしていると確信しています。数学ライブラリをバラバラにする前に、それが事実であることを確認したいだけです。

助けてくれてありがとう。

4

0 に答える 0