見出し画像

Blenderのリンク機能とUnityへのエクスポート

3Dアニメーションの制作フローには、モデリング・リギング・アニメーションという工程がありますが、これらを一つのファイルで完結して制作するのはモデルデータを複数のシーンで使いまわしたい場合など不都合が生じることがあります。
ディスク領域が重複データで埋められてしまうばかりか、モデルデータとアニメーションの制作を並行したいとき、途中でモデルデータを編集したいときなど、重複データを作ることで散漫になってしまい管理が難しくなる場合は多いと思います。

この点、ハイエンドな3Dソフトであればリンク機能が存在します。
他のプロジェクトファイルへのリンクする形で、モデルデータを重複させることを防げるわけですが、そうやって作ったアニメーションをUnityにインポートしようとすると普通に行うと上手くできませんでした。

今回はリンク機能を用いて制作したモデルとリグアニメーションをUnityに読み込み再結合させるために必要な手順をまとめました。

今回使用しているバージョンはそれぞれ以下の通りです。
blender 2.83.3
Unity 2019.04.01

アセットの作成 : モデリング&リギング

画像1

人型モデルをつかった例はよく見かけるので、非人物モデルで試します。
ここではシンプルに円柱を作成し、曲がるようリグを作成しただけのモデルを用意します。この時点でポーズモードでリグを動かすとメッシュが曲がるようウェイト調整も済んでいるものとして進めます。

[ model.blend ] として保存しました。

シーンの作成 : リンク&アニメーション

画像2

アセットを動かすシーンファイルを作ります。
[ ファイル > 新規 > 全般 ] から普通に新規ファイルを作成します。

画像3

[ ファイル > リンク ] からアセットにあたる [ model.blend ] を選択します。

画像4

blendファイルは内部にもディレクトリ構造を持っているため、さらに深い階層があります。目的のデータは[ Object ] の中に入っています。メッシュにあたる [ Cylinder ] とリグにあたる [ Armature ]を選択し、リンクを押下します。

画像5

リンクすると別ファイルで作成した円柱とボーンが表示されます。
しかし、この時点ではアーマチュアを選択してもポーズモードに移行することができません。

リンクしたアーマチュアを選択してから、[ オブジェクト > 関係 > プロキシ作成 ... ]を選択します。

画像6

画像7

[ OK? > Make Proxy ] とたずねられるので、クリックしてプロキシを作成します。
[ Armature_proxy ] が作成されました。

画像8

[ Armature_proxy ]を選択し、ポーズモードに切り替えられることが確認できると思います。曲げてみると円柱メッシュがしっかりついてきていることが確認できます。

画像9

画像10

Unityでアニメーションさせることが目的なので、動作がわかるよう適当にアニメーションを作成しておきます。

ここまでの作業を [ scene.blend ]というファイル名で保存しました。

モデルデータをFBXでエクスポート

ここまでの工程でモデルの素体となる[ model.blend ]とアニメーションを付けた [ scene.blend ] の2ファイルができました。
モデルデータとアニメーションデータを個別に書き出します。

[ model.blend ] を開き、書き出したいアーマチュアを選択します。
このアーマチュアにはCylinderのメッシュデータが含まれています。

画像12

この状態でメニューの [ ファイル > エクスポート > FBX (*.fbx) ] を選び、エクスポートの設定画面を表示します。

エクスポートするオブジェクトタイプはアーマチュアとメッシュだけあれば良いので、他のものを除外します。[ Shift ] を押しながら複数選択します。
また、[ アニメーションをベイク ] のチェックを外しておきます。

画像11

ここでは名前を [ cylinder.fbx ]としておきUnityのAssetsフォルダーの中の階層に保存しました。

アニメーションデータをFBXでエクスポート

続いて [ scene.blend ] を開きます。
アニメーションを作る際に生成したproxyだけを選択します。

画像17

モデルのエクスポート時と同じく、[ ファイル > エクスポート > FBX ( *.fbx) ] を選び設定画面を表示します。

FBXの設定は以下の通りです。
[ 選択したオブジェクト ] のチェックを入れる 
[ オブジェクトタイプ ] : [ アーマチュア ] のみ選択
[ アニメーションをベイク ] : チェックを入れる

画像17

※ 選択したオブジェクトのみのチェックを入れ忘れると、リンクしたアーマチュアも含んでしまいProxy側のボーンの名前が変わってしまうので注意が必要です。

ここでは名前を [ cylinder@animation.fbx ]としておき、先程のcylinder.fbxと同階層に保存しました。

※[ @〇〇.fbx ]という命名によりUnityでcylinder@animationのアニメーションプレビューが表示されたりされなかったり。いまいち意味を見いだせないが慣例のため。

Unityでモデルとアニメーションを紐付ける

ここからはUnityの作業です。

プロジェクトのFBX保存場所は以下のようにしています。

画像17

[ cylinder@animation ] を選択した状態でInspector の Rig タブを開き、以下の設定にします。
Animation Type : Generic
Avatar Definition : Create From this Model
Root node : Bone

この状態で[ Apply ]を押下します。 

画像22

設定が反映されるとcylinder@animationにアバターが追加されます。

画像17

ここまでくればモデルとアニメーション一体のFBXをアニメーションさせるときとさほど変わりません。

UnityのProjectで右クリックから[ Create > Animation Controller ] を押下し、Animation Controllerを作成します。

画像18

作成したAnimation Controllerを開き、[ cylinder@animation / animation ] を Animatorビューにドラッグ&ドロップします。
他にモーションがなければ自動でEntryとつながります。

画像19

[ cylinder ] モデルデータをシーンに置き、適当なGame Objectで [ Add Component ] を押下。[ Animator ]を追加します。

画像20

Animator コンポーネントにそれぞれ以下のように指定します。
Controller : 作成したAnimation Controllerを指定
Avatar : cylinder@animationAvatarを指定

画像21

ここまでで設定完了です。
最後にUnityでシーンを実行すると円柱がアニメーションします。

画像22

無事、リンクを使用して作成したBlenderファイルから、アニメーションをエクスポートすることができました。Rigに対応するアバターを作成しなければいけないことを理解できれば、難しい内容ではなかったと思います。

安心してBlenderでリンク機能を使うことができますね。

この記事が気に入ったらサポートをしてみませんか?