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の中身



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

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