【Unity & Maya】FBX-Exporterを利用したFBXラウンドトリップの使い方

この記事では、UnityとMayaの両アプリケーション間で、モデルの編集、インポート、エクスポートを簡単、効率的に行えるFBXラウンドトリップの使い方を解説します。

◆動作検証環境

・Unity 2020.3.16f1
・Maya Maya LT 2019
・FBX Exporter 4.1.0参考)https://docs.unity.cn/Packages/com.unity.formats.fbx@4.0/manual/integration.html
スポンサードリンク

【Unity】 FBX Exporterのインストールと準備

FBX Exporterのインストール

以前は、Asset Storeからインストールしていましたが、現在はunityのプロジェクト内から設定を行います。

 

[Window]メニューの[Package Manager] を選択します。

 

上部のタブを[Unity Registry]と選択します。

 

下へスクロールすると、FBX Exproterの項目があるので選択します。

 

右下の[Install] を選択します。

 

バージョン番号の横に以下のようにチェックマークがつけばインストール完了です。

 

プロジェクトフォルダ内に、新たにPackagesディレクトリが追加され、その中にFBX Exporterフォルダがあります。

 

FBX Exporterの使用準備

Fbxデータ用のディレクトリの作成

UnityとMaya間でラウンドトリップして利用するデータを扱いやすくするために、Assetsディレクトリ内に新規にディレクトリを作成します。

今回は、Fbxという名前で作成しました。

スポンサードリンク

対象データを扱うディレクトリ指定と、UnityとMayaを関係づける設定

[Edit]→[Project Settings]を選択します。

 

 

  • Export Pathにさきほど作成したディレクトリを指定します。
  • 3D Applicationに、連携させるアプリケーションを指定します(インストールされている対象のアプリケーションが表示されます)
  • Install Unity Integratioを選択します。

 

Install Unity Integratioを選択し、指定されているディレクトリを選択すると、一瞬Mayaが立ち上がり、以下のメッセージが表示され初期設定が完了します。

 

【Maya】 FBX Exporter利用に向けての初期設定

 

次にMayaを立ち上げ、Maya側の初期設定を行います。

MayaにFBX Exporterがインストールされているか確認する

さきほどまでの作業でMayaにFBXExpoterが正常にインストールされていれば、[File]メニューの中に[Unity]の項目が追加されています。

 

Maya側のスケール、fpsの設定

[Windows]-> [Settings/Preferences] -> [Preferences]を選択します。

 

[Settings]を選択し、Unityで使用されるスケールの単位(1マス=1m)に合わせるために、Liner設定を[meter]にします。

また、ゲーム開発ではほとんどのケースで30fpsが利用されるので、それに合わせ設定します。

 

【Unity】 編集対象のオブジェクトをMayaFBX ExporterFBX Exporterする初期設定

 

サンプルオブジェクトの作成

今回は、動作確認のため①planeのステージと、②3つのCylinderのオブジェクトを作成します。

②のオブジェクトには親要素になるようにEnptyObjectを作成します。

 

対象オブジェクトの位置をMayaの原点に合わせる

今回はCylindersを基準に作業をするよう設定します。

 

場所の基準用のEmptyオブジェクトを作成します。

今回はCylinders_pivotとし、3つのCylinderを含むCylindersを子要素とします。

そうすると、Cylindersのポジションは、Cylinders_pivotの相対の値となるため、全て0となります。

 

ステージもCylindersの場所に合わせるため、Cylinders_pivotを複製し、同じポジション情報を持つEmpオブジェクトを作成し、Plane_pivotと名前を変更します。

次にTerrainを子要素として含めます。こちらもPlane_pivot(Cylinders_pivoの場所と同じ)に対しての相対のポジション数値となります。

 

【Unity】 ラウンドトリップ機能を使用しMayaと連携する(Unity→Maya)

 

FBX Exporterをインストールし、オブジェクトを右クリックすると2つの機能が追加されています。

  • Convert To FBX Prefab  Variant
  • Export To FBX

です。

 

Unityからオブジェクトをエクスポートする

まずはステージとして作成したplaneモデルをエクスポートします。

背景等のようにMayaの方でモデル編集の必要がなくても、対象のモデル編集の際に、サイズや背景との組み合わせ等でMaya側で利用したい場合があると思います。

そのような際に利用する機能です。

 

Plane_pivotを右クリックしてExport To FBXを選択します。

 

さきほど作成した、Assets/Fbxディレクトリを指定してエクスポートします。

 

FbxディレクトリにエクスポートしたFbxデータが作成されます。

 

Mayaからオブジェクトをインポートする

[File]->[import]から、さきほどエクスポートしたFBXデータ(unity_project/Assets/Fbx)をMayaでインポートします。

 

これでUnityで作成したステージオブジェクトがMayaにインポートされました。

 

Unityからオブジェクトをプレハブ状態でコンバートする

次にUnityとMaya間で連携して編集できるようにプレハブ状態で、Cylinderのオブジェクトをコンバートします。

 

Cylinders_pivotを右クリックし、Convert To FBX Prefab  Variantを選択します。

 

Convertを選択します。

 

projectディレクトリに、モデルとプレハブが作成されました。

 

Mayaで、Unityでコンバートしたオブジェクトをインポートする

[File] -> [Unity] -> [Import]を選択します。

 

さきほどコンバートしたfbxデータを選択します。

 

これで、コンバートしたデータをMayaに取り込む事ができました。

この時に、Cylinder_pivot_UnityExportSetなど_UnityExportSetの名前となっているセットがあるか確認します。

もし、見当たらない場合は、一度保存、もう一度プロジェクトを開き直します。

 

【Maya】 ラウンドトリップ機能を使用しMayaと連携する(Maya→Unity)

 

コンバートしたデータを編集し、Unityへエクスポートする

 

では、さきほどコンバートしてMayaへ取り込んだデータを編集します。

以下のようにcylinder_1の子要素として、円錐上のオブジェクトを追加しました。

 

Unityのプロジェクトにはなく、Mayaの編集時に追加したオブジェクトがある場合は、追加したものをUnityExportSetに追加する必要があります。

ここのセットに含まれていない情報は、エクスポートしてもUnity側で反映されません

 

編集が終わりましたら、Cylinder_pivot_UnityExportSetを選択し、[File]->[unity]->[Export]を選択します。

 

Unityでシーンを確認すると、編集が反映されている事を確認できます。

 

【Maya】 Maya側で作成したアニメーションをUnityに送る(Maya→Unity)

 

Maya側で編集したモデル同様、アニメーションもUnityと連携する事ができます。

アニメーションはMayaで作成、フィジックスの動きはUnityで設定するなどで開発したい時に便利となります。

Mayaでアニメーションを作成する

今回はオブジェクトを上下させるアニメーションを、キーフレームを利用して作成します。

フレーム0 : TranslateY 0
フレーム60 : TranslateY 0.5
フレーム0 : TranslateY 0

と設定して、Exportします。

 

Unityでアニメーションを確認する

アニメーションがimportされるとTake001といる名前のアニメーションデータが確認できます。

 

importしたモデルのInspector内の[RIg]を選択し、[Generic]をなっている事を確認します。

 

次にInspector内の[Animation]を選択し、Take001の内容が反映されている事を確認します。

 

アニメーションのRigがGenericとなっているので、Hierarchyのモデルにもアニメーション設定が必要となります。

モデルを選択し、Add ComponentからAnimatorを追加します。

 

次に、今作成したアニメーターを動かすコントローラーを作成します。

projectより追加します。

 

作成したコントローラーを開きます。

 

この中に、インポートしたアニメーション(take001)をドラッグ・アンド・ドロップで追加します。

 

設定したコントローラーをアニメーターへ追加します。

 

これでプレイすると先程のアニメーションがUnity側の動作で確認できます。

現在はアニメーションがループされないので、対応させます。

 

【Maya】アトリビューション関係のアニメーションをUnityに送る(Maya→Unity)

 

今回はモデルに可視化のオプションを設定したアニメーションを作成し、Unityと連携する方法を紹介します。

例として、60〜120フレームの間のみ、visibilityを利用し円錐状のオブジェクトが消えるアニメーションを作成しました。

 

これでExportすればUnity側でもアニメーションが反映されます。

 

【Maya】 Maya側で作成したカスタムアトリビュートを利用したアニメーションをUnityに送る(Maya→Unity)

 

Mayaで独自に追加したアトリビュートを利用したアニメーションをUnityと連携する方法を紹介します。

例えば、これまででモデルの上下の動きのアニメーションを作成しました。

これを発展させ、モデルが上がっている時には、さらにこのアニメーション、下がっている時にはさらにこのアニメーションというように、場所情報を取得して他の動きに連動方法となります。

 

カスタムアトリビュートの追加

[Attribute Editor] -> [Attributes] -> [Add Attributes]を選択します。

 

 

 

 

Heightという名前、で作成しました。

 

追加後にchannel boxを確認すると、先程作成したHeightという項目が追加されています。

 

試しに、TranslateYを同じ値を、同じキーフレームで設定しました。

一度Unityへエクスポートします。

次にUnity側の設定を行います。

[Animator]->[Parameters] から追加ボタンを押し、カスタムアトリビューションで指定した[Float]を指定します。

 

先程指定した名前で作成します。

 

アニメーション元のデータを確認すると[Animated Custom Prop]の項目が追加されていますので、チェックします。

 

これでプレイすると、先程追加したパラメーターがMayaで指定してフレームのアニメーション数値を表示している事を確認できます。

 


以上、UnityとMayaの両アプリケーション間で、モデルの編集、インポート、エクスポートを簡単、効率的に行えるFBXラウンドトリップの使い方を解説しました。