ZBrushでノーマルマップの作成方法を解説します。
ZBrushのみでノーマルマップを作成するので、その他3Dソフトは使いません。
ただし、ZBrush Coreでは使えない機能を利用するので、Coreユーザーはblenderなどほかのソフトを使って作成しましょう。
具体的には、ZBrushでつくったハイポリゴンメッシュのディティールを、ローポリゴンモデルに転写することを目的にしてノーマルマップを作成します。
なお、ZBrushではノーマルマップのことを法線マップと名付けていますが、この記事中では主にノーマルマップと呼ぶので、ノーマルマップ=法線マップと置き換えて読んでいただければ幸いです。
■ノーマルマップの作成方法
ノーマルマップの作成方法はZBrushにデフォルトで入っている機能のみで可能ですので、他の3Dソフト(Mayaとか、SubPainterとか)は必要ありません。
前提として、ハイポリゴンモデルが既に手元にある状態を想定しています。
1.ハイポリゴンモデルを複製、その後リメッシュ
始めに、ハイポリゴンモデルを複製します。複製後のサブツールパレットは以下のような最低2つになります。
説明に際して、複製元のサブツールをOriginal_mesh、複製したサブツールをLow_meshと命名します。
できれば、この名前に変更して記事の手順に沿って実行してもらうとわかりやすいかと思います。
上のサブツール:元のハイポリゴンモデル。ディティールを転写するときに使用。以下「Original_mesh」。
下のサブツール:複製したもの。こっち側をローポリにし、ディティールを転写していく。以下「Low_mesh」。
以下Low_meshを選択した状態で作業していきます。
まずはLow_meshをローポリゴンモデルにしていきましょう。
ここで作成したローポリゴンモデルが完成のポリゴン数になります。作成したローポリにオリジナルのディティールを転写していくわけです。
例えばunityでは2万頂点に抑えるのが理想だとか言われていますね。
Low_meshで作業を行います。
さっそくリメッシュしていきましょう。リメッシュには皆さんおなじみのZリメッシャーを使います。
[ツール]>[ジオメトリ]>[Zリメッシャー]
複数のサブディビジョンレベルを含んでいる場合はZリメッシャーが使えないので、ダイナメッシュでサブディビジョンレベルを1つにしてからZリメッシャーをかけましょう。
また、左右対称にリメッシュしたい場合は、Xキーでシンメトリが有効になっている状態なのを確認してからリメッシュしてください。
Zリメッシャーの使い方ときれいなトポロジーをつくるコツをまとめたので、リトポする際は以下の記事を参考にしてみてください。確実にクオリティがアップできます。
Zリメッシャーを使用し、今回はポリゴン数を700まで下げました。
次にLow_meshをUV展開していきます。
2.ローポリゴンモデルをUV展開
Low_meshをUV展開していきます。
[Zプラグイン]>[UVマスター]を開きます。
1[クローンで作業を行う]を有効にしてから[アンラップ]でUV展開。
2[UVマスター]>[UVコピー]をクリックできるようになるので、そちらをクリック。
これでメモリ内に作成されたUVマップが保存されます。
なお、[UVマスター]>[平面化]でUVマップが確認できます。
また、UV展開の方法は以下の記事で詳しく書いているので、よりクオリティの高いモデルを作りたい方は参考にしてください。
以上で作成したUVマップは、ローポリゴンのモデルのクローンのUVマップです。サブツールの名前が、「Low_mesh_Clone」になっているので確認できると思います。
このUVマップをクローン元のLow_meshにも貼り付けます。
[ツール]からOriginal_mesh、Low_meshの含まれるツールを選択。※サブツールの表示されている部分のひとつ上のメッシュがたくさん表示されている場所から選択できます。
これでLow_meshのクローンで作成したUVマップを、Low_meshへ貼り付けることができました。
[平面化]でクローンと同じUVマップが貼り付けられているのが確認できます。
UVマップを確認すると、以下のようになっています。
UV展開は完了したので、ディティールを転写していきましょう。
3.ローポリゴンモデルにディティールを転写
Low_meshにOriginal_meshのディティールを転写していきます。
手順は以下の通り。
※Low_meshを選択した状態にする
1.Low_meshのサブディビジョンレベルを上げる(オリジナルより多めのポリゴン数になるように)
2.Original_meshを表示する(Original_meshとLow_meshが同じ位置に重なり合うように表示させる)
3.[ツール]>[サブツール]>[投影]>[全て投影]
サブディビジョンレベルが高いほど転写できるディティールが細かくなります。最低でも3にしておきましょう。
この操作が完了すると、Low_meshは、SubDivレベルが高い状態で、Original_meshと同じような形状になっているはずです。
この段階での画面はこんな感じになります。
[投影]>[距離]を調整することで、ディティールを転写する距離が変わります。
距離が大きくなるほど、より離れた場所を転写することができます。
4.ノーマルマップを生成
転写はできたので、後は転写したディティールをノーマルマップに貼り付けるだけです。
手順は以下の通り
これで作成されたノーマルマップがテクスチャとして複製されました。
テクスチャとして保存は、以下の手順で行います。
保存形式はjpg、png、psdなど多々ありますがどれでも問題ないと思います。
今回出力できたノーマルマップは、以下のようになりました。
■Unityでノーマルマップを貼り付け
作成したノーマルマップをUnityで貼り付けてみました。
なお、Low_meshを出力する際はFBXエクスポートインポートのプラグインを使います。
[Zプラグイン]>[FBXエクスポートインポート]>[エクスポート]
※Low_meshのSubDivを1の状態にするのを忘れずに!!
FBXエクスポートインポート機能は、エクスポートを押した時点でのSubDivレベルがメッシュに適用されます。
そのためSubDivを1にしてからエクスポートしましょう。
出力されたFBXファイルをUnity上で確認すると、以下のようになりました。
ちょっと形と、ポリゴン数が730→952に代わっているのは見ないふりしてくれるとありがたいです。(説明のためにリライトしたためです)
Unityの[Project]>[ImportしたFBXファイル]>[Low_mesh]をクリックすると、画像右下のように頂点数(verts)、三角ポリゴン数(tris)が確認できます。
ノーマルマップの設定がうまくいかない場合は、読み込んだノーマルマップのTexture TypeをDefaultからNormal mapへ変更するとうまくいきます。
あとはマテリアルのNormal mapへ入れるだけ。
適当にマテリアルを追加して、ノーマルマップを設定すると以下のようになりました。
こちら盛り上がっているように見えますがメッシュは1つ上の画像と同じローポリゴンのメッシュになります。
このようにノーマルマップを使うだけで、データ量が軽くてもディティールのあるオブジェクトをつくることができます。ゲームモデルなどに使える方法なのでぜひ使ってみてくださいね。
堀が浅かったのでもう少し強めに彫り込んでも良かったですね。
なお、今回は、ノーマルマップの作成解説でしたが、テクスチャも作成してUnity等で貼り付けることでよりリアルにすることができます。
以下の記事ではテクスチャにマテリアルをベイクする方法を解説していますので気になる方はぜひ参考にしてみてください。
■まとめ
ノーマルマップの画像ファイルをunityやblenderにインポートし、マテリアルに割り当てることで、ハイポリゴンモデルのディティールをローポリゴンモデルに転写することができます。
ゲームやアニメーションなど、なるべく、モデルを軽くしたい場合に有効な手段になりますね。
今回解説した方法がお役に立てれば幸いです。
最後まで読んでいただきありがとうございました。
ZBrushをある程度使えるようになった方におすすめ。人型モデルをつくる際のコツやポイントを解説しています。
スカルプターのための美術解剖学 -Anatomy For Sculptors日本語版-
ZBrushに関する本を比較した記事もあるので興味のある方はぜひ!