Blender Tips編 #4 -BlenderとUnityのやりとり覚書その2(リグ/モーション)-
どうも蒼水です。
今回は前回から引き続きリグ/モーションのBlenderとUnityのやりとりに関して書いていきます。
- 今回の目的
- リグ、およびモーションデータ形式に関して
- パターン1:Blenderで作成→FBX(完成データ)
- パターン2:BVH(元データ)→Blenderで編集→FBX(完成データ)
- パターン3:FBX(元データ)→Blenderで編集→FBX(完成データ)
- まとめ
今回の目的
Blenderで作成したモーションをはじめ、外部から持ち込まれたモーションデータ(FBX/BVH)などを編集してUnityとやりとりに関してデータの扱い方に関してまとめていこうかと思います。
モーションになってくると外的要因が増えてくるのでそこも踏まえてまとめていきます。
ちなみに外的要因というのは主にモーションキャプチャーデータのことになります。ほかmixamo等からデータを持ってきてインポートして使う、といった場合のことです。
この際インポート設定もきちんと確認しておく必要もあります。
リグ、およびモーションデータ形式に関して
まず前提知識としてこれらに関して確認しておきます。
データ形式としてはFBXとBHVが主になります。
▼FBX形式に関して
最終的にはUnityに持ち込む際はFBXで出力します。
キャラモデルであればメッシュと一緒にボーン(リグ)も出力しますよね。
モーションであればボーンのみをFBXで出力し、Unity側でAnimファイルとして流し込みます。(Humanoidの場合)
Humanoidではない場合はGenericとしてメッシュと一緒に出力してやる必要があります。
▼BVH形式に関して
個人でいろいろやってる方の場合めったに見ることがないであろうこの形式。
結論から言えばモーションキャプチャデータです。Blenderでは標準で読み込めるようになっています。
OptiTrackやVicon等モーションキャプチャシステムを使用し収録、出力されたデータです。いわばモーションの生データみたいなものです。
中身はHumanoid型のリグと全フレームにキーが打たれているモーションデータになります。(長いものだとめっちゃ重い)
(余談ですが、キャプチャデータそのものはほぼ確実に修正が必要になるためそのまま使用されることはあまりないです。)
つまり、今回想定する流れとしては以下の通り。
パターン1:Blenderで作成→FBX(完成データ)
パターン2:BVH(元データ)→Blenderで編集→FBX(完成データ)
パターン3:FBX(元データ)→Blenderで編集→FBX(完成データ)
次項からそれぞれに関して掘り下げていきます。
パターン1:Blenderで作成→FBX(完成データ)
こちらに関してはエクスポート設定だけしっかりなされていれば特に問題ないためエクスポート設定だけ記載します。
(とはいえ拡縮とかはフリーズしたくなりますね....一応しなくても問題はないんですけども...)
基本的には前回のモデルと同じですね、理由も同じです。
一点補足するといえばリーフボーン追加のチェックを外しています(デフォではチェック入っています。)
理由としてはなくても困らない、余計なボーンは入れたくない、という理由から外しています。
これは各ボーンの末端(各階層の一番子の子生成される)に1つ追加されます。ボーンが増えると負荷上がりますからね...。というかこれBlender特有のものっぽいですね。
パターン2:BVH(元データ)→Blenderで編集→FBX(完成データ)
こちらはモーションキャプチャデータを扱う方向けの内容になっていますので関係ないぜ!って方は飛ばして下さい。
まず前提として各キャプチャシステムにおいてはFBX/BVHどちらでも出力が可能ではあるのですが、BlenderではFBXで書き出されたモーキャプデータを読み込むとだいたい正常に読めこめない場合が多いです。
そのため必ずBVH形式で出力してそちらを読み込んで使用します。
インポート設定時点できちんとしておく、同じHumanoidに複数モーションを扱う場合は設定も全てのデータで統一しておくことが大事です。
(でないとUnityでめんどうなことになります)
インポート方法と設定は以下の通り。設定に関して確認していきます。
▼拡大縮小
デフォルトでは1になっていますが、前回扱ったスケール100倍問題もあり外部データをBlenerで扱う際は基本的には1/100にして使用します。
(動作面で言うと別に大きいままでも流し込んだらきちんと動くので必須ではない...けどサイズ感は合ってたほうがいいかなというお気持ち)
▼FPSのスケーリング
これはBVHのFPSではなくBlender側で設定したFPSにBVHを合わせてくれます。
個人的にはBVH側に合わせているためここはチェックしません。
余談ですが、BlenderのシーンFPSは以下の場所から設定することができます。
▼シーンFPSを更新
これは各システム側からBVHを書き出す際にフレームレートを設定できるのですがBVH側に合わせる場合にチェックを入れておきます。
ちなみに高FPSで書き出してしまうとPCスペックによってはBlenderが音もなく落ちたり、読み込みに異常なほど時間がかかったりします。30FPS以内くらいで書き出すのが良いかなと思います。
以上を設定しておくことできれいな状態でBlenderにデータを読み込むことができます。
あとは編集/修正作業を行い、パターン1と同様の設定で出力してあげればOKです。
BVHで読み込んでも書き出しはFBXです。
パターン3:FBX(元データ)→Blenderで編集→FBX(完成データ)
これは主にmixamo等からFBX形式で配布されていてるモーションデータをBlenderで読み込んで何かしたい場合です。
mixamoにはかなり多くのモーションデータが配布されているので興味ある方は是非。
Adobeアカウントがあれば誰でも無料で利用ができる、はず。
www.mixamo.com
デフォルト設定でインポートしてしまうと正常に読み込まれないため以下の設定でFBXをインポートします。メインの方はデフォルトのままで、アーマチュアの方のチェックを全て入れておきます。
これで正常に読み込むことができます。
以下画像からキーフレームが打たれていること、ボーンが正常な向きをむいていることが確認できます。
メッシュもついてきますが、キャラ等に流し込む場合はこのメッシュは不要のため、書き出し時はボーンのみ選択して他同様に設定して書き出しを行いましょう、
まとめ
エクスポート設定は基本的には全て同じです。
インポート設定は元がFBXかBVHかで変わってきますので、適宜設定すればOK。
Blenderはモデリングだけでなくモーションも十分扱えていいぞ~。
では。
前回
atelier-aomi.hatenablog.com
次回
(リンク作成予定)