12

ソフトウェア スキニングを使用して MD5 ローダーを実装しました。md5 のバインド ポーズは、最終的な絶対位置と回転です。ジョイントに依存するウェイトの計算を行うだけで済みます。

GPU スキニングを実装しようとしましたが、行き詰まっています。これらの座標は最終的なものなので、3D ベクトルと四元数をマトリックスに変換してシェーダーにアップロードできないのはなぜですか? 私がここで読んだように: http://3dgep.com/?p=1356、バインド ポーズの逆でスケルトンを乗算する必要があります。しかし、私がする必要があるのは、最終的な行列を GPU にアップロードし、そこで残り (重みの合計など) を計算することだけだといつも思っていたので、この部分を理解していません。

インバース バインド ポーズの動作について教えてください。

4

2 に答える 2

25

その記事の最初の著者として、逆バインド ポーズを乗算するとどうなるかを説明しようと思います。

「逆バインド ポーズ」は基本的に、バインド ポーズでモデルに既に適用されている変換を「元に戻す」ものです。

次のように考えてください: モデルのすべてのジョイントに単位行列を適用すると、バインド ポーズのモデルが得られます (単位行列で満たされたスケルトン フレームを送信することでこれを試すことができます。結果がバインドである場合ポーズをしている場合、あなたはそれを正しくやっています)。

モデル内のすべてのジョイントにバインド ポーズ マトリックス (反転されていない) を適用すると、バインド ポーズを 2 回適用することになるため、スパゲッティになります。

したがって、スパゲッティ モデルを修正するには、結果のジョイント変換に逆バインド ポーズを掛けて、モデルに既に適用されている変換を「元に戻す」だけです。

これで少しはスッキリするといいのですが…

于 2013-09-30T19:37:07.693 に答える
11

正直なところ、この記事を完全に理解するには少し時間がかかります。頂点をボーンのローカル座標系に変換するために、逆バインド ポーズ マトリックスが使用されているようです。

これは、ボーンの変換がローカル (親ジョイントに対して相対的) であるため、必要です。したがって、頂点をアニメートするには、頂点をボーンのローカル座標系に変換し、ボーンのローカル変換を計算して、ワールド システムに戻す必要があります。

于 2013-06-16T09:08:51.480 に答える