Godot キャラコン 17 「dae の import とanimation あれこれ」 3/6
daeに関して、importとの関係で押さえておくべきことは今のところ「1.シーンとして扱われる 2.変更を加える時には[New Inherited]する」の2点だ。では、animationとの関係で押さえておくべき事は何なのか? 今回はその辺をまとめておきたいと思う。
Animation パネルのミカタ
まずは、daeを[New Inherited] して開いたら、シーンパネルの「AnimationPlayer」ノードを選択する。すると、下部のパネルがAnimation用のものになる。
分かるところだけ解説しておこう。
- Animation パネル。
- 現在位置からアニメの逆再生。位置は[7]で指定。
- 一番最後からアニメの逆再生。
- 再生停止。
- 一番最初からアニメの再生。
- 現在位置からアニメの再生。位置は[7]で指定。
- アニメの再生位置を指定。右のボタンでステップ秒[18]での増減が可能。また、点線で囲った部分をマウスクリックでも指定できる。青い縦線。(アニメの再生だけじゃなくて、作成でキーを打つ時にも使う。)
- 新規アニメーションの作成。
- アニメをファイルから追加。
- 作ったアニメをセーブ。
- アニメの複製。
- アニメのリネーム。
- アニメをリストから削除。
- 再生して確認したいアニメをリストから選択する。
- 選択したアニメをデフォルトで再生するアニメに設定。
- ズーム。
- 再生時間を決める。(秒)
- ステップ。
- [2][3][5][6]で再生させる時、ループさせる。ただし、ここでのテスト再生のみで有効。
- トラックの追加・上下移動・削除。
ここのパネルはアニメの再生だけでなく作成でも使うが、今回は主に[2]~[6]を使って、登録されているアニメ[14]の再生を確認するために使用する。アニメは基本1回再生したら終わるので、繰り返しさせたい場合は[19]をオンにしてループ再生させる。
使っているdaeに関して
キャラコンの14まではアニメ無しの「おばさん」("BodyF01.dae")を使っていたが、キャラコンの15からはアイドルアニメ("idle01")とウォークアニメ("walk01")を持っている「おばさん」("BodyF02.dae")を使っているから注意。違いは以下の3点。
[1]
ManuelbastioniLABの「IK」と「筋肉」を有効にした。
[2]
blenderでアニメ(アクション)をつけた。
[3]
Better Collada でエクスポートする時、「エクスポート アニメーション」と「オール アクションズ」を有効にした。
なんで変更したかと言うと・・・。
他のdaeが持ってるアニメは使えないから~! 残念。
キャラコンの12で、blenderで作った「おばさん」daeにはアニメは付けなかった。これは、アニメ無しの「おばさん」を見た目の本体(メッシュとスケルトンを担当)とし、後からアニメのみ(スケルトンとアニメを担当)の「おばさん」を出力してリンクしようと考えたからだ。("BodyF01.dae")
「本体」と「アニメ」を分けることで、アニメーションの追加が後から個別ファイルで行えるので便利かなと思ったんだ。こうすればアニメの追加や修正は、本体をいじらずに個別のアニメファイルをいじるのみで済む。ミスっても被害は1アニメファイルのみで済む。本体と他のアニメファイルは無傷という事だ。これなら安心やろ。
だが分けられないとなると、アニメの追加や修正をしたい場合は常に「本体」daeをいじらなければならない。修正中に変な所をいじってファイルをぶっ壊しちゃったりする危険性もあるし、アニメの追加で本体ファイルがどんどん肥大化していく。1ファイル100Mのdaeとかになっちゃうんじゃ? 扱えるのか俺のPCで? ということで、かなり心配やろ。
で、何とか出来ないものかと色々やってみたが、結局、上手くいかなかった。daeでは、他のファイルが持つアニメを扱えないという事なのだろうか。何か良い方法があったら教えて欲しい感じだ。
リターゲットとかいう仕組みが無いとダメなんだろかな。もしそうなら、Godot3.1でリターゲット機能が追加されるといいなー。
という事で。結論、1ファイルにアニメは全部入れて置け。("BodyF02.dae”)
でも、コレ、俺のやり方が悪いのかな? 何とかならねーかな~。
「AnimationPlayer」と「AnimationTreePlayer」の2つの方法
Godotで3Dアニメーションをさせる場合は、「AnimationPlayer」ノードを使う方法と「AnimationTreePlayer」ノードを使う方法がある。簡単に言うと2つの違いは、
- 「AnimationPlayer」ノード: 単体アニメを再生する。
- 「AnimationTreePlayer」ノード: 複数アニメをブレンドして再生させる事が出来る。
つまり、「単」か「ブレンド」かって事。詳しくは次回以降。
ただ、 「AnimationTreePlayer」ノードを使う場合でも、「AnimationPlayer」ノードは必須なんだけどね。
で、次回は
「AnimationPlayer」ノードを利用したdaeアニメーションを予定。スクリプトで動いてもらおう。
追記:アニメの追加は何とかなる模様。以下参照