本日はUnity枠です。
先日お仕事でほかのエンジニアと話している中で、Unityにインポートしたfbxのマテリアルがパラメータの変更やShaderの変更ができないという話題になりました。
fbxという形式やUnity内でのマテリアルのUnpackに関して今回まとめます。
〇FBXとは?
FBXはFilmboxというファイル名でその名の通りFilmboxというソフトで扱われるデータ形式でした。(Wardにおける .wordのようなもの)
これはカナダの会社の製品でしたが、Autodesk社によって買収され、現在はMotionBuilderとして提供されています。
MotionBuilderはアニメーション作成やモーションキャプチャのデータに特化したソフトウェアで、映画撮影や3Dのゲーム等で用いられています。
fbxはこのモーションキャプチャデータを扱うためにもともと使用されていた拡張子になります。
2022年現時点でfbxは次の情報を保持できます。
・メッシュ
・アーマーチュア
・ライト
・カメラ
・マテリアル
・テクスチャ
・アニメーション
fbxをUnityなどにインポートすることによってそれぞれ対応するコンポーネントに置き換えられます。
例えばカメラはUnityのカメラコンポーネントに置き換わります。
またBlender等で作成したモデルをエクスポートするときなどにも関わってくるのですが、fbxではShader情報をエクスポートすることはできません。(その他ほぼすべての拡張子も同様)
Shaderは実行環境やソフトウェアに依存しているため、BlenderではBlenderのUnityではUnityの独自のShaderに置き換えられます。
Unityの場合デフォルトでUnityStandardShader、URPの場合はUnivarsal/Litシェーダーに置き換えられます。
〇Unityでのfbxの扱い
Unityへfbxモデルをインポートすることでマテリアルもインポートされます。
しかし、デフォルトの状態ではインポートされたマテリアルのパラメータを編集することができません。
Unity内でfbxが保持しているマテリアルをエクスポートするためにはAssetsフォルダ内でfbxファイルを選択しインスペクターウィンドウから[Material]タブ→[Extract Materials]を選択します。
フォルダが開き、エクスポート先を指定します。
これによってAssets内の指定したフォルダにマテリアルがエクスポートされます。
一度[Extract Materials]を実行することでfbxからマテリアルが完全にエクスポートされるため、以前は変更不可であったマテリアルパラメーターが編集可能になっています。
以上でfbxの保持できる情報とUnityでのマテリアルのエクスポートに関してまとめました。