Arnold の物理学に基づいたレンダリングを理解する

物理法則に基づいてマテリアルを設計すると、現実性や物理的な精度を必要としない場合でも、シェーディングとライティングを大幅に簡略化することができます。いくつかの原則を理解して適用することで、よりリアルなイメージを作成し、異なるライティング設定でも予測どおりに動作するマテリアルを作成できます。

最新のレンダラの物理学に基づいたレンダリングでは、エネルギー保存、物理的に正確な散乱、マテリアルのレイヤ化、リニア カラー スペースを参考にしています。Arnold は物理学に基づいたレンダラーですが、必要に応じて規則を曲げたり、物理法則に合わないマテリアルとライトを作成することもできます。このドキュメントでは、基礎的な理論と、これらの原則に従ってシェーダを設定する方法について説明します。

注:

Arnold は、Substance Painter のようなさまざまなサードパーティのアプリケーションをサポートしています。

フォトンと散乱

レンダリングでは、ライトから発光され、空気中を通り、サーフェスで跳ね返り、ボリュームを通過し、最終的にカメラ センサーで撮影されるフォトンをシミュレートします。カメラ センサーで撮影された数百万のフォトンを組み合わせると、レンダリングされたイメージが形成されます。

つまり、物理的に見ると、サーフェス シェーダはサーフェスとフォトンの関係性を表しています。フォトンがオブジェクトに当たると、吸収されたり、サーフェスで反射したり、サーフェスに沿って屈折したり、オブジェクト内で散乱したりします。これらの要素を組み合わせることにより、幅広いマテリアルが生成されます。

エネルギー保存

オブジェクトがフォトンを発光する光源でもない限り、入射するライトの量よりも多くのエネルギーを返すことはできません。エネルギーを保存するマテリアルを作成する場合、サーフェスから離れるフォトンの数を、入射するフォトンの数以下にする必要があります。マテリアルがエネルギー保存ではない場合、特にグローバル イルミネーションを使用すると、マテリアルが非常に明るくなり、レンダリングでノイズが増加します。

マテリアルのエネルギー保存を維持するには、マテリアル要素のウェイトとカラーが 1 を超えないようにする必要があります。さらに、すべての要素を組み合わせてエネルギー保存できるように注意する必要があります。詳細は後で説明します。

マテリアル

微細なレベルでは、オブジェクトのサーフェスは複雑なディテールをしています。レンダリングの場合、このディテールをすべて表現するジオメトリは使用しません。理解しやすいパラメータを含む統計モデルを使用します。

Arnold の standard_surface シェーダ モデル オブジェクトは、1 つまたは 2 つの鏡面反射光レイヤを持ち、内部で光が拡散反射する構造になっています(または、内部が透明になっています)。このモデルはさまざまなマテリアルを表現することができます。個別の要素について説明します。

拡散反射光とサブサーフェス スキャタリング

最初に、内部の拡散反射光について説明します。入射するフォトンはオブジェクトに取り込まれて内部で散乱し、吸収されたり、別の場所に向けてオブジェクトから移動したりします。

フォトンの散乱が多くなると、フォトンがサーフェスからさまざまな場所や方向に移動するため、拡散反射しているように見えます。スキンのようなマテリアルの場合、フォトンはサーフェスから比較的深くまで散乱するため、非常に柔らかい見た目になります。この場合、「サブサーフェス スキャタリング」を使用してレンダリングします。無加工の木材のようなマテリアルの場合、フォトンはそこまで深くは散乱しないため、見た目は固くなります。この場合、「拡散反射光」としてレンダリングします。葉のような薄いオブジェクトの場合、フォトンはオブジェクトの反対側まで散乱します。この場合、thin_wall を有効にした拡散反射光 sss としてレンダリングします。

注:

根本的には、シェーダでそれぞれのマテリアルに個別のコントロールを設定しても、このようなすべてのマテリアルには基本的に同じ物理メカニズムが適用されます。

また一般的に、内部の拡散反射光はマテリアルの全体的なカラーに最も大きな影響を与えます。各フォトンには波長が関連付けられており、マテリアルの特性に応じて、特定の波長のフォトンが他のフォトンよりも吸収されやすい傾向にあります。つまり、特定の波長のフォトンはサーフェスから発光されやすいため、色付きの外観が表示されます。

多くの場合、赤色のリンゴの皮は赤色のライトを反射します。赤色の波長のみがリンゴの皮の外側に散乱し、他の波長は吸収されます。

エネルギー保存

1 つのフォトンは、「拡散反射光」、「サブサーフェス スキャタリング」、「バックライト」の 1 つの要素にのみ関与できます。物理的な精度を求めるには、入射するフォトンよりも発光されるフォトンを少なくします。Standard Surface の場合、これらの要素の合計が 1 を超えないように自動的に設定されます。

鏡面反射光スキャタリング

specular_roughness: 0 ~ 1

粗さ

鏡面反射光レイヤは、マイクロファセット分布を使用してモデル化されます。サーフェスはさまざまな方向を向いた微小なサーフェスの集まりだと仮定します。鏡など、粗さの値が小さいサーフェスは、サーフェス間の差が少ないため、強く反射します。粗さの値が大きい場合は、サーフェスの差が大きくなるため、柔らかく光沢のある反射が得られます。

リンゴには強い鏡面反射光ハイライトが表れます。テーブルの鏡面反射の幅は広く、光沢はありません (specular_roughness の値は高い)。

散乱した光線によって粗くなる反射

光沢サーフェスです。入射と反射の角度が等しくなります。 拡散反射光サーフェスです。レイの方向がランダムに変化します。

粗さマップ

サーフェスのハイライトのさまざまなバリエーションを取得するには、specular_roughness にマップを接続する必要があります。これはハイライトの明るさだけでなく、環境反射のサイズおよび鮮明さにも影響を与えます。

specular_roughness が低い specular_roughness が高い

(range シェーダを介して) specular_roughness に接続されている「Scratches」テクスチャ

透過

フォトンはサーフェスから反射されるだけでなく、サーフェスに沿って屈折します。フォトンは鏡面反射光レイヤを通過し、レイヤの反対側に到達すると、屈折率(IOR)に応じて方向が変わります。

クリア ガラスなど、サーフェスの内部が透明な場合、フォトンはオブジェクトを通過し、反対側に抜けます。内部で拡散反射する場合、フォトンはオブジェクト内で散乱して、吸収されたり、オブジェクトを再び突き抜けたりします。鏡面反射光レイヤの屈折率が上がると、内部でたくさん拡散反射します。金属のようなマテリアルの場合、鏡面反射光に沿って屈折するフォトンはすぐに吸収されることが多いため、内部の拡散反射光は表示されません。

フレネル

鏡面反射光レイヤで反射または屈折するフォトンの割合は、ビューに応じて変わります。サーフェスの上から見ると多くのライトは屈折し、グレージング角から見るとほとんどのライトが反射します。これはフレネル効果と呼ばれます。屈折率を使用すると、視野角に応じて変化するこの効果を正確に制御できます。

ビュー方向に応じた鏡面反射光 BRDF の変化

不透明度と透過

不透明度 は、テクスチャを使用してサーフェス ジオメトリをモデル化するのに最適な方法です。フォトンとサーフェスの相互関係には影響を与えませんが、サーフェスのジオメトリが存在しない場所と、フォトンがまっすぐ通過する場所が指定されます。

ramp_rgb -> opacity

一般的に、不透明度は、ポリゴン カードから葉の形状を切り取ったり、ヘアの束の先端を透明にしたりなど、スプライト タイプの効果を実現するために使用します。ただし、シーンに不透明度を指定したスプライトが多く含まれると(木の葉など)、レンダリング速度が大幅に低下する可能性があります。

リーフの opacity: 有効 リーフの opacity: 無効 Alpha map -> opacity

transmission_depth も似ていますが、サーフェスではなく、オブジェクト内の密度をコントロールします。密度の高いボリュームは、フォトンが内部を通過するときに多くのフォトンを吸収するので、オブジェクトは暗くなり、厚みが増します。

transmission_color: 白 transmission_color: 明るい青

_Pepe モデルの出典: Daniel M. Lara (Pepeland)。_