Modo – マテリアル設定編
ZBrushで作成したローメッシュと、Substance Painterで作成したテクスチャを合わせて、Unity用に書き出す手前までのMEMOです。
- ZBrush → Substance Painter → Modo → Unity までの記録(1) : 蟲籠式再稼働
- ZBrush → Substance Painter → Modo → Unity までの記録(2) : ZBrush – お試し編
- ZBrush → Substance Painter → Modo → Unity までの記録(3) : ZBrush – 書き出し編
- ZBrush → Substance Painter → Modo → Unity までの記録(4) : Substance Painter – ベイク編
- ZBrush → Substance Painter → Modo → Unity までの記録(5) : Modo – マテリアル設定編 ←このMEMO
- ZBrush → Substance Painter → Modo → Unity までの記録(6) : Unity – 読み込み編
Modoのバージョンは、12です
ローポリFBXを読み込み
ZBrushで書き出したローポリFBXファイルをModo12に読み込みます。 読み込みオプションはすべてデフォルトのままです。
読み込むとこんな感じ。アイテムツリー上に各パーツが並びます(いまさらですが、ZBrushのサブツールでちゃんと名前つけておけばよかった)また、マテリアルの情報もシェーディングツリーに見えます。Modo上でSubstance Painterから書き出したテクスチャーを再構成するには、このシェーディングツリーに画像をきちんと並べていきます。(もっと簡単かと思ったら、なかなかの作業が必要。。)
テクスチャーファイルを読み込むために、画像タブをクリックして、「クリップの追加」から「(画像の読み込み)」を選びます。
マテリアルの適用
ここからは、はっきり言ってこのドキュメントを見なければ、何をどこにどうすればいいかさっぱりわかりませんでした。
このドキュメントはSubstance Painterで「Unity 5 (Standard Metallic)」で書き出した感じの記述なのですが、Specularの場合でも同様の属性の変更をしてあげる必要がありそうです。
まず、各パーツ3枚ずつのファイルを書き出しているので、これらの画像をシェーディングツリーの同じ名前のツリーのところにぶら下げます。
まず、上からNormal、SpecularSmoothness、Albedoとなるように並び替えます(この必要ないかもですが)、そして、エフェクトのところから、それぞれ、Unity Normal、Unity Smoothness、Unity Albedoに変更します。
あと、「レイヤー追加 – カスタムマテリアル – Unity Material」を追加して「Material」の上に配置します。これによってUnity書き出ししたマテリアルに対応できるようになるようです。
これら3つの画像のプロパティの「テクスチャロケータ」を見ると、プロジェクションタイプが「立方体」になっているので、それを「UVマップ」に変更し、UVマップ欄を「DiffuseUV」に変更します。
なお、こうしたプロパティ変更作業は、複数選択して、プロパティインスペクタでまとめて設定することが可能です。
次に、NormalとSmoothnessについて「プロパティ – 静止画像」タブにある「カラースペース」を「リニア」にします。これは上記ドキュメントの表で「Colorspace」が「Linear」となっているからです。
Albedoのみ「sRGB」にします。
「Unity Smoothness」のマテリアルは、「Alpha」に収めるようになっているようで、「プロパティ – テクスチャレイヤー」の「スウィズル」をオンにしてアルファチャンネルを「Alpha」に設定する必要があるようです。
この作業を各パーツに対して行います(もうちょい自動でやってくるかと思いましたが、これでもだいぶ自動処理となったんでしょうね^^;)
ちなみに、Substance Painterで「Unity 5 (Standard Metallic)」の方で書き出した場合、ほぼ同様の作業でマテリアル設定できますが、「Unity Metallic」と「Unity Smoothness」が1枚の画像のRedとAlphaのチャンネルに収まっているようなので、この画像は2枚分ドラッグして、それぞれ、「プロパティ – テクスチャレイヤー」の「スウィズル」をオンにしてアルファチャンネルをUnity Metallicは「Red」、Unity Smoothnessは「Alpha」に設定するようです。
Modoでレンダリング
これでようやくSubstance Painterで作成したマテリアルを適用することができました。Modoで一度レンダリングすると、こんな感じです。ちなみに、Unityでリアルタイムにレンダリングされるのは、このレンダリングのクオリティではなく、「アドバンスト」で見えてる状態だということがどっかに書いてありました。
あとは存分にModoの機能を使い倒して、Unityのアセット用として出力してあげればいいはずです。
Modoでやれることはかなり豊富なので(アニメーションとか)、今後やっていくとして、仕上がったこのモデルやModo自体で作成したものをUnityのアセットとして、どのように出力するかだけ最後にやっておこうと思います。
次回は、ついにModoからアセット書き出しをして、Unityで読み込むところまでをMEMOしようと思います。
東京造形大学卒業後、マクロメディア(現アドビ)に入社。QAやテクニカルサポートマネージャーとしてFlash、DreamweaverなどのWeb製品を担当。独立後、2007年に虫カゴデザインスタジオ株式会社を設立。2021年東京三鷹を拠点に。最近は、Unity, Unity Netcode for GameObjects, CakePHP, Laravel, ZBrush, Modo, Adobe Substance 3D, Adobe Firefly, Xcode, Apple Vision Pro, Firebaseにフォーカスしています。モバイルアプリ開発情報を主としたブログ「MUSHIKAGO APPS MEMO」の中の人。