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

2026年2月13日金曜日

PBR基礎 エネルギー保存の法則

今回はエネルギー保存の法則についてです。

Arnoldをはじめ、最近のレンダラーについてるPBR系のマテリアルでは標準機能になってるのではないかと思います。

実際どう動いて調整されているのか見てみたいと思います。

エネルギー保存の法則とは

物体が反射・散乱として返す光エネルギーの総量は、入射してきた光エネルギーを超えないという原則です。

自己発光する物体の場合、反射光とは別に発光が加算されるため観測される輝度が入射光より大きく見えることがありますが、発光しない物体では返される光量は必ず入射光以下になるというものです。


テストシーンの準備

エネルギー保存の法則がアーノルドのシェーダーでどんな風に動いてるのか見てみましょう。

Ai Sky Dome LightとSphereのシーンを作ります。

こんな感じです。


Ai Sky Dome LightはColor、Intensityなどはいじらず、Samplesだけ3にしました。

この状態のライトはすべての方向から1の力で光を当てるので、エネルギー保存の法則によりレンダーされた球体の返す色の最大の強さは1になるはずです。

シェーダーはAi Standard Surfaceを使います。

Ai Standard Surfaceのエネルギー保存の動きを見てみる

まず、Diffuseのみを返すシェーダーを準備しました。

BaseのWeightとColorは1(白)に、SpecularのWeightとColorは0(黒)に設定しました。

他のパラメーターは設定変更していません。

これでDiffuseのみ色がつくシェーダーになったはずです。

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

Arnold Render ViewのPixelタブで見てみると、球体にカーソルを合わせるとbeautyとdiffuseの項目は1を返していることがわかります。

1の光を当てたのでDiffuseが1の光を返した。

ここまで問題無いですね。

それではシェーダーにSpecularを足してみます。


SpecularのWeightとColorを1にしました。

Roughnessは0です。

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

Specularの数値が足されましたね。

Diffuseの数値は変えてないはずなのにBeautyは1になってます。

AOV別で見るとdiffuseが0.891に落ちており、specularに0.11という数値が入っているのがわかります。

Specularが足されたため、Standard SurfaceはDiffuseの数値を下げて1を越えないように調整したといえると思います。

これがAi Standard Surfaceにおけるエネルギー保存の挙動になります。

この調整は自動で行われています。

それぞれのAOVの画像も見てみましょう。

こちらはdiffuseのAOVの画像です。

※beautyの例とカーソル位置が違うので数値は違います。

この画像だけだとわかりにくいのですが、外側に行くにつれて少し暗くなっています。

こちらはspecularのAOVの画像です。

※こちらもbeautyの例とカーソル位置が違うので数値は違います。

こちらは外側に行くにつれ明るくなっているのがわかると思います。

specularが明るくなる分だけ、diffuseが暗くなっていくということです。

Pixelタブの数値を見てもらうとピックする場所がどこでも、diffuseとspecularを足すと1なのが確認できると思います。

このような形でArnoldはエネルギー保存のルールを自動で適用してくれてます。

まとめ

以上がエネルギー保存の法則の動きの解説になります。

AOVを増やせば増やすほど複雑な結果になってきますが、自動処理ですので無理なシェーダーを組まない限りは問題ありません。

基本的なPBRのルールを守っていればほとんど意識することなく適用されます。

PBRの基礎をおさえつつ、シェーダーの動きを把握してしっかりハンドリングして質感を設定していけるといいですね!


2026年2月4日水曜日

PBR基礎 フレネル効果

今回はフレネル効果と呼ばれるものについて解説していきます。

見た目の変化を中心に概要を説明します。

フレネル効果とは

視線(カメラ)と表面の角度によって反射の強さが変わる現象のことを言います。

例えば、水たまりを真上から見ると透けて見えますが、斜めから見ると鏡のように空を反射して見えますね。

この現象をフレネル効果と呼びます。

CGでこれがどのように再現されているのか確認してみましょう。

サンプルシーンの説明

こんな感じのサンプルシーンを準備しました。


地面は黒い板でSpecular Roughnessは0.05、IORは1.5です。

ネコにはシンプルなグレーシェーダーをアサインしています。

ライトはAiSkyDomeLightとDirectionalLightの2灯にしており、DomeLightはテクスチャ無しです。

カメラは地面に対してほぼ垂直からほぼ水平になるようなアニメーションがついています。


レンダーしてみる

真上から地面に対して水平になるように移動するカメラでレンダリングしています。

地面に注目してほしいのですが、カメラが地面に対して水平に近づくにつれ、全体が明るくなっていくのが分かると思います。

また猫の反射映り込みも水平になるほど強く鮮明になっていきます。

AOV別に見ていきましょう。

Specularだけ見てみましょう。

Beautyよりわかりやすいですね。

これによりSpecularの強度はカメラの入射角と表面の角度によって変化することがわかると思います。

これがフレネル効果による見た目の変化と言えます。


おまけ

細かい話なのですが、面のピクセルごとのSpecular成分の強さはSpecular AlbedoというAOVで可視化することができます。

レンダー画像を見てみましょう。

このAOVを使うことで、ライティングの影響なく、入射角の違いによるSpecularの変化を分かりやすく確認できます。

業務上ほとんど必要無い確認ですが、実際にどのようにシェーダーが動いてるのか観測するのに便利です。



2026年1月12日月曜日

Yetiのライセンスの通し方

Mayaのグルーミングプラグイン、Yetiのライセンス通し回です。

ライセンスは個人用(Indie)になります。

数年ごとに仕事で買ったりするけど、毎回どうするんだっけってなるのでメモ。

2026/01/22 pgYetiMaya.modの記述が抜けていたので追記

仕様について

いくつかライセンスを通す方法はあるのですが、

今回紹介するやり方はバッチファイル(.bat)を作って、それで起動すればYetiの使えるMayaが立ち上がる方法です。

なぜこうするかと言うと、必要ない時にYetiを読み込むと、MayaシーンにYetiが入り込み、Yetiを読み込んでいないとMayaだとプラグインエラーを吐くからです。

それが結構うっとおしいので使うときだけ読み込むようにこの方式にしています。

あと、環境変数とか深いところに手を入れなくても使えるのも結構お気に入りポイントです。

やりかた

購入後必要なバージョンをダウンロードする。

https://peregrinelabs.com/pages/download

C:\Program Files直下にYetiフォルダを作って解凍したファイルを全部入れる。

メールでライセンスファイルが届くのでそれも入れる

こんな感じになると思います。

フォルダ名がYetiFiveTwoZeroなのはYetiのバージョンごとにフォルダを作成しているからです。管理しやすい名前で問題ありません。

④pgYetiMaya.modの内容を書き換える。

↓今回は以下の記述に書き換え

+ pgYetiMaya 5.2.0 C:\Program Files\YetiFiveTwoZero

⑤テキスト編集ソフトで.batを作成する

です。

テキストの中身は次で紹介します。

.batの中身



アーノルドの記述に関して、たぶんもっといい記述があると思うのですが、ローカル環境でアーノルドのレンダリングに問題が起きてないのでとりあえずこれでよしとしています。

次入れるときはちゃんと調べよう。。。

2025年5月5日月曜日

NatronのACESの設定方法

 無料版Nukeとも呼ばれるオープンソースソフト、Natronの導入とACEScgでレンダーした画像の確認方法の紹介です。

まずはインストール

NATRON

こちらからソフトをダウンロードしてください。

解凍するとWindowsの場合Setup.exeが入っているのでそれでインストールします。


ACESのConfigを手に入れる

今回は1.2をダウンロードして使います。

任意のバージョン、プロジェクトで使っているものでも大丈夫です。

https://github.com/colour-science/OpenColorIO-Configs/releases/tag/v1.2

ダウンロードしてこちらも解凍します。

aces_1.2というフォルダをそのまま

C:\Program Files\Natron\Resources\OpenColorIO-Configs

ここに入れます。


Natronの設定

Natronを起動したらカラーマネージメントの設定をしましょう。

Edit → Preferences

ColorManagementのタブで

Open ColorIO Configurationをace_1.2に変更します。

ACEScgでレンダーしたexrのファイルを読み込んで

ビューワーの上のほうにあるViewew color processをLinear(None)にします。

読み込んだexrのreadノードのOutput ColorspaceをOutput/Output - sRGBに変更します。

これで見た目の設定は完了です。


NatronとArnoldの比較

NatronとArnold Render Viewの見た目を比較してみます。

左がNatron、右はArnoldです。

結果がしっかり一致しているのではないでしょうか。

アセットのルックデブの際の確認にNukeがあると非常に便利なのですが、

なかなかアセットチームまでNukeのライセンスが行き届かないのが現実だったりします。

そういう場合に無料で使えるNatronが便利だったりします。

次のNatron記事でBeautyの構築などについて触れたいと思います。


参考資料

https://discuss.pixls.us/t/using-aces-in-natron/16625




2025年3月7日金曜日

[Arnold][Maya]TX Managerのエラー回避方法

 MayaのTX Managerが最近のバージョンでエラーを吐き機能しないことがありました。

職場環境だとすごい人がどうにかしてくれるのですが、家でとても不便!ということで調べてみたら解決策をやっと見つけたのでメモがてら記事にします。

エラー内容

[mtoa.tx] 0: E:\lib\substanceMaterial\substanceSource\kimono\kimono_Base_Color.tif could not be updated

と出て、.txが作られない。

更に時々エラー吐いてそのままMayaが落ちることがある。

エラー回避方法


TxManagerのTx Optons欄のDefault Options(auto tx)

のチェックを外すとエラー無くtxファイルを作成できます。


解決方法

上記の方法だと根本解決には至りませんね。

どうやらMayaのColor ManagementのOCIOがデフォルトの

<MAYA_RESOURCES>/OCIO-configs/Maya2022-default/config.ocio

だとエラーを起こすようです。

↓この状態


デフォでも必要最低限使えるから業務で求められなければ変えなくていいやって思ってたけど、こちらもちゃんと設定しないといけないなと思いました。



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年11月29日金曜日

[Arnold]シェーダーパラメーター・Metalness金属再現編

以前の記事でMetalnessが何をしてるのか大枠を説明しました。

今回はMetalnessを使って金属の質感を再現する方法について見ていきましょう!


Metalnessを使わない金属の反射の再現方法

金属の反射を再現するのに、フレネル反射モデルで使われるn値とk値の2つのパラメータがあります。これらは、物質の光の反射特性を定義するために使われます。

n値(屈折率): 金属の表面における屈折率を示し、光がその表面に入るときの屈折の度合いを決めます。

k値(消衰係数): 光が金属内部に入ったときの減衰や吸収の度合いを示します。k値が高いと、光がすぐに吸収されるため、表面での反射が強くなります。

この2つの値を使うことで、CGでリアルな金属の見た目、特に色や光沢の正確な表現が可能になります。

アーノルドでは以前これをComplex IORというシェーダーで再現可能でしたが、こちらは現在使えないと思います。

Metalnessの目的

Artist Friendly Metallic Fresnel

↑2014年のこちらの記事が詳しく記載してくれています。

Metalnessは、n値とk値を直接扱う代わりに、もっと直感的に金属の見た目を再現できる仕組みです。

n値 → F0(正面からの反射率)

k値 → F90(斜めからの反射率)

と変換し、アーティストがスライダーや色を設定するだけで、複雑な金属のフレネル効果を簡単にシミュレーションできます。

これにより、物理的に正しい金属表現をアーティストが手軽に行えるようにするのがMetalnessです。

金属再現の際に使う数値一覧とレンダー画像

こちらはアーノルドで金属を再現するための数値表です。

アーノルドユーザーガイドより参照

上の図のリストのようにパラメーターを設定することで現実の金属の計測値をもとに質感を設定することが可能です。

Metalnessを1にしたうえでBase ColorとSpecular Colorにそれぞれの色を入れることが必要です。

金(Gold)に設定するならこんな感じです。


上のアーノルドの表の9つの金属をすべて設定してレンダリングするとこんな感じです。

こうやって見ると白系の金属もそれぞれ結構違いますね。

今回はここまで!

Metalnessをうまく使って金属をかっこよく見せていきましょう!

2024年10月11日金曜日

[Arnold]シェーダーパラメーター・Specular初級編

ArnoldのAi Standard SurfaceのSpecular(鏡面反射)の項目に関してまとめてみました。今回は初級編ということでパラメーターの紹介をしていこうと思います。

Ai Standard SurfaceのSpecularの項目

6項目ありますが極端な話


Roughness以外一旦放置して大丈夫です。
もちろん作成する質感によって調整することはありますが、必要になったら調整する
という考え方がいいと思います。
なんとなくでいじると物理法則から簡単に外れてしまうので根拠をもって調整しましょう。

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

Weight


鏡面反射の強度の調整をできます。
これは基本的に1のままにします。
物質の表面が光を反射するとき、その強度は場所によって変わらず一定であり、鏡面反射のハイライトの強弱はWeightではなく、Roughnessによる表面の細かい凸凹で再現されるべきです。
物理的に正しくない形状の補完(モデリングの省略をした場合)使うこともあります。
例えば人間キャラの鼻や喉の奥がふさがってるのが鏡面反射でばれてしまうのを防ぐために奥の部分はマップを書いて0にすることもあります。


Color


これは特殊な物質を表現するとき以外は白です。
鏡面反射に色がつくものは金属、一部の構造色をもつとされる物質、サテン、ベルベットのような布地等です。
多くのものはライトの光の色をそのままに返しますので白が物理的に正しいです。


Roughnes


物質の表面のザラザラ、ツルツル感を表現します。
これはBumpよりも更に細かい凸凹になります。
数値を上げるほど表面がザラザラになり、鏡面反射が拡散され、弱くなるように見えます。
上記のWeightの項目で書いた通り、鏡面反射の見た目的な強弱はこのパラメーターで調整するべきです。
Roughnessは物質ごとの決まった値は無く、表面処理を再現するものです。
PBR環境においてアーティストが唯一自由に扱える項目と言えるかもしれません。
腕の見せ所です!


IOR


Index of Refractionの略です。日本語で屈折率と呼ばれます。
物質の測定値がだいたいのもので出ているので、再現したい物質の測定値を調べて入れてあげるとよりリアルになります。
しかし、その情報が間違えている場合変な見ためになってしまうこともあるので慎重になるべきです。
プラスチック、塗装、陶器、ゴム等の絶縁体の際は数値で悩むくらいであれば既定値の1.5のままにしてしまうのが無難でしょう。
このIORはTransmision(屈折)にも影響を与えます。
透過物を作成の際は数値でかなり見ためが変わるので、これも気を付けて数値を設定する必要があります。

Anistoropy


異方性反射を再現するのに使います。
金属のブラシ表現、サテン等の布の表現などで使ったりします。

こんな金属の平面を

こんな感じの金属の鍋の底面みたいにすることができます。

詳しい使い方は他の記事で紹介します。


Rotation


異方性反射の方向を制御します。
異方性反射はUVベースで方向がきまり、それを回転させることができます。
なので、同じ方向に延びてほしいもののUVは同じ方向にそろえる必要があります。
ちなみに上の例の画像はこのRotationにRampテクスチャが入っています。

まとめ


これにて初級編は終了です。
Specularはどんなアセットでも調整が必要なパラメーターの一つだと思います。
しっかりコントロールして、良いSpecularの出るアセットが制作できるといいですね。
中級編に続きます!

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年8月27日火曜日

[Arnold]Ai Standard Surfaceで使うテクスチャのColor Space,Bit数早見表

こんなのあったら便利かなという早見表です!

ArnoldのAi Standard Surfaceの各項目にどのColorSpace、Bit数のテクスチャを刺したらいいかの早見表です。

異論は認めます!

※この表はあくまで一例です。絶対正しいというものでもなく、自分の経験、知識をもとに作成しています。個人製作ならこんな感じで使っています。

※業務ではプロジェクトの仕様に従ってください。

この記事を書く際に参考にしてるソフトのバージョン

Maya 2024.2

Arnold MtoA5.4.1

この早見表が想定している仕様

この早見表は以下の仕様を想定して作成しています。

・テクスチャ制作環境のカラースペースはsRGBを想定しています。

・テクスチャのフォーマットはtif,またはpngの8か16bit、Displacementのみexrの32bitを想定しています。tifかpngかはこの早見表の内容的には問題ありませんのでお好みで大丈夫です。

・bit数は最低限確保すべきbit数を記入しています。データが重くてもよければ全部32bitでもいいと思います。ただし、カラー系のテクスチャはColor Spaceが変わる場合があるので注意が必要です。

・Color Spaceはfile nodeのColor Spaceを示しています。


Base

Weight---------------------Raw,8bit

Color-----------------------sRGB,8bit

Diffuse Roughness--------Raw,8bit

Metalness------------------Raw,8bit


Specular

Weight---------------------Raw,8bit

Color-----------------------sRGB,8bit

Roughness-----------------Raw,8bit

IOR-------------------------Texture非推奨

Anistoropy-----------------Raw,8bit

Rotation--------------------Raw,8bit


Transmission

Weight---------------------Raw,8bit

Color-----------------------sRGB,8bit

Depth----------------------Texture非推奨

Scatter---------------------sRGB,8bit

Scatter Anistoroy----------Raw,8bit

Dispression Abbe----------Texture非推奨

Extra Roughness----------Raw,8bit


Subsurface

Weight---------------------Raw,8bit

Subsurface Color----------sRGB,8bit

Radius---------------------Raw,8bit 要確認

Scale-----------------------Texture非推奨

Anistoropy-----------------Raw,8bit


Coat

Weight---------------------Raw,8bit

Color-----------------------sRGB,8bit

IOR-------------------------Texture非推奨

Anistoropy-----------------Raw,8bit

Rotation--------------------Raw,8bit

Normal---------------------Raw,16bit

Coat Affect Color----------Raw,8bit

Coat Affect Roughness----Raw,8bit


Sheen

Weight---------------------Raw,8bit

Color-----------------------sRGB,8bit

Roughness-----------------Raw,8bit


Emission

Weight---------------------Raw,8bit

Color-----------------------sRGB,8bit


ThinFilm

Thickness------------------Raw,8bit

IOR-------------------------Texture非推奨

※Thicknessはテクスチャを必要な数値にリマップする必要あり。


Geometry

Opacity---------------------Raw,8bit

Bump Mapping-------------Raw,8bit

Anistoropy Tangent--------Texture非推奨


Displacement Shader

Displacement---------------Raw,32bit

Vector Displacement-------Raw,32bit

Scale------------------------Texture非推奨


以上です。これ以下の項目はテクスチャを使うことがかなりイレギュラーかと思いますので省きます。

細かい解説はそれぞれのアトリビュートの紹介ページでしていきます。

関連記事

[Arnold]SSS初級編

[Arnold]シェーダーパラメーター・Specular初級編



2024年8月2日金曜日

[Arnold]SSS Set Name

ArnoldでSSSを扱う際にはシェーダーだけでなく、ジオメオトリのアトリビュートも設定する必要があります。

今回はそのいくつかあるアトリビュートの中のひとつ、SSS Set Nameをご紹介します。

(↑の画像はサムネ用です)

SSS Set Nameとは?

SSSのシェーダーを設定している複数のジオメトリが交差するときに交差点が黒くなってしまうことがあります。

これを避けるのにSSS Set Nameを使います。

画像引用元:SSS Set Name - Arnold User Guide

こちらは公式ドキュメントの画像です。

左の画像は球体と棒の交差点が黒くなってしまっているのがわかると思います。

右が設定されている画像で、黒ズミが取れていることがわかります。

多くの場合、左で出ている黒ズミはエラーに見えたり、暗くなって汚く見えたりして取り除きたくなると思います。

その場合にSSS Set Nameを設定してあげます。

SSS Set Nameの設定方法 

アトリビュートの場所は↑の画像の通りです。

ジオメトリのShapeのほうにあります。

それぞれのジオメトリのSSS Set Nameの箇所に同じ名前を入力するだけで機能します。

名前はなんでも大丈夫です。(例 skinとか、アセット名とか)

SSS Set Nameを使ってレンダリングしてみる

キャラのモデルでレンダリングしてみるとどうなるでしょうか?

人のスキャンモデルの口内モデルをレンダリングしてみました。

ちょっとわかりにくいですが、左の画像は歯と歯茎の交差点を中心にオクルージョンのような影が少し入っているような感じで、右はそれが解消されています。

意図したレンダリング結果にするためには必要な項目になりますので覚えておいてください。

それではまた次回!



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にたくさん触れて慣れていきましょう!

また次回!