スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

モーション周り

ようやくモーション周りの完成が見えてきた。

XNAのアニメーションはお手軽に見えて実は面倒。
スキニングアニメーションのサンプルを見ても分かるようにいろいろ手を加えてやらなければならない。
動くようになってもそれをシェーダーに適用させて、装備品のことも考えなければならない。。

とりあえず単品で動かしたり、モーションをブレンドさせることは成功。
複数のモーションを組み合わせたような動きをスムーズに管理できるクラスを作成すればこちらはOKといったかんじ。

問題は装備品だったのである。
剣や盾のようなものをどう扱うか?ということを考えていなかったのですっ。
私の手元にある日本語訳にしたXNA本では装備のすべてに主人公と同じモーションを組み込んでいる感じだけどなんかナンセンス。
帽子や指輪を実装するときこれはないだろう。ってかんじになるのが見えている。
しかし上着のように上半身と連動して動くものはどうしたらよいのか?という疑問もある。

結局このようにした。
武器のようにボーンの一部(剣の場合は手の甲)にぴったりくっついていればよいものはただのモデルファイルとして読み込み主人公のボーン情報から行列を渡して適用させる。

上着のように動くものはボーンを仕込んだ状態で読み込みモーションは主人公のものをもらってくる。



ここでまた迷いが。
鎧に埋めるボーンは全身?それとも必要な箇所だけ?
心情としては必要箇所だけ仕込んでおいて必要ボーンの行列だけもってくるのが理想である。
実際一度はそうした。
しかし後からしっぽが生えたり、羽を動かしたくなった場合などの仕様変更に対応できる柔軟性があまりになさすぎるではないか・・・
必要箇所の行列をもってくる処理にしてもボーンの番号の振り方が変わってしまうとその情報は作り直しになるのは目に見えているし(パイプラインのBoneContentのbone.Name文字列をインデックスとしたインデクサとして用意してやったのでそこそこ管理はしやすいものの・・)、周辺ボーンではないものの間接的にずれてしまった番号の装備にきづかず後で変な動きが発覚なんてことになりかねない。

結局いい方法も思い浮かばず、少しでも動かなければならないモデルには全身のボーンをはめ込み、動かす際にはボーンMATRIX配列をそのまま渡すことにしたのである。
(装備チェンジのときに複数のXファイルを一つのXファイルとして扱えるようにして~としてやればかなり綺麗なんだろうけど、それっぽい情報なかったし今は諦め。いい情報待ってます!

そんなこんなでやっと私のサンプルにも時間を感じる空間が出来上がってきました♪

ねよっと。

コメントの投稿

非公開コメント

プロフィール

あしゅ

Author:あしゅ
ぷぃぷぃ日常。
いつのまにか雑記ブログに。

カテゴリ
最新記事
検索フォーム
最新コメント
リンク
このブログをリンクに追加する
ブロとも申請フォーム

この人とブロともになる

カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。