MAYAで作ったジオメトリーをZbrushに持って行きてスカルプトしたディスプレイスメントマップを書き出してそれをMAYAに適用する方法を書きました。ノーマルマップの書き出し方法はこちらに書きましたのでこちらも気になった方はご参考にしてください。
MAYAで作ったジオメトリーをUV展開する。
まずは作った物をUV展開しましょ。これをしないといくらZbrushでスカルプトし終わったー!となっても、あれ?UV展開されてなかった!という事になり後々困ります。ZbrushでもUV展開は出来ますがそれよりMAYAで僕は今の所展開してますのでその話はまた今度で。
エクスポートして書き出す。
File→Export Selectionで展開したデータを選んでから、
Files of type:はOBJexportを選んで書き出してください。MAYAでOBJが選べない時はプラグインでOBJを読み込める様にしないとダメです。
ZbrushでOBJデータを読み込む。
Zbrushを起動すると右上のToolより
Importを選んで
MAYAで作ったOBJデータを読み込みます。読み込んだらEditモード(ショートカットTキー)にして編集可能にしてください。
Morph Targetを使う!
MorphTargetというのは一度だけその形状を保存しておく事が出来て、変形前、変形後をボタン1つで交互に切り換えれる機能です。今回Zbrushで簡単な模様をディスプレイスメントマップで作るには、現在のローポリをハイポリにして模様を描き、その後、ローポリとハイポリの差から書き出した白黒画像をMAYAに持って行き使うんですが、その時に差を書き出す時の最初の変形前のローポリが何故かDivid7からDivid1に戻すと、形が変わってしまうんですね。読み込んだ時と、Divid7から1にした時の形状が同じローポリなのに形状が変わってしまうんです。
これだと本当は変形前のローポリに使うはずのディスプレイスメントマップなのに、形状が変わったローポリからハイポリの差の白黒画像が制作されてしまうので、奇麗に使えないという事になります。
これを防ぐために、Morph Targetというのを使い、最初の形状を一度記憶させておくという事なんです。ちょっとややこしいですね・・・。
読み込んだ状態でToolのMorphTargetから「StorMT」を1度押すと現在の形状が記憶されますので、それでOK。
そのまま今度はGeometryのDivideを何回か押して、自分がスカルプトしやすい細かさにしてください。ここだと僕は7です。
こんな感じに細かくなりました!
細かくなたtのでスカルプトして模様を書きました。こんな感じです。本当はグラスを想像してたけど・・・花瓶かな?
ディスプレイスメントマップを書き出す為の設定をします!
ディスプレイスメントマップは先ほども書きましたが、ローポリと、ハイポリから計算された高低差として使える白黒画像を作れる画像で、それを書き出す設定方法を書きますね。
Divideを1にして最初の形状を読み戻す!
ハイポリから一気にローポリのDivideを1にしてください。7を1にします。スライダを動かしてもいいし、ショートカットのshift+Dでもなります。しかしこのままだと、最初の読み込んだ時の形状と違ってるんです。少し歪んでたり膨らんでたり、とにかく違います。違ってるからこのローポリで計算されても奇麗な模様が出来ないんです。
しかし、先ほどMorph Targetで最初の形状を保存しておいたので、その時の記憶を読み戻してあげます。Swithボタンを押すと、形状が変わります。あら不思議!こんな機能があるなら最初からこれを実装してくれよと思うんだけどね・・・。
膨らみが治ったのが分かりますか?最初に読み込んだ時の形状です!
ZpluginのMulti Map Exporterでディスプレイスメントマップを書き出す!
形状をいじるのはこれで以上ですので、今度は高低差として使える白黒画像をZbrushに計算させる為に、ツール上のZpluginの「Multi Map Exporter」をクリックしてください。
クリックするとずらーっと長い表示が出ます。正直こりゃ大変だなと思いますが、そんな事ありません。使う所は限られてます。
ディスプレイスメントマップの設定値
分かる範囲で書いてますが、間違えてたらご指摘お願いします。
①Displacement これをONにすると白黒画像を書き出されます。
その下のExport MeshもONにすると、作ってるローポリデータも保存されます。
②Map Size 書き出されるUV画像の大きさです。数値が大きければ大きい程鮮明になりますがその分重たくなります。今回は2048
③Map Border UV 書き出される白黒画像がUV展開のキワ ギリギリじゃなく余裕をもって自動で幅を増やしてくれますのでエッジがスパット切れたりしなくなる。
④Flip V MAYAではUVが逆さまになるのでそれを直してくれる。
⑤SubDiv level 今回作ったジオメトリーの書き出す細かさを設定出来る。7でスカルプトしたけど、数値を5にすると粗い画像のUVを書き出したり出来る。
⑥Adaptive これをONにするとより奇麗なディスプレイスメントマップの白黒画像が出来る。
⑦SmoothUV スムーズになる。OFFにするとカクカクな白黒画像が出来る。
⑧3 Channels
⑨32bit 奇麗な階調の持った白黒画像が出来る。グラデーションが奇麗になる。
⑩exr 階調の沢山もってる拡張子
⑪Mid 最初は0.5と入ってるので何もない部分もグレーになるが、0にすると真っ黒になる。ここは0にする。
これで「Create ALL Maps」を押せば自動でメッシュデータと、ディスプレイスメントマップが指定場所に保存されます!
MAYAでZbrushで作ったディスプレイスメントマップを貼付けましょう!
ここまで来たら出来たも同然!MAYAに戻り、Importから
書き出したOBJデータを読み込みます。
Hyper shadeを開き、今回はMiaマテリアルにディスプレイスメントマップを使ってみたいので、Miaを選択後、Work Areaの
①SGを選択して、
②横ボタンをクリックしてください。
Attribute editorのSGを表示して、Displacement mat.右にあるチェッカーマークをクリック。
Fileを選び、
フォルダーアイコンに
先ほど出来た.exrのデータを読み込みます。これがディスプレイスメントマップのデータです。
読み込みとWrok Areaがグチャグチャになってると思うので、
ここのボタンを押すとWork Areaが整理され見やすくなります。で、このmiaマテリアルをジオメトリーに設定してあげてください!
ディスプレイスメントマップはMental Rayでレンダリング!
ディスプレイスメントマップはmental rayじゃないとレンダリング結果が表示されないので、レンタリングの環境設定より、
Render Usingからmental rayを選んでください。
レンダリング!
来ましたね〜奇麗に出ました。
細かく見てみましょうか。Zbrushでキワ部分にこんな感じで処理しましたが、
Mayaだとちょっと汚く見えますね。 あれ、ちょっと汚いですね。
ディスプレイスメントマップをスムーズにするApproximation editorの使い方。
なんだかジャギジャギして少し汚く見える部分がありましたが、MAYAでスムーズにする方法があります。
window→Rendering Editors→mental ray→Approximation Editorをクリックして
SubdivisionsからCreateを押します。
するとAttribute aditorにN.subdivisionsという部分に数値が追加されました。
N.subdivisions 3
レンダリング時間 3秒
うーん。柔らかすぎて形状が分からない。
N.subdivisions 4
レンダリング時間 4秒
少し形がでてきましたが、まだZbrushで作った形状と違いますね。
N.subdivisions 5
レンダリング時間 6秒
キワ部分がもうちょっと鋭角になってもらいたいです。
N.subdivisions 6
レンダリング時間16秒
結構良い感じです!が、レンダリング時間が一気に上がりました。
N.subdivisions 7
レンダリング時間 1:06秒
文句のつけ様がないぐらいエッジがシャープでZbrushの画像と同じだと思います!が、レンダリング時間が長過ぎてて使いづらい。
検証結果から、Approximation editorは数値を上げると変なギザギザは無くなり、よりZbrushの近い見た目になりますがレンダリング時間が大幅に上がるという事が分かりましたので、
用途によって数値を使い別ける必要がありそうです。
ZbrushとMAYAをお使いの方は参考にしてみてください。