しゅみぷろ読者になるしゅみぷろプログラミングとかこの広告は、90日以上更新していないブログに表示しています。Shadingはじめにesprog.hatenablog.com引き続き、CGの基礎的なところをおさらいしていこうと思います。しゅみぷろの内容と関連がありますので参考までに。今回はこちらの本を参考に、シェーディングについてまとめます。あるようなエネルギー$E$を持ちます。$h$はプランク定数です。ここでエネルギーの話をしたのは、光の強さとフォトンの持つエネルギーが密接に関わっているためです。「光源」は連続的にフォトンを放出します。フォトンは真空中を真っ直ぐ移動しますが、原子と衝突することで以下のような影響を受けます。進行方向が変わる進行方向と振動数が変わる原子に吸収されるフォトンに色はありません。人間はフォトンの振動数に応じて色を知覚します。ここで注意すべきことは、振動数が高い(エネルギーが大きい)フォトンほど明るい色だと感じるわけではないということです。物理的なフォトンのエネルギー量のことを「物理量」、それに対して人間が感じる光の量を「測光量(心理量)」と呼び区別します。CGの場合、基礎を物理現象のシミュレーションに置くため、扱う量はほとんどの場合物理量です。レンダリング方程式フォトンの流れ(光の進行)は「束(フォトン束,光束)」といいます。物体表面上のある位置$p$で、ある方向(視点方向)$v$へ出て行く束を$R(p,v)$と表します。$R$のように「ある位置からある方向へ出て行く束」の量を「ラジアンス(放射輝度)」と呼びます。$R(p,v)$は、位置$p$の表面が自ら発光する量$R_{\mathrm{emission}}$と、光源から受けた束を反射する量$R_{\mathrm{reflection}}$の2つの量の和で表すことができます。この式は「レンダリング方程式」と呼ばれます。自然発光しない物体の表面では$R_{\mathrm{emission}}=0$です。レンダリングの目的は、このレンダリング方程式を解くことです。反射面上の各点におけるラジアンスを計算することが目的となります。$R_{\mathrm{emission}}$は物体固有の性質として適当な値を渡してやればいいので深入りする必要はありません。問題は$R_{\mathrm{reflection}}$で、厳密な計算は困難であるため、様々な近似が考えられています。実際にラジアンスを計算してみましょう。簡単のために、1個の点光源がある場合の反射について考えてみます。反射面上の位置$p$から視点方向$v$に反射するラジアンス$R_{\mathrm{reflection}}(p,v)$を計算するには、光源が位置$p$から見て$l$方向にあるとして、この光源から位置$p$に降り注ぐ束を$L(p)$とします。この式は最も単純な反射モデルの例です。