ゴマちゃんフロンティア

アザラシが大好きなエンジニアの開発日記です

【Unity】Blenderからインポートしたモデルのマテリアル設定方式について

time 2019/04/12

というわけで、今回はUnityにBlenderのモデルをインポートするときのお話です。
Unity2017.2以降、モデルをインポートした時にマテリアルがAsset上に展開されず、組み込まれているマテリアルをそのまま使用するようになりました。
またインポート設定のマテリアルタブから方式を切り替えることができ、従来通りAsset上にマテリアルとして展開させることもできます。

このマテリアル設定タブについて前から気になっていたので、今回いろいろと試してみました!

公式マニュアル

例によって公式のマニュアルを見ればだいたいのことは書いてあるので、目を通しておきましょう。
https://docs.unity3d.com/Manual/FBXImporter-Materials.html

マテリアルの割り当て方式の変更

モデルのインポート設定を開き、「Materials」タブのLocationで設定を変えることができます。

デフォルトでは「Use Embedded Materials」になっています。冒頭でお話した「組み込まれているマテリアルを使用する」状態ですね。
「Use External Materials (Legacy)」を選択すると、従来通りAsset上に展開されたマテリアルを使用する状態になります。

後者の方は堂々と「Legacy」を付けられているので、流れ的には前者を使えということでしょう。
以下「Use Embedded Materials」の方の設定についてお話します。

割り当てるマテリアルの抽出と変更

特に不満がなければ「Use Embedded Materials」のまま使っても良いのですが、マテリアルのシェーダやパラメータを弄る場合は再設定する必要があります。
「Extract Materials」ボタンをクリックすると、モデルに設定されているマテリアルをまとめて抽出することができます。

また、モデルの一部分のマテリアルのみを変更したい場合、モデルのアセットを展開してマテリアルを右クリック→「Extract From Prefab」を選択すると、選択したマテリアルのみを抽出できます。

抽出したマテリアルは「Remapped Materials」の対応するメッシュの項目に設定されます。

ここにマテリアルが設定されている場合はその情報を使用し、設定されていなければモデルに設定されているマテリアルの情報を参照します。
ちなみに割り当てたマテリアルを元に戻したい場合、「Remapped Materialsのマテリアルを選択→BackSpaceキー」でNoneに戻すことができます。

.blendファイルインポート時のテクスチャについて

マテリアルに関連するお話として、「UV展開→マテリアルにテクスチャ設定」のやり方では以下の画像のように「テクスチャを貼ったマテリアル」と「テクスチャ自体のマテリアル」の2つに別れてしまい、テクスチャが上手く反映されません。
なので毎回マテリアルを抽出し、手動でテクスチャを付け替えることになります。ちょっと面倒ですね。

現象について調査したところ、FBX形式でエクスポートすると1つのマテリアルとして認識され、テクスチャも貼られた状態でインポートできるようです。

.blendファイルでも内部的にはFBXインポーターを使っているらしいので問題なさそうですが…謎ですね。
ただUnity公式のマニュアルに「テクスチャは別途インポートしろ」旨が書かれているので、.fbxファイルを直接インポートするのとでは勝手が違うのかもしれないですね。

あとがき

というわけで、モデルをインポートした際のマテリアル設定について確認してみました。
実際のところ、マテリアルを抽出しないとパラメータやシェーダが変えられないのが痛いので、組み込みのマテリアルのまま使用することはほとんどないかと思います。
「Extract Materials」ですべて抽出すれば従来と同じ感覚でマテリアルを扱えるので、あまり気にする必要はなさそうですね。

down

コメントする