ラベル Displacement の投稿を表示しています。 すべての投稿を表示
ラベル Displacement の投稿を表示しています。 すべての投稿を表示

2025年2月28日金曜日

[Tips][Zbrush]ZbrushからVector Displacementを書き出す方法

 今回はZbrushからVector Displacementを書き出す方法を紹介します。

こんな感じのレンダリングができるマップを書き出しますよ!


Zbrushの設定

Map書き出しのために先にZbrushの設定を確認します。

Preference

>Import Export

>>Vector Displacement

>>>Flip And Switch1

>>>Tangent Flip And Switch25

次にmulti map exporterの設定を確認します。


Vector Displacementの欄、基本全部Onにしています。

設定が完了したらCreate All Mapsで書き出しします。



これで書き出すとこんな感じのマップが書き出されます!

おまけ

過去に自分が作成したZbrushからのマップ書き出しからMaya、Arnoldレンダリングまでの動画があります。


アサイン方法は別記事でアップ予定ですが、先に知りたい方などはこちらの動画をご覧ください~

※動画でFlip And Switch,Tangent Flip And Switchの数値を11,11で紹介していますが、少し古い知識です。

最近はこの記事で紹介しているようも1,25を推奨しています。

一応概要欄にも書いてますが、動画を修正する気力がなくてそのままです。すみません。。

関連記事



2025年2月19日水曜日

VectorDisplacementとは

今回はVector Displacementについて紹介していきます。

板ポリからこんな感じで形状を起こせるものになってます!

それでは見ていきましょう。

VectorDisplacementとは?

モノクロのDisplacement Mapは法線方向への頂点移動で形状を変化させますが、VectorDisplacementは法線方向以外にも頂点を移動させることができます。

実際にマップを作成してレンダーしてみましょう。

Zbrushで作ったモデルがこちら

この形状をDisplacementで再現します。



板ポリを準備してArnoldでレンダリングするとこんな感じです。

当然平坦です。

これにZbrushで書き出したVector Displacementをアサインすると

こうなります!

形状が再現できていますね!

ちなみに通常のDisplacementも書き出してみると

こんな感じになります。

アーチがつぶれちゃってるのがわかるかと思います。

これがDisplacementとVector Displacementの違いです。

Mapの見た目


左がVector Displacement Map、右がDisplacement Mapです。

Vectorは3軸あるので、RGBの3チャンネル持ったマップになります。

ちなみにこのVector Displacement MapはTangent Spaceです。

Vector Spaceについては次で説明します。


Vector DisplacementのVector Space


Vector DispalcementにはVector Spaceというものがあります。

これはどの座標系を基準にVector Displacementを適用するかを定義するものです。

MayaのDisplacement Shaderだとここにあります。


Vector Spaceは3種類あります。

Tangent Space

アニメーションされたキャラなどに適用するのに最適なものです。

業務ではこれしか使ったことがありません。

Object Space

動かないものに適用することができるものです。

アニメーションには向きません。

World Space

シーン全体のワールド座標を基準として適用します。

特殊な表現をする場合に使えるかも?


Tangent以外は使用したことがないのですが、基本的にTangentにすれば普通のテクスチャと同じように扱えるので管理もしやすいと思います。


プロダクションモデルの注意点

Vector Displacementの形状再現度の高さはわかっていただけたかと思います。

しかし、業務では大きな形状変化はほとんど使わないと思います。

アニメーションモデルから形状が大きく変わると、アニメーションがOKになってライティングして、レンダリングしてみると思わぬめり込み、エラーが発生することがあります。

Vector Displacementを使うとしても、通常のDisplacementを使うとしても、アニメーションモデルからシルエットが大きく変わらないように作成するべきと考えてます。

なるだけ大きい形状はポリゴンで作成して、細かい形状(鱗、皮膚のシワなど)の再現に使うといいでしょう。

ZBrushからの書き出し方は別記事で紹介します!

関連記事

[Arnold][チュートリアル]SSS「デジタルエミリーにスキンシェーダーを設定してレンダーしてみる編」



2024年9月20日金曜日

[Arnold][Tips]複数のDisplacementMapをMayaで合成する方法

違うソフトで作成した複数種類のDsiplacementを合成したい!ということがよくあると思います。

今回はそれを簡単に紹介します!


Ai Addを使う

この二枚を合成します。(このプレビューテクスチャは視認性を上げています。)

それぞれレンダリングするとこんな感じです。

    

この二枚の画像のDisplacementを合成して一緒に反映させましょう。

Ai Addノードを作成して



このようにノードをつなぎます。

このDisplacementは中間値が0のものですので、シンプルにadd(足し算)で大丈夫です。

これでレンダーすると

こうなります!

簡単ですね!

Ai Addじゃなくても2つのInputを足し算するノードがあれば同じ結果になるはずです。

Displacementの中間値の確認

各ソフトでDisplacementを作成する際にそのマップの基準値を気にする必要があります。

ZbrushでDisplacementを書き出す際にはこちらのパラメーターを設定します。


読み込んだマップの中間値をアーノルドに指定してあげるのはここです。


Displacementは変形する際に基準値から高い数値は膨らみ、低い数値はへこみます。

もし中間値が0.5と0のDisplacementマップがあった場合はaddで合成して、アーノルドの中間値の設定を0.5にしてあげれば大丈夫です。

うまく使いこなして表現力を上げていけるといいですね!

それではまた次回!

2024年5月4日土曜日

[Arnold][チュートリアル]SSS「デジタルエミリーにスキンシェーダーを設定してレンダーしてみる編」

(2024/10/05 カラーテクスチャ、HDRIのColor Spaceが間違えていたので修正、画像の差し替え) 


今回はデジタルエミリーのレンダー画像をレンダーするまでの諸々の設定を紹介します。

なるだけどうしてこうしてるのか説明しながら進めていこうと思います。

こんな感じのレンダー画像を作っていきます。

前回と違う点はHDRをフリーのものにしたのと、目のシェーダー設定の説明はこの記事では省きたかったためグレーマテリアルにしています。

スキャンモデルでシェーダーの勉強をするメリットは、形状情報がある程度物理的に再現されてる保証があるということです。

シェーダーでできること、形状(スカルプト等)でできることを切り分けて考えられるようになると思います。そうするとモデルを1から作成した際にあなたのモデルの何が足りてないのかが見えてくるようになると思いますので重要なプロセスだと考えます。

使用ソフトウェアとデータ

Maya 2022.5

Arnold MtoA5.3.3.1

Model Data digital emily 2

https://vgl.ict.usc.edu/Data/DigitalEmily2/

モデルはこちらからお借りしてます。感謝!

https://polyhaven.com/a/cyclorama_hard_light

HDRはこちらを利用してます!


モデルの設定

Emily_2_1.objをmayaに読み込みましょう。

このモデルはフルスケール(実寸)ですのでサイズはこのままで大丈夫です。

Subdivisionの設定をしていきます。

設定内容はこちらの記事で紹介した通りです。

↑こんな感じです。

Iterationsの数値は高いほどレンダーが重くなります。

後程設定するDisplacementをアサインするものは4、アサインしないものは2でいいかもしれません。

ColorManagementの設定

カラースペースをACEScgにしてレンダリングしたいので設定を確認しましょう。

今回使用するMayaのバージョンだとデフォで設定されています。

↑こんな感じです。

View(Transform)はMayaが古いバージョンだとACES RRTみたいな感じのものがこれと同じ設定になると思います。

ライトの設定

Ai Sky Dome Lightを作成します。

今回使うHDRIはこちらです。

HDRIをHypershadeにドラッグ&ドロップします。HDRIテクスチャのカラースペースはscene-linear Rec,709-sRGBです。

ColorにこのHDRIを刺します。

Samplesに上げておきます。

レンダー設定

一度レンダー設定をします。

過去記事で紹介したレンダー設定のスクリプトを走らせます。

必要に応じてレンダリングしながら設定は変えていきます。

AOVの設定はこの記事では省きます。

シェーダー設定

今回はEmily_head以外の設定を省きたいのでまずベースのグレーマテリアルを作成します。

Ai Standard Surfaceを作成して以下の設定にしています。

これを一度全部にアサインします。

次にEmily_head用のシェーダーを準備しましょう

もう一つAi Standard Surfaceを作成して顔のジオメトリにアサインします。

まずはカラーテクチャを入れていきましょう。

今回のDLしたデータだと眉毛や髪の毛の毛根のあるカラーテクスチャとそれを省かれてるカラーテクスチャがあるので、省かれてる方を使います。

Color_unpaintedのほうの00_diffuse_unlit_unpainted.exrを読み込んでSubsurface Colorに刺します。

このテクスチャはexrなのでscene-linear Rec,709-sRGBにColor Spaceを設定します。

tif,pngなどでカラーテクスチャを作成する場合は大抵sRGBに設定することになると思います。

作成したテクスチャをどのColor Spaceで使うと狙い通りになるのかはちゃんと把握しながらテクスチャを作成する必要があります。

他にDLデータにはScatterマップとSpecularマップも入っているのですが、今回は利用しません。

ScatterマップはSubsurfaceのWeightに差し込む想定と思われますが、ArnoldのAi Standard Surfaceの場合SSSはきれいな肌の場合はWeightは1にして、Radiusのほうで強弱をつけるほうが物理的に正しくなると考えられます。

肌の表面に汚れ(土とか、血とか)がついてる場合、濃いめの化粧をしてる場合にマスクを使ってSubsurfaceのWeightを調整するのが望ましいと考えられます。

次にSpecularマップですが、これはSpecularのWeightに刺す想定と思われます。

しかし、多くの物資は光が当たって反射されるエネルギー量は箇所によって変化は無いはずです。

肌の表面のザラザラ具合、ツルツル具合で質感(鏡面反射と影)が変わるので、これはDisplacement,Bumpによる形状ディテールと、SpecularのRoughnessによるマイクロディテールで再現されるべきです。

この場合付属してるSpecularマップを編集してRoughnessマップとしていい感じにするとよいと思います。

今回はそこまでしません。

RoughnessIORを数値で設定します。

今のところカラーテクスチャのみを使っています。

一度レンダリングしてみましょう。

SSSが強すぎるて肌がかなり透けてしまっているようですね。調整していきましょう。

ScaleRadiusを調整します。

ここではアーノルドユーザーガイドにのってるパラメーターを拝借します。参照元

このヒントを参考に設定します。

Scaleは1だと強すぎる印象だったので0.1にしたところ丁度良さそうでした。

質感調整の際にScaleRadiusは両方をいじらず、Scaleは固定して、Radiusに集中したほうがいいでしょう。

これでレンダーしてみます。

一気に人っぽくなりましたね。

SSSのサンプルが足りなさ過ぎて画面がジャギジャギしてますね。

レンダー設定を変更します。

SamplingSSSの数値を1から3に上げます。レンダーしてみましょう。

これでディテールが確認しやすくなりました。

肌の感じはよさそうですね。これでSSSの設定は完了です。

次にDisplacementマップを設定していきましょう。

Displacementは00_displacement.exr00_displacement_micro.exrの二枚が付属しています。

これは両方使います。

二枚のDisplacementマップをMayaのHypershade上で合成します。

一枚ずつどんな情報が入ってるのかを確認しましょう。

まずは00_displacement.exrを設定していきましょう

HyperShadeでDisplacement Shaderを作成しましょう。

マップも読み込んで、RチャンネルをDisplacementに差し込みます。

レンダーしてみましょう

細かい凹凸や眉頭あたりの隆起などが追加されてよりいい感じになってきました。

次にDisplacement_microも設定していきましょう。

このmicroにどういう情報が入っているのか確認します。

Displacementマップをmicroに差し替えてレンダーしてみます。

ちょっとけばけばしてるように見えますね。

Displacementの強度が強いようなので調整します。

どれくらい弱めればいいの?ってなりますが、自分で1から作ってるモデルならAOVsのNとSpecularを見ながら微調整をする形になります。

今回はデータ配布元でMicroは0.01倍すると書いてるのでそれに一度従ってみましょう。

HypershadeでAi Multiplyを作成し0.01を乗算します。

レンダーするとこんな感じです。

これでよさそうですね。

Microマップは名前の通りかなりかなり小さい凹凸を表現してるマップのようです。

そうしたらこの二枚のDisplacementマップをHyperShadeで合成して使いましょう。

Ai Addを作成し、2つのDisplacementマップを刺して合成し、OutColorのRチャンネルをDisplacementに刺してあげましょう。

これでレンダーするとこんな感じです。

これで完成です!お疲れ様でした!

もっとよくするには?

さて、今回は配布データをもとになるだけPBRに沿った形式で簡易的に質感を付けてみました。

もっとリアルにしたい場合にはどうすればいいでしょうか?

・ラフネスマップを作成し場所によるスペキュラの強さの違いを出す。例えば唇はもう少しプルっとしていてもいかもしれません。

・SSSRadiusのマップを作成、SSSの強度の場所による違いを出す。例えば瞼は周りはSSSが強く出てしまっているので、もう少し弱くしてあげたほうが自然に見えるかもしません。

他にも実際の人間の写真、自分の顔と見比べるといろいろ違和感が出てくるでしょう。それをひとつずつ向き合って解決していくことでリアルなCGに少しずつ近づいていけるのではないかと思います。

地道な積み重ねですので、SSSにたくさん触れて慣れていきましょう!

また次回!

2024年3月1日金曜日

[Arnold]Displacement初級編

 Displacementは最近かなり手軽に使えるものになってきました。

CGでディテールのあるリアルなものを表現するには必須な項目とも言えるのではないかと思います。

このページではDisplacementとは何かのお話と、Maya,Arnoldでの使い方を紹介していきます。

使用ソフトウェアとデータ

Maya 2022.5

Arnold MtoA5.3.3.1

Model Data digital emily 2

https://vgl.ict.usc.edu/Data/DigitalEmily2/

モデルはこちらからお借りしてます。

Displacementとは

Displacementとはオブジェクトにテクスチャを張ることにより、ビューポート上のポリゴンよりもかなり高い解像度でディテルを再現することができるCGのシェーダー表現です。

Normal Map、Bump Mapはライトの影響をシェーディングに反映させるだけですが、Displacementは形状変化させます。

上の画像は左がNormal Map、右がDisplacement Mapをアサインしている球体です。

Displacementのほうがシルエットが崩れてるのがわかるかと思います。

Displacement Mapの種類

Displacementはグレースケール(一色)のものVector Dispalacementと呼ばれる3色のものの二種類があります。

この記事では一旦ベクターは置いておきます。別記事で紹介します。

グレースケールのDisplacementにも大まかに二種類あります。

それは中間値が0か0.5かというものです。

Displacementは中間値を基準にそれより明るければふくらみ、それより暗ければへこみます。

上の岩っぽいレンダー画像で使ったDisplacement画像がこちらです。

これは中間値(mid)0.5のものになります。

ディーテルを追加するときによく使われるBump Mapと同じ仕様です。

上の画像は中間値0のものです。

この画像はDigital Emilyのモデルに付属してるDisplacementマップです(ブログに張るように1kに落としてjpegですが見た目はこんな感じです。)

exrの32bit Floatという形式であればマイナス値や1以上の値も格納できますのでこういった見た目の画像になります。

マイナス値の確認は通常のビューワーではできないので少しわかりにくいですが、黒く見える部分にも情報が入っています。

Nukeで確認するとこんな感じです。

マイナス値が入っていることがわかります。

次の項で中間値の設定も含めた使い方を紹介します。

Maya,Arnoldでの使い方

それではMaya,Arnoldでの使い方を見ていきましょう。

今回は↑で紹介してるDigital Emilyさんを使わせていただきます。

Displacementを入れてないとこんな感じのレンダリングになります。

それでは設定しましょう。

①Displacement Shaderを作成

Tabから検索してもいいですし、上記の画像の場所から呼び出すこともできます。

②Shaderにつなぐ

ジオメトリにアサインしてるシェーダーのSG(Shading Engine)のDisplacement Shaderの差し込み口に刺します。

Displacement Shaderを作った際にできたSGは捨てて大丈夫です。


③Displacement MapのMidの確認

この画像は上記の通り中間値0のDisplacementです。

Displacementのシェーダーの中間値の設定は↓の画像の通りです。

Scalar Zero Valueが中間値になります。今回は0ですね。

デフォルトでチェックが入っているAuto Bumpはこのまま入れておいて大丈夫です。

Auto Bumpの細かい説明はまた別記事で紹介します。


④Displacement MapをDisplacement Shaderにつなぐ


Displacement MapをHyperShadeに読み込んでOut Color RをDisplacement ShaderのDisplacementに刺します。

Out Color Rをつなぐ方法のほかにAlpha is luminaceにチェックを入れてOut Alphaでつなぐ方法もあります。

こだわりが無いのならOut Color Rでつなぐ方が見た目もシンプルですし、エラー確認もしやすいのでオススメです。

Displacement MapのテクスチャのColor Spaceの設定はRawです。

Ignore Color Space File Rulesはチェックを入れておくと事故が減ります。


⑤Geometry(モデル)のSmooth設定


DisplacementをかけるGeometry(モデル)にも必要な設定をします。

Arnoldタブ→Subdivisionタブで設定していきます。

パラメーターは↓で紹介します。

---------------------------------------------

Type catclarkにします。

Iterations 今回は4にしています。数字を大きくするほどDisplacementの精度は上がりますが重くなります。コストとクオリティのバランスを見ながら設定します。

UV Smoothing 今回はpin_cornersにしました。スカルプトなど自分で作成したDisplacement Mapをアサインする際は作成方法に合わせた設定が必要です。

⑥レンダリングする

ここまで設定してレンダリングするとこうなります。

ディテールが入ってるのがわかりますね!

Displacementを使いこなすことでかなり表現の幅が広がるんじゃないかと思います。


関連記事

[Arnold][チュートリアル]SSS「デジタルエミリーにスキンシェーダーを設定してレンダーしてみる編」

[Arnold][Tips]複数のDisplacementMapをMayaで合成する方法

VectorDisplacementとは