Iray Uberシェーダー その1:ディスプレイスメント

Category : Iray Renderer
DAZ Studio 4.8 Pro RC3版が公開され、そろそろ正式版が出そうという時期になりました。
正式版が公開された際には、バージョン4.7とは扱いの点でどう違ってくるのかについて記事にしたいと思っていますが、今回はベータ版のIrayレンダラー用のシェーダー、Iray Uberシェーダーについて、気がついたことをご紹介します。

レンダリングエンジンが違うことが原因で3Delight用のシェーダーの性能を生かせないのは、PoserやRealityプラグインなどを使ったことのある方にはおなじみのことだと思います。
それは残念なのですが、Iray Uberシェーダーはそれを適用する際に前のシェーダーのテクスチャやパラメーターを引き継いでくれます。
大なり小なりマテリアルの調整は必要になってくるのですが、一から設定しなければいけないよりは楽にできると思います。特にスペキュラなどはレンダリング上、割とうまく変換できている気がします。

Iray Uberシェーダーへのとっかかりは以前の記事をご覧いただくとして、そのプロパティの中から今回はディスプレイスメント(Displacement)についてご紹介します。

IrayDisplacement SS

※SubD Displacement Levelプロパティについて記事を訂正しました。

■Irayでのディスプレイスメント

以前の記事で、3Delightレンダラーのディスプレイスメントについて検証したことがありました。
Irayのディスプレイスメントがそれと大きく違うのは、これがメッシュの頂点をテクスチャ画像の明度に従って移動させる機能であるということです。
その記事で使ったテクスチャマップを同じように平面に適用してIrayレンダリングしたのが次の画像です。
IrayDisplacement レンダリング 平面1

この平面は縦横10分割したものなのですが、このディスプレイスメントにはその頂点分の解像度しかありません。
テクスチャマップの解像度をいくら上げようと、16bit深度にしようと同じです。

じゃあ詳細なディスプレイスメントを得るにはどうしたらいいのかというと、メッシュのほうを再分割する、すなわちSubDをかけてやります。
平面に メインメニュー > Edit > Object > Geometry > Convert to SubD を適用してレンダリングしたのが次の画像です。
IrayDisplacement レンダリング 平面2

この場合はSubDレベルが1なので、1回再分割して頂点数は約4倍になっています。
SubDレベルを2に上げるとさらに滑らかになりますが、頂点数はオリジナルの約16倍になります。

ちなみにSubDに関するプロパティは次の通りです。
IrayDisplacement SubDプロパティ
・Resolution LevelBaseで再分割しない(オリジナルメッシュ)、High Resolutionで再分割します。
・View SubD Levelプレビュー時のSubDレベルです。SubDレベルはすなわちメッシュの再分割回数になります。
・Render SubD Level (Minimum)レンダリング時のSubDレベルです。
・SubDivision Algorithm再分割アルゴリズムを選択します。CatmarkのままでOKです。
・Edge Interpolationメッシュの端にあるエッジの処理を選択します。「Soft Corners And Edges」だと端のエッジも他と同じように処理します(縮みます)、「Sharp Edges and Corners」だとカド以外はオリジナルの位置を保ちます、角も含めそのままにしておくのが「Sharp Edges」です。

このメッシュの解像度内でしかディスプレイスメントできないというのはIrayレンダラーに限ったことではなく、CarraraやLuxRenderなどの他のレンダラーでもそうなっていることが多いです。むしろ3Delightレンダラーみたいにテクスチャマップの解像度がそのまま反映される(メッシュの解像度を気にしなくても良い)ものの方が、今では少数派だと思います。

頂点数、そしてポリゴン数というのはレンダリング時間に大きく影響します。特にGPUレンダリングのあるIrayレンダラーではメモリ使用量削減のためにも、無制限にポリゴン数を増やすことはできないのです。
この記事によると、800万三角ポリゴンで1GBもの容量です。)


■バンプ、ディスプレイスメントの調整

では実際にIrayレンダリングをする上で、ディスプレイスメント(おまけでバンプ)の調整はどうすればいいのか例を挙げてご紹介します。

今回は『Domina - Outfit for Genesis 2 Female(s)』のマテリアルを調整してみます。

3Delightレンダラーでレンダリングしたのが次の画像です。
IrayDisplacement レンダリング コルセット 3Delight
プロモ画像と色が違いますが、どうやら大きく設定されたスペキュラの色が原因のようです。
わかりやすいようにディフューズテクスチャを剥がしてスペキュラを小さくすると、次の画像のようになります。
IrayDisplacement レンダリング コルセットB 3Delightレンダ

これをIrayレンダラーに切り替えてレンダリングすると、ジッパーや縫い目の凹凸、生地の細かなシワがなくなってしまいました。このあとIray Uberシェーダーを適用してましたが、そのままでは同じレンダリング結果でした。
IrayDisplacement レンダリング コルセットB Irayレンダ

ジッパーや縫い目の凹凸はディスプレイスメントで形成されたものでした。
そこでIray Uberシェーダーを適用してSurfacesタブを見てみます。

ディスプレイスメントに関するプロパティは次の通りです。
 ・Geometry>Displacementグループ
・Displacement Strengthディスプレイスメントの強度です。ここにテクスチャマップを適用します。
・Minimum Displacementテクスチャ画像の黒(0,0,0)の高さです。
・Maximum Displacementテクスチャ画像の白(255,255,255)の高さです。
・SubD Displacement Levelマテリアルグループ単位でSubDをかけます。そのレベルはオブジェクトにかけるSubDと同じ基準です。

テクスチャ画像の色と凹凸の関係は3Delightと同じですね。
特殊なのが「SubD Displacement Level」です。オブジェクトにSubDをかけなくても、「SubD Displacement Level」を上げることによって限定的に同じ効果が得られます。
ParametersタブのSubDと両方使うことができ、SubDレベルが高い方の値が使われます。

「SubD Displacement Level」を4まで上げたのが次の画像です(ベルトの端の丸みなどを出すためにオブジェクトのSubDレベルも2に上げてあります)。
IrayDisplacement レンダリング コルセットB Irayレンダ ディスプレイス調整

ただし、その部分のポリゴン数は約64倍になることになりますので、注意が必要です。オブジェクト全体にSubDにかけるよりは、サーフェイスグループ単位でSubDをかけられる「SubD Displacement Level」の方が、ポリゴン数は少なくてすむはずです。
※オブジェクト単位でSubDのレベル(最高値)が適用されるとコメントをいただきました。このプロパティはIrayレンダリング時にSubDをかけるためのものとして見た方が良いようです。

生地の細かなシワはバンプマップによるものですので、今度はそちらのプロパティを見てみましょう。
 ・Base>Bumpグループ
・Base Bumpバンプの強度です。ここにテクスチャマップを適用します。
・Normal Map法線マッピングの強度です。ここにテクスチャマップを適用します。

こちらはあっさりしたもので、バンプマップとノーマルマップそれぞれ1つずつしかプロパティがありません。
3Delight用のシェーダーはこれにMax、Minのプロパティがあり、それにStrengthを加えた3つのパラメーターで強度を調整していました。
パラメーターが引き継がれるのはStrengthのみですので、強度が足りず、バンプの効果がはっきりしなかったわけですね。
今回はBase Bumpの数値を5倍(ケースバイケースで違います)にしてやることで、次の画像のように生地のシワが復活しました。
IrayDisplacement レンダリング コルセットB Irayレンダ バンプ調整

ハイライトの色や金属部分のマテリアル調整なども済ませてレンダリングしたのが次の画像です。
IrayDisplacement レンダリング コルセット Iray修正後

今回の例ではそれなりに細かなメッシュだったので理想的に凹凸を作り出すことができましたが、オブジェクトによってはメッシュの元々の解像度が足りず、どうしようもない場合もあります。
それにSubDをかけることで増えるポリゴン数のため、レンダリング時間が増加したり、必要メモリ量が増えたりしてしまいます。私の環境ではグラフィックカードのメモリが2GBしかないので、この服だけでもメモリ容量が厳しかったです。TITAN Xほしー><



今回の素材はこちら

Domina - Outfit for Genesis 2 Female(s)



Comment

No title

お久しぶりです。私もずっと勘違いしてたんですが、surface 単位でsub-Dレベルを調整するのではなく、実際は各surfaceの SubD Displacement Levelのうち、最高の値がメッシュ全体に適用されるようです。 実際簡単にテストしてみたのですが、一つのsurfaceのsub-D
を上げて7に、もう一つは0のままでも、diplacement mapは同じように全体に適用されます。

まだわからないのは、diplacement mapを使わないsurface はどうなってるかですけど。どうも、均一に適用されている気がします。

これはポリゴンがつながっていないsurface group ても同じです。(私の場合2枚のplaneを並べてから、一つのobjとして再インポートして試したので、実質つながってません。こちらのサイトで確認されることが多いと思うので、一応報告です。
(4.8が出た当初からなのか、いつのまにかそうなっていたのかわかりませんが、irayがもともとsurafce単位でdisplacement レベルを調節するようにはなってないようです)

gonzouさんコメントありがとうございます。
やはり自分だけでは網羅できない部分が多くありますので、こういう指摘をいただけると非常に助かります。
私もログを見つつ「1つのサーフェイスにSubDをかけたもの」「すべてのサーフェイスにSubDをかけたもの」「オブジェクト自体にSubDをかけたもの」で確認してみたところ、すべて同じ数のトライアングルがIrayレンダラーに入力されていました。
その結果から記事を訂正させていただきました。
非公開コメント

著書
カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
検索フォーム
プロフィール

Kotozone

Author:Kotozone
製品の取扱説明書を読むのが大好きです

FC2ブックマーク
最新記事
カテゴリ
タグリスト

DSプラグイン V4 マテリアル DSシェーダ ライト DS基本 セール Genesis IBL アニメーション タブ解説 iray LuxRender Genesis2 スクリプト ダイナミッククロス ShaderMixer セットアップ Download レタッチ トゥーン カスタマイズ SSS バージョンアップ Photoshop ウェイトマップ NGM D-Form ERC ファー Miki2 IDL M4 大気 物理シミュレーション ボリューム Terrain パーティクル カラーコレクション Genesis3 モーフセット インスタンス アナグリフ V5 カメラ ロボット RAMDisk ダイナミックヘア Hexagon GIMP 3Dプリント SLG モーションキャプチャ Python K4 Linux 日本語訳 

最新コメント
リンク
月別アーカイブ
ご意見ご感想はこちらに

名前:
メール: 
件名:
本文: 

ブロとも申請フォーム

この人とブロともになる

最新トラックバック
FC2カウンター