2007年01月26日 00時19分11秒

アニメーションの合成

テーマ:プログラミング

アニメーションをさせるにあたってアニメーションの合成は非常に重要になります。

そこはID3DXAnimationControllerを使うと簡単に実装できて、流石DirectXといった感じです。

歩きから停止へのアニメーションの移行なんかも、SetTrackWeightで楽に設定できます。

しかし、例えば歩きながら剣で切るアニメーションと、停止しながら剣で切るアニメーションといったように、上半身だけ同じアニメーションを使い、下半身は別のアニメーションにしたいときがあります。

これは、一見すると別々にアニメーションを作って合成すればいいような気がしますが、重み付けの影響で上手くできません。

June2005とかなり古いバージョン使っている所為なのかDirectXの仕様なのか、SetTrackWeightで指定した値は相対的なものらしく、

m_SkinX->GetAnimeCtrl()->SetTrackWeight(0,1.0f);
m_SkinX->GetAnimeCtrl()->SetTrackWeight(1,1.0f);

といったようにしても、しっかり50%50%に設定されてしまいます。

解決方法としては、xファイルを直接開いて、AnimationSet内の影響させない部分をごっそり消すしかないようです。(歩行アニメーションだったら上半身の部分を全て消します。)

こうすると、存在しないボーンの部分は合成しないようで、上手く行きます。合成しないとなると少しは高速になるのかな・・・?

でも手作業でやるのはかなり面倒だったりします。アニメーションの数やボーンの数が少ないならまだいいですがこれらが多くなるとどうなることやら・・・。

AD
いいね!した人  |  コメント(0)  |  リブログ(0)

amayumiさんの読者になろう

ブログの更新情報が受け取れて、アクセスが簡単になります

コメント

[コメントをする]

コメント投稿

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。