当たったらどうすんだよ

当たらなければどうということはない

2018年版:Blenderで作ったキャラクタをUE4にインポートして動かす! Part1

こんにちは、なんです。
前回の投稿から余裕で1年を超えてしまいましたが、その間に個人的に業務的にも恐ろしいほど変化がありました。2017年はCG関係以外の実務やイベント運営などに追われ、ほとんどCG制作に関わることができませんでしたが、年末ごろから徐々にCGリハビリを行い、明けて2018年の初春である現在では、再び新たなノウハウを蓄積しましたのでそろそろ放出しようと思います。

記事の本題に入る前に、この記事のテーマについてお話します。

  1. Blenderで作成した人型キャラクタにアーマチュア(ボーン)を入れ、リグを作成してFBXでエクスポートする。
  2. 上記FBXをUnrealEngine4(4.18.3)にインポートし、UE4マネキンのスケルトンに直接スキンとして「被せる」方法と、別スケルトンとしてインポートし、Mixamoなどのアニメーションアセットをリターゲットする方法の二つを紹介する。
  3. 以上に関わる周辺の様々なTipsやノウハウを提供する。

なお、本稿の作成時点での各ソフトウエアは、Blenderバージョンは2.79a RC、アンリアルエンジンはUE4.18.3での検証を前提にしています。

 

 最初に:BlenderUE4の単位(ユニット)スケール問題

f:id:kanianthi:20180226134940p:plain

↑の画像はBlenderでオリジナルキャラクタ「エビフライ」とアーマチュアを表示しています。3Dビューの右側ペインにトランスフォームのアトリビュートが表示されていて、その下には現在の単位に基づく寸法が表示されています。

表示を見るとZ方向の寸法、つまり身長が約1メートルです。また、さらにその右のペインでは現在の単位プリセットが「メートル法」であり、倍率が1.0倍(等倍)であることも表示されています。

以前の記事に書きましたが、UE4(アンリアルエンジン)の1単位はセンチです。しかしBlenderの単位はメートルまたは英単位系なので、Blender単位1のままUE4に持っていくと、そのオブジェクトは1センチとなり1/100の大きさにスケーリングされてしまう、という問題がありました。

そこで以前までは、Blender側でユニット倍率を.01に設定し、無理やり1ユニットが1センチになるようスケーリングを補正して作業していました。
これは非常に不便な話で、ユニット倍率が.01倍であればオブジェクトの寸法は100倍にしておかないとBlender内でのスケーリングがおかしなことになります。

その結果、Zbrushやサブスタンスペインターなどでディティールの追加やPBRテクスチャを作成する作業や、Blender内で物理シミュレーションを行う作業などで、100倍の大きさのオブジェクトを扱うことになり、あれこれと不具合が生じていたのです。

f:id:kanianthi:20180226140257p:plain

しかし現在のBlenderUE4のワークフローでは、この問題がついに解決したようです。画像のようにスケーリングオプションは1.0倍のまま、右側の倍率補正ボタンをクリックしておくだけでBlender内で1メートルとして作成したオブジェクトは、UE4内でもそのまま1メートルのオブジェクトとして取り込まれます。

f:id:kanianthi:20180226140909p:plain

↑の画像はエビフライを含めたぼくの自作キャラクタたちをUE4のThirdPersonサンプルにインポートしてレベルに表示したものです。すべてのキャラクタの身長がUE4のユニット設定に合致していることが分かります。カエルが大きすぎるじゃないか!というツッコミがあるかも知れませんが、あくまでキャラとしてのカエルなので小学生程度の身長がありますが許してくださいおねがいします(なぜか謙虚)。

アーマチュアとRIGアセットの問題

Autodesk製の3dsMaxにはBiped(キャラクタースタジオ)とCATという二つのプラグインRIGがあります。MayaだとHumanIKなどがあります。これらはDCC(DigitalContentCreation)ツールが標準で持つボーンとリグ機能とは別個に、独自のボーン(あくまでも骨のこと)やリグ(骨やスキンを制御するための仕組)ですが、BlenderにもRigifyが標準搭載されているほか、いくつかのアドオンRIG構築アセットが存在します。

Blenderに存在するアドオンの場合、ボーンやアーマチュア(骨全体を統合した単位)はBlender組み込みのものをそのまま利用し、制御や変形補完、自動バインドといったリグ本来の機能を自動化してくれるアセットになっています。

特にその中でもイチオシなのが

Auto-Rig Pro - Blender MarketAuto-Rig Pro - Blender Marke

blendermarket.com

という有償アドオンです。
40ドルほどしますが、他のDCCのプラグイン・リグで100ドル以下というのはほぼ見たことがありませんので素晴らしい価格設定です。また、機能的にも大変すぐれているので多少余計なこともしてくれますが余裕で笑って導入できるレベルです。

AutoRigProは、半自動でメッシュにボーンをマッピングしてくれるだとか、Mixamoや他のモーションキャプチャファイルからのアニメーションリマッピング、独自のFBXエクスポート機能などを備えています。

また、Rigifyより後発であるため、UnityとUE4に対応したエクスポートプロファイルや最適化されたFBX出力プロファイルを利用できるなど、Blenderゲームエンジンをつなぐワークフローに特化した機能が搭載されています。

ここまで持ち上げといてアレですがwこのアドオンは100倍スケールを自動で付加するオプションを独自のFBXエクスポーターに備えています。とはいえ検証したところ、Blender内でオブジェクトを100倍にするとかUE4でボーンの回転角度や移動量が1/100になってしまうという問題は起きていません。

なんとなくモニョりはしますがAutoRigProからFBXをエクスポートする際には、100倍スケールオプションをオンにしておくと、標準FBXエクスポートの倍率オプションと同様に「BlenderでもUE4でも1メートルのものは1メートル」で作業できますので良しとしておきましょう。

 

以上、今回は本題に入る前のお膳立てについて書きました。
次回はいよいよ、アンリアル・マネキン・スケルトンとBlenderのアーマチュアを互換させるTipsについて書いていきます。