0

次のDirectXサンプルに基づいてロードおよびアニメーション化するDirectXの階層アニメーションモデルがあります:http://msdn.microsoft.com/en-us/library/ee418677%28VS.85%29.aspx

サンプルと同じくらい良いのですが、私が望むアニメーションの詳細の一部には実際には入りません。たとえば、ランニングアニメーションとスローアニメーションが別々のアニメーションとして設定されているメッシュがある場合、ヒップの上の骨に対してスローアニメーションを発生させ、ヒップの下の骨に対してウォーキングアニメーションを発生させるにはどうすればよいですか?

また、たとえば、人を左または右に傾けたい場合は、腰の骨を見つけて、その行列によって回転行列をマルチプレイする必要がありますか?この場合、マトリックスはm_amxBoneOffsetsだと思いますか?

4

2 に答える 2

1

実行中のアニメーションは、スローするアニメーションにわずかに影響を与える必要があります。調べる必要があるのは、アニメーションのブレンドです。

バルブは何年も前にカウンターストライクでそれをどのように実装したかについて良い論文を書いたと確信しています。バルブサイトにはないので、このメモリをどこから取得したのかわかりません...

于 2010-02-05T08:42:24.763 に答える
1

複数のアニメーションを1つのアニメーションに構成することは、通常、アニメーションシステムの仕事であり、D3Dサンプルの範囲をはるかに超えています。

2つの例を見てみましょう。

走ったり投げたりする

さて、この場合、実行中のアニメーションから下半身のアニメーションを適用し、投げるアニメーションから上半身のアニメーションを適用することができます。そして、あなたは非常にくだらない結果を得るでしょう。

どのように骨が骨パレットのどこにあるかを知るだけの問題です(それらがどのように、どの順序で保存されるかに依存しますが、本質的に難しいことは何もありません。明確な参照は、アニメーションデータを生成するツールのドキュメントである必要があります)。

実際には、2つのアニメーションをブレンドしたほうがよいでしょう。これは一般的に難しいことであり、これを行うソフトウェアパッケージが存在します。Gamebryo、例

または、投げる走っ​​ている人のアニメーションは、投げる立っている人とは十分に異なるので、2つのアニメーションを持っている方が良いかもしれません。

傾く

ルートボーンに回転行列を適用すると、キャラクター全体を回転させるだけです。ここで、階層内の次のボーンを(脊椎から)回転させると、それに依存するすべてのボーンが同様に回転するようになります。それはおそらくあなたが望むことをするでしょう、しかしそれを見つける確実な方法があります。それを試してみてください!

于 2010-02-05T08:46:35.450 に答える