Substance Painter – ベイク編
Substance Painterは、まだそんなに使っていませんが、テクスチャー作成については最強ですよね。とそんなこと思ってたら、つい先日「Allegorithmic つまり、Substance Painter、アドビへ!」こんなことになってビックリです。
ここでは、ZBrushから書き出したローポリFBX(ローメッシュ)とハイポリFBX(ハイメッシュ)を使って、Substance Painterの「Bake Mesh Maps」で、ローメッシュにノーマルマップを焼き付け、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 – ベイク編 ←このMEMO
- ZBrush → Substance Painter → Modo → Unity までの記録(5) : Modo – マテリアル設定編
- ZBrush → Substance Painter → Modo → Unity までの記録(6) : Unity – 読み込み編
ドキュメントの作成
Substance Painterの新規プロジェクト作成時に、ZBrushで作成した、ローポリFBXを「File」で参照して、新規作成します。Templateは「Unity 5 (allegorithmic)」を選んでおきました。
こんな感じでツルッツルのメッシュが読み込まれました。「TEXTURE SET LIST」というところにマテリアルごとの名前が並んでいます。ここに本来「_low」などの命名規則に従って作っておく必要がある、とのことですが、ZBrushでローとハイを作ったからなのか、特別その辺を気にしなくともローとハイが一致するように焼き付けが行えました(なんかわかったら追記します)
焼き付け(ベイク)を行うために「Bake Mesh Maps」を押します。
このダイアログ内で「通常」と訳されているのは「ノーマル」のことです(変な訳!)。今回ノーマルマップのみ焼き付けるので、「通常」にだけチェックし、「High Definition Meshes」のファイルアイコンを押して、ZBrushで書き出したハイポリFBXを指定します。「Max Frontal Distance」と「Max Rear Distance」は「0.2」にします(ZBrushで投影する時の距離を0.2にしたからかな)。
あと、大事なところですが「Match」を「By Mesh Name」にします。その下の命名規則に従って命名してないんですが、なんかこれをしておくことでローポリFBXとハイポリFBX内の一致するパーツを認識するみたい?。逆にこれが「Always」のままだと、変ななります(これ気づくのに時間かかった・・・)
最後に「Bake all texture sets」を押すと、一気に必要なテクスチャを生成してくれます。
ややわかりにくいかもですが、ツルッツルだった頭とかにZBrushのブラシでつけた凹凸が現れました。
Substance Painterでいろいろ作業する
あとは、マテリアルから適当なマテリアルをドラッグアンドドロップで適用してみます。この時、頭、体、衣服など別々のマテリアルを適用できるのですが、もし、メッシュ全体がひとつとして認識される場合は、ZBrushでマテリアルを個々に設定していないからだと思います。
ここで、ブラシなどを使って描き描きしたり、Substance Painterを存分に使います。
レンダリングしてみると、この臨場感。ZBrushとSubstance Painterだけで、もうお腹いっぱいですね。
Unity用の書き出し
Substance Painterで作成したテクスチャをUnity用に書き出します。書き出し形式はテンプレートとして2つ用意されていますが、UnityメタルネスとUnityスペキュラの2つが用意されているようです。どちらでもよさそうですが、ここではスペキュラの方「Unity 5 (Standard Specular)」を選んで書き出してみます。
追記:こちら↓の説明がわかりやすいです
このダイアログの注意点としては、書き出し先のパスに日本語が含まれてると書き出せないバグがあるようです。「ドキュメント」とかが含まれてないかご確認を。
あと、書き出しファイル形式はpngですかね。Unity書き出しの場合、画像数を減らすために、一枚の画像の中のRedチャンネルやAlphaチャンネルに個別の画像を収めていたりします。
エクスポートしたら、そのテクスチャは、Unityで直接使うこともできるかと思いますが、その前にリグやアニメーションの設定を行うために、modoで一度このモデルとテクスチャを再構成してみようと思います。
次のMEMOでは、Substance Painterとmodoについての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」の中の人。