MODOからUnityへの出力
https://www.youtube.com/watch?v=2qMHa_-UzHU
MODO 10からはMODOからリアルタイムゲームエンジンへの出力がスムーズに行えるよう、強力な機能がいくつか用意されています。今回はMODOからUnityへとFBX経由でデータを渡す方法について解説していきます。
今までもFBX形式で出力することで、メッシュデータやアニメーションを渡すことはできていましたが、MODO 10からは特別にUnity Materialというマテリアルが追加され、マテリアル情報も出力できるようになっています。これによりMODOでのマテリアル設定がそのままUnity上で再現できるようになるため、Unity上ではなく、MODO上で質感を追求していくことができるようになります。
サンプルとなるシーンにはUVが一つ用意されています。このUVに合わせるようにディフューズ、法線、バンプ用の画像を用意しました。それでは、Unity用のマテリアル設定を行っていきましょう。
レイヤー追加 > カステムマテリアル > Unity Materialを追加し、3枚の画像を追加したら、さらに各エフェクトをUnityの対応するエフェクトへと変更します。
このUnity Materialの適用を確認するには、ビューポートをアドバンストへと切り替える必要があります。
これでMODOからの出力準備は整いましたが、Unityの中へMODOで設定したマテリアルを正しく読み込むためには、インポータのスクリプトが必要になります。まずはUnityの空のプロジェクトを作成しましょう。作成したプロジェクトを見てみると、Assetsというフォルダが作られていますので、この中にEditorというフォルダを作成し、インポータ用のスクリプトMODOMaterialImporter.csをコピーしておきます。これでUnityプロジェクト側の設定は完了です。
ではMODOからFBXを出力してみましょう。
出力タブのゲームプリセットには、あらかじめプリセットとしてUnityが用意されていますので、こちらをUnityへと指定します。ここでは用意されているプリセットを読み込んでさらに調整を加えたり、カスタムのプリセットを保存することもできます。出力ディレクトリに、あらかじめ作成しておいたUnityの空プロジェクトのAssetsフォルダを指定して、このフォルダの中にFBXが出力されるようになります。
今回使用しているサンプルシーンのSimpleGuyには三つのアクションが用意されており、3通りのアニメーションが設定されています。この設定したアクションのアニメーションも全てUnityへと持っていきたい場合には、アニメーションを保存オプションを有効にし、FBXアクション出力タイプをアクションを個別のテイクへ出力に設定しておくと良いでしょう。
ファイルを出力したら、Unityへと移ります。Unityをアクティブにすると、自動的に保存されたアセットが読み込まれるのが確認できます。確認してみると、アクションも全てテイクとして読み込まれています。またSimpleGuyのマテリアルもMODOの中で設定したのと全く同じように設定されているのが確認できます。
MODOの中、もしくは外部のアプリケーションでFBXで使用されている画像データなどを更新すれば、Unityの中でも即座にその修正に対応し、アップデートをかけることができます。これらの設定は、読み込んだFBXファイルと同じ階層にあるファイルを選択することで、Unityのインスペクタで細かい設定を行うことができます。