2017-07-26 15 views
1

私は、行列を使って多くのスケルトンアニメーションを実行するコードを持っていますが、パフォーマンスを向上させるためにデュアルクォータニオンに変換したいと思います。デュアルクォータニオンと任意のスケール

私には1つの問題しかありません。任意のスケールを扱う方法については、良いリソースが見つかりません。

骨格階層のスケールがどのように運ばれているのかよくわかりません。

スケルトンの各ノードについて、ローカルのデュアルクォータニオン(回転+平行移動)とスケール用の3Dベクトルがありますが、スケールを組み込むためにはどうしますか?

答えて

0

骨格アニメーションとスケール、特に不均一スケールは、難題です。

骨当たりのマトリックスを持つ骨格階層の標準的な実装を使用すると、スケールは子供に伝播するだけで、通常は不要な動作と見なされます - 不均一なスケールを伝播すると、子供の骨のせん断変形やその他の変形、スキニングのアーティファクト。この理由から、それはしばしば子マトリックス上で "補償"されます - 例えば、このコンセプトのAutodesk Maya implementationを参照してください。

非伝搬スケールをデュアルクォータニオンに統合する方法については、academic papers by Ladislav Kavanを参照してください。彼はまた、YouTubeのDual Quaternionsに関する講義も数多く行っています。

+0

実際にスケールが伝播する必要があります。私のコードは、任意の伝播スケールをサポートする3Dモデルフォーマットを実装しているので、私はこれを選択する必要はありません(スケール部分、特に不均一部分は実際にはあまり使用されません)。 – user2503048

+0

その場合、残念ながら、二重四​​元数と尺度ベクトルを使用して変換全体を表現することはできません。剪断と歪みを表現するのに十分な自由度がありません。変換階層を通して。 –