球面調和照明-それは何を達成しますか?


8

私の理解から、球面調和関数は、(アプリケーションによっては)照明の特定の側面を近似するために使用されることがあります。

たとえば、方向で使用しているすべてのバンドのSH係数を計算することにより、表面ポイントまたはその一部の指向性光源による拡散照明の原因を概算できるようですサーフェス法線のスケーリングと、スケーリングに必要なもの(たとえば、明るい色の強度、dot(n、l)など)でスケーリングします。

私がまだ理解していないのは、これが達成するはずのものです。通常の方法で拡散BRDFを評価するのとは対照的に、この方法でこれを行うことの実際の利点は何ですか。どこかに計算を保存しますか?通常の評価のスカラー結果から得られないSH表現に含まれる追加情報はありますか?


答えが気に入らないところがあると思うなら、詳しく説明できますか?
concept3d 2013年

回答:


10

球面調和関数を使用する理由は、ある点の周りの入射光の分布を概算するためです。通常は、いくつかのグローバルイルミネーションアルゴリズムによって計算される間接光です。次に、BRDFも球面調和関数で近似され、入射光のSH係数とBRDF SH係数の内積をとることで、観察者が見る出射光を効率的に計算できます。これは、レンダリング式に見られるように、入射光とBRDFの畳み込みを近似します。

点光源からの光のみを受け取りたい場合は、SHは必要ありません。点光源は、BRDFを直接評価するだけで、より正確に処理されます。また、光を受け取りたい固定された環境(空など)がある場合、環境マップのたたみ込みを近似するかなり良い仕事をする(たとえば、CubeMapGenを使用して)事前にたたみ込みキューブマップをオフラインで生成できます。 BRDF。ここでもSHは必要ありません。

SHが本当に役立つのは、複雑なシーンがあり、間接照明、つまりバウンス照明が必要な場合です。この場合、配光は場所によって異なります。原則として、シーン内の各ポイントには、その周囲に基づいて異なる照明環境があります。実際には、グローバルイルミネーションアルゴリズムを使用して、離散ポイントでライティングをサンプリングします。これを行うには多くの方法があります。たとえば、サーフェスの各頂点、またはライトマップの各テクセルでライティングをサンプリングできます。または、グリッドまたは四面体メッシュを使用して、体積表現を作成します。

ポイントは、ライティングがサンプリングされるポイントが多数あるため、メモリの消費を回避するために、ポイントの周囲のライティングの柔軟で非常にコンパクトな表現が必要です。SHはこの役割を適切に果たします。また、補間でうまく機能するという便利な特性もあります。つまり、SH係数は、あるサンプルポイントから別のサンプルポイントに補間でき、その間の照明は適度に動作します。また、一方向からの光だけでなく、入射光の全体的な角度分布をキャプチャするため、法線マッピングされたサーフェスで使用して、かなり良い結果を得ることができます。

ただし、SHは実際には拡散照明にのみ役立つことに注意してください。本当に異常な数のSH係数を使用しない限り、入射光の角度分布がぼやけすぎます。高品質のスペキュラ間接照明の場合、視差を補正したキューブマップや画面空間のレイトレーシングなど、他のものが必要です。


>ポイントは、ライティングがサンプリングされるポイントが多数あるため、メモリの消費を回避するために、ポイントの周囲のライティングの柔軟で非常にコンパクトな表現が必要です。SHはこの役割を適切に果たします<これが私を混乱させています。ポイントの周りの光(これは放射照度ではありませんか?)を通常の強度表現で同様に表すことができ、2バンドSHだけでも4色ごとの係数ですが、強度は合計でわずか3です​​。
TravisG 2013年

さて、具体的な例を見てみましょう。Cryengine3で使用されているライトプロパゲーションボリュームアルゴリズムに、慣れているでしょうか。なぜLPVの照明を強度として表すのが現実的ではないのかと思います。
TravisG 2013年

@TravisG異なる方向からの光の量が異なるため、これは単一のRGB強度値ではありません。この考え方は、特定の方向からの光だけでなく、全方向の平均ではなく、入射光の角度分布を表すことです。左側に緑色のライトがあり、右側に赤色のライトがあるかどうかを検討します。法線マップサーフェスは、法線が左を指す場合は緑、右を指す場合は赤を反映する必要があります。単一のRGB強度はこの状況を表すことができませんが、2または3バンドのSH基底は表すことができます。
Nathan Reed、

@TravisG同様に、LPVと同様に、光が伝播する方向を追跡する必要があります。空気中の粒子などによって散乱されない限り、それは全方向に広がるだけではありません。放出された方向に進み続けます。たとえば、LPVの1つのノードに、右に移動する赤色光と左に移動する緑色光を同時に含めることができます。したがって、各ノードは、ノードを通過する光の角度分布を追跡する必要があります。
Nathan Reed

3

私がまだ理解していないのは、これが達成するはずのものですか?

短い答え、より正確な物理的な光の計算。(いくつかの軽い表面相互作用特性に関して)。

拡散BRDFですべてを通常の方法で評価しないのはなぜですか?

残念ながら、問題は通常の方法の定義内にあります。「通常の」フォン反射モデルは、昔からリアルタイムレンダリングコミュニティに古くから取り入れられており、そのシンプルさがリアルタイムレンダリングの使用に適しているため、事実上の標準となっています。

ただし、実際の光とマテリアルの相互作用は非常に複雑なので、実際には単一のBRDFでモデル化することはできません。

BRDFは、実際の光の相互作用がどのように発生するかを抽象化したものです。phongは他の1つにすぎず、単純さの利点があります。

しかし、実際の利点は何ですか?

コンピュータグラフィックスには、2つの主なカテゴリに分類されるさまざまなBRDFがあります。

  1. 物理理論に基づいています。
  2. 特定のクラスのサーフェスタイプに適合するように設計されており、通常はリア​​ルタイムレンダリングで使用されます。

2番目のカテゴリについて説明すると、各BRDFは、軽い表面の相互作用で特定の特性を達成しようとします。最も単純なBRDFは、表面下散乱をモデル化しようとするLambertianであり、コンピューターグラフィックスでよく使用されます。LambertianBRDFの一定の反射率値は、一般に拡散色と呼ばれます。

リアルタイムコンピュータグラフィックスでは通常、BRDFを手動で選択し、そのパラメータを設定して目的の外観を実現します(たとえば、特定の値でPhongを使用して、プラスチックまたはクロムの表面をモデリングします)。

一方、BRDFは目的の表面から直接測定される場合があります(数学の方程式では表されません)。これにより、他の方法では分析を行うのが難しい、表面に関するはるかに物理的に正確なデータが得られます。

それらのキャプチャーされたデータを適合させる1つの方法は、分析BRDFを選択し、これらのデータをそれに適合させることです。球面調和関数は、それらの測定された量を表し、それらを分析BRDFモデルに適合させるために使用される手法にすぎません。

BRDF理論に最適なリソースは、リアルタイムレンダリングで見つけることができます

  • 7.5 BRDF理論。
  • 球面調和関数については、7.7.2測定BRDFの表現を改訂します。

答えをありがとう、しかし私が探しているものが少し不足しています。私が理解している限り、球面調和関数を使用して任意の関数f(x)を近似することができ、何らかの理由で球面調和関数を使用して照明モデルの一部を近似することを決定します(アプリケーションに正確に依存するものですが、例えば、ランベルト拡散項は何かです)私が頻繁に遭遇したこと)。それがなぜなのか、球面調和関数は同じデータを表す単なる損失の多い表現であるように思えますが、メモリの利点さえありません。
TravisG 2013年

まあ、それはあなたがそれを比較するものに依存します。それを分析モデルと比較すると、より複雑で高価です。ただし、分析モデルではローカル環境は考慮されません。最近では、キューブマップを使用している人がほとんどです。それらは同様の結果を達成し、より優れたハードウェアサポートを備えています。
drxzcl 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.