蒼水技術録

蒼水家技術録

蒼水が普段制作とか勉強とかして覚えたことを復習としてまとめてるものです。 それが最適解かどうかはわからないけど、何を目的として始めて、何が必要で、実際何をやって、どうなったか、まで全部過程を残すための技術ブログです。

Blender Tips編 #4 -BlenderとUnityのやりとり覚書その2(リグ/モーション)-

どうも蒼水です。
今回は前回から引き続きリグ/モーションのBlenderとUnityのやりとりに関して書いていきます。

今回の目的

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(完成データ)

こちらに関してはエクスポート設定だけしっかりなされていれば特に問題ないためエクスポート設定だけ記載します。
(とはいえ拡縮とかはフリーズしたくなりますね....一応しなくても問題はないんですけども...)
f:id:Yui_Aomi:20200427200117p:plain
基本的には前回のモデルと同じですね、理由も同じです。
一点補足するといえばリーフボーン追加のチェックを外しています(デフォではチェック入っています。)
理由としてはなくても困らない、余計なボーンは入れたくない、という理由から外しています。
これは各ボーンの末端(各階層の一番子の子生成される)に1つ追加されます。ボーンが増えると負荷上がりますからね...。というかこれBlender特有のものっぽいですね。

パターン2:BVH(元データ)→Blenderで編集→FBX(完成データ)

こちらはモーションキャプチャデータを扱う方向けの内容になっていますので関係ないぜ!って方は飛ばして下さい。

まず前提として各キャプチャシステムにおいてはFBX/BVHどちらでも出力が可能ではあるのですが、BlenderではFBXで書き出されたモーキャプデータを読み込むとだいたい正常に読めこめない場合が多いです。
そのため必ずBVH形式で出力してそちらを読み込んで使用します。
インポート設定時点できちんとしておく、同じHumanoidに複数モーションを扱う場合は設定も全てのデータで統一しておくことが大事です。
(でないとUnityでめんどうなことになります)
インポート方法と設定は以下の通り。

f:id:Yui_Aomi:20200427201327p:plain
BVHの読み込み
f:id:Yui_Aomi:20200427201427p:plain
BVHのインポート設定
設定に関して確認していきます。

▼拡大縮小
デフォルトでは1になっていますが、前回扱ったスケール100倍問題もあり外部データをBlenerで扱う際は基本的には1/100にして使用します。
(動作面で言うと別に大きいままでも流し込んだらきちんと動くので必須ではない...けどサイズ感は合ってたほうがいいかなというお気持ち)

FPSのスケーリング
これはBVHのFPSではなくBlender側で設定したFPSにBVHを合わせてくれます。
個人的にはBVH側に合わせているためここはチェックしません。
余談ですが、BlenderのシーンFPSは以下の場所から設定することができます。

f:id:Yui_Aomi:20200427202355p:plain
シーンFPSの設定

▼シーンFPSを更新
これは各システム側からBVHを書き出す際にフレームレートを設定できるのですがBVH側に合わせる場合にチェックを入れておきます。
ちなみに高FPSで書き出してしまうとPCスペックによってはBlenderが音もなく落ちたり、読み込みに異常なほど時間がかかったりします。30FPS以内くらいで書き出すのが良いかなと思います。

以上を設定しておくことできれいな状態でBlenderにデータを読み込むことができます。

あとは編集/修正作業を行い、パターン1と同様の設定で出力してあげればOKです。
BVHで読み込んでも書き出しはFBXです。

f:id:Yui_Aomi:20200427200117p:plain
同様にこの設定で出力

パターン3:FBX(元データ)→Blenderで編集→FBX(完成データ)

これは主にmixamo等からFBX形式で配布されていてるモーションデータをBlenderで読み込んで何かしたい場合です。
mixamoにはかなり多くのモーションデータが配布されているので興味ある方は是非。
Adobeアカウントがあれば誰でも無料で利用ができる、はず。
www.mixamo.com

デフォルト設定でインポートしてしまうと正常に読み込まれないため以下の設定でFBXをインポートします。

f:id:Yui_Aomi:20200427204356p:plain
FBXのインポート設定
メインの方はデフォルトのままで、アーマチュアの方のチェックを全て入れておきます。
これで正常に読み込むことができます。
以下画像からキーフレームが打たれていること、ボーンが正常な向きをむいていることが確認できます。
メッシュもついてきますが、キャラ等に流し込む場合はこのメッシュは不要のため、書き出し時はボーンのみ選択して他同様に設定して書き出しを行いましょう、
f:id:Yui_Aomi:20200427204535p:plain
読み込みが正常に完了

まとめ

エクスポート設定は基本的には全て同じです。
インポート設定は元がFBXかBVHかで変わってきますので、適宜設定すればOK。

Blenderモデリングだけでなくモーションも十分扱えていいぞ~。
では。

前回
atelier-aomi.hatenablog.com

次回
(リンク作成予定)