レンダリング方程式の変数変換
このページは レイトレ Advent Calendar 2017 の記事である. 本ページでは,レンダリング方程式の変数変換について考える.
記号について
本ページでは以下の記号は定義済として扱う.
記号 | 説明 |
---|---|
\(\omega_{n}\) | 単位法線ベクトル |
\(\omega_{i}\) | 入射方向の単位ベクトル |
\(\omega_{o}\) | 反射方向の単位ベクトル |
\(L_{o}\) | ある点からの反射光の放射輝度 |
\(L_{e}\) | ある点が自発光している場合の放射輝度 |
\(L_{i}\) | ある点への入射光の放射輝度 |
\(S^{2}\) | 半球上の微小立体角の集合 |
\(M\) | 空間中にある物体上の微小面積の集合 |
\(f_{r}\) | BRDF |
微小立体角を積分する形のレンダリング方程式は式1で表される.
\[ \begin{align} L_{o} \left( x, \boldsymbol{\omega_{o}} \right) = L_{e} \left( x, \boldsymbol{\omega_{o}} \right) + \int_{S^{2}} f_{r} \left( x, \boldsymbol{\omega_{i}}, \boldsymbol{\omega_{o}} \right) L_{i} \left( x, \boldsymbol{\omega_{i}} \right) cos \theta_{\omega_{n}} d \sigma \left( \boldsymbol{\omega_{i}} \right) \tag{1} \end{align} \]
式1では, 方向 \(\omega_{i}\) を中心とした微小立体角を半球上で積分することによって 放射輝度の計算を行っている.
一方で,入射方向 \(\omega_{i}\) ,出射方向 \(\omega_{o}\) の代わりに, 下図のように空間中の3点を接続する形のレンダリング方程式を考えることもできる.
3点接続のレンダリング方程式では, 点 \(x^{''}\) を中心とした微小面積を 空間中の物体上で積分することで放射輝度の計算を行う.
微小面積の積分では,点 \(x\) から半球を通して見える範囲の微小面積のみを積分したい. そこで次の関数を導入する.
\[ \begin{align} V \left( x \leftrightarrow x^{''} \right) = \begin{cases} 1 \ \ \left( x と x^{''} の間に遮蔽物が無い場合 \right) \\ 0 \ \ \left( x と x^{''} の間に遮蔽物がある場合 \right) \end{cases} \tag{2} \end{align} \]
この関数によって,点 \(x\) から半球を通して見えない微小面積をカットする.
次に,微小立体角 \(d \sigma\) と微小面積 \(dA\) の関係は,下図から式3のように表すことができる.
\[ \begin{align} d \sigma = \frac{dA cos \theta_{\omega_{n^{''}}}}{\left| x - x^{''} \right|^{2}} \tag{3} \end{align} \]
式2,3から,式1を基にして微小面積を積分する形のレンダリング方程式は
\[ \begin{align} L_{o} \left( x \rightarrow x^{'} \right) = L_{e} \left( x \rightarrow x^{'} \right) + \int_{M} f_{r} \left( x^{'} \rightarrow x \rightarrow x^{''} \right) L \left( x \leftarrow x^{''} \right) V \left( x \leftrightarrow x^{''} \right) \frac{cos \theta_{\omega_{n}} cos \theta_{\omega_{n^{''}}}} {\left| x - x^{''} \right|^{2}} dA \left( x^{''} \right) \tag{4} \end{align} \]
となる.
まとめ
本ページではレンダリング方程式の変数変換について簡単にまとめた. 積分の変数変換ができれば,論文の式の検証ができたり自分で新しい式を考えることができて 便利です.
参考文献
- James T. Kajiya: The rendering equation (1986)