ZBrush – 書き出し編
ZBrushで自由に造形したものをローポリ化して、最終的にはUnityへ持って行ってリアルタイムで動かせるようにしたい、ということを試しています。
- ZBrush → Substance Painter → Modo → Unity までの記録(1) : 蟲籠式再稼働
- ZBrush → Substance Painter → Modo → Unity までの記録(2) : ZBrush – お試し編
- ZBrush → Substance Painter → Modo → Unity までの記録(3) : ZBrush – 書き出し編 ←このMEMO
- ZBrush → Substance Painter → Modo → Unity までの記録(4) : Substance Painter – ベイク編
- ZBrush → Substance Painter → Modo → Unity までの記録(5) : Modo – マテリアル設定編
- ZBrush → Substance Painter → Modo → Unity までの記録(6) : Unity – 読み込み編
ローポリ化への挑戦は、造形の段階からさまざまな工夫があると思いますが、その辺は今後も研究していくとして、現段階からとりあえず流れだけでもやってみることを優先して作業を進めてみます。
とりあえず立たせて手を広げる
机に向かって座ってペンを持っていたキャラも動けるようにするには、のちにリグを組み込んであげる必要があるため、立たせて手を広げたポーズにモデリングしておきます。このキャラの場合、体を新たに作り直して頭だけ合体させました。
あとマテリアルも場所ごとに変えてみようと思うので、サブツール上でパーツを頭、体、衣服、ズボン、ヒゲの5つに分けておきました。このヒゲはポリゴンの無駄遣いなのですが、こうしたものが後でどう工夫できるかも研究したいので、あえて1つのパーツとして残してみました。
ZBrushのFBX書き出しは、見えているものだけを対象にして書き出せるようなので、このサブツールをうまく使って、あとでまた必要になりそうなものは、削除せずに非表示のまま残しておくといいと思います。削除はいつでもできますので。
ローポリなのにハイポリに見せたい
ZBrushのブラシをゴリゴリに使って造形したので、このモデルはかなりポリゴン数の多い「ハイポリ」となっています。でも、見た目はできるだけこのままで、可能な限りローポリ化したい、と。
複雑なモデルの場合、リトポロジーという作業を地道に行うことになるため、「いかに手動でリトポしやすいツールを探すか」が肝になりそうですが(Modoのリトポ機能も良さそう)、このくらいのモデルの場合、ZRemesherで、許せる範囲でシェイプアップできるのでないかと思います。
言葉にすると「ローポリメッシュのNormalマップにハイポリ状態をベイクする」(「Normal」はZBrushでは「法線」と訳されてます)という流れをMEMOしておきます。「ベイクする」はSubstance Painterの作業で、ZBrushでは、それに必要な準備(ローポリとハイポリのFBXを書き出す)までを行う感じです。
(UVマップの作成をする際など、もう一工夫すると丁寧な仕上がりになりそうですが、その辺はちょっと乱暴に雑に進めてしまいます。そのため、変な線が入ったり、なんかおしい仕上がりになることもあります)
メッシュを複製してオリジナルをローポリへ転写
5つの各パーツは、ひとつひとつ個別に同様の作業をしていきます。まず「ツール – サブツール – 複製」して、オリジナルを残しつつ、ローポリ化するメッシュを用意します。複製後、オリジナルはしばらく非表示にしておきます。このあと、複製したメッシュにいろいろ作業していますが、なんか失敗したら削除して、この複製作業からいつでもやり直せます。
「ツール – ジオメトリ – Zリメッシャー」で目標ポリゴン数を思い切って「0.1」にし、「Zリメッシャー」ボタンで実行。
現状のメッシュには、UVマップはない状態です。「ツール – UVマップ – 作成 – 平面UV」で作成。
「Zプラグイン – UVマスター – アンラップ」
「ツール – ジオメトリ – ディバイド」で「SubDiv 4」か「SubDiv 3」になるくらいまで押して、いったんローポリになったメッシュをかなりスムーズな細かいメッシュにする
ここまでやったら、オリジナル(複製する元となったメッシュ)を表示して、複製した方を非表示状態のまま選択し、「ツール – サブツール – 投影 – 全て投影」を実行(距離=0.2)
この作業を他のパーツにも実行します。他のパーツにも投影したのがこんな感じです。各パーツをSubDiv 4(あるいは3)で表示しています。
最下位のSubDiv 1で表示するとこんな感じ。
マテリアルを適用
Substance Painterに持って行く準備として、各パーツに適当なマテリアルを適用しておきます。Substance Painterで改めてマテリアルを適用するので、ここでは各パーツごとに異なるマテリアルが適用されていればいいようです。Substance Painterが個別のエリアと認識するのは、メッシュのなんらかのグループごとではなく、マテリアルごとというところが注意ですね。
対象とするパーツを選択して、マテリアルチャンネルに影響を与える「M」をオンにします。マテリアルを変更すると、マテリアルが適用されていないメッシュが全部そのマテリアルで描画されます。
この状態で「カラー – FillObject」で選択しているパーツにマテリアルが適用されます。わかりにくぅっ!
選択されているパーツだけに適用されたことが確認できます。わかりにくぅっ!
他のパーツを選択しなおして、同様にマテリアルを変更してみると、先ほど適用したものはそのままなことがわかります。「カラー – FillObject」で全パーツにマテリアルを適用していきます。
FBX書き出し
いよいよFBX書き出し。Substance Painterでベイクするための書き出しです。ハイポリのFBXとローポリのFBXの2つを書き出します。上記の状態は、各パーツの「ツール – ジオメトリ」が「SubDiv 4」になってるハイポリの方です。
「Zプラグイン – FBXエクスポートインポート」で「表示のみ」「bin」「S法線」をつけて「エクスポート」でファイル名に「_high」をつけて書き出しときます。(識別できるように「_high」としただけで任意です)
各パーツの「ツール – ジオメトリ」を「SubDiv 1」に変更して同様にFBXエクスポート。「_low」をつけて書き出します。
ハイポリFBXとローポリFBXを書き出したら、ZBrushの作業はとりあえずここまで。
次のMEMOでは、Substance Painterでこのモデル用のテクスチャを作成する流れを書こうと思います。
東京造形大学卒業後、マクロメディア(現アドビ)に入社。QAやテクニカルサポートマネージャーとしてFlash、DreamweaverなどのWeb製品を担当。独立後、2007年に虫カゴデザインスタジオ株式会社を設立。2021年東京三鷹を拠点に。最近は、CakePHP、Laravel、Unity、ZBrush、Modo、Adobe Substance 3D、Adobe Firefly、Xcode、Firebaseにフォーカスしています。モバイルアプリ開発情報を主としたブログ「MUSHIKAGO APPS MEMO」の中の人。