光の経路の表現

光が目に届くまでの経路の表し方の有名な方法として Heckbert の表記法[SIGGRAPH 1990] があります.

この記法では下図のように ライトを L, 目を E, ディフューズ反射 D, スペキュラ反射 S として,ライト(L)から出た光がどういう反射(D or S)をして, 目(E) に届いたかの光の経路を表現します.


というように内容的に普通の内容なのですが, どうして今回取り挙げたか? というと,直接光だけでなく, 間接光も考慮したライティング(カラーブリーディング, コースティクス)を記述するときに便利だと思ったからです.

下にライティングの記法の例について挙げていきます.

ライトを直接見た場合

  • L E

直接光だけによるライティング(ゲームでよく使われるもの)

  • L ( D | S ) E
    • ここで ( D | S ) は D か S のどちらかが 1 回起きることを表します.

全てのライティング計算を考慮

  • L ( D | S ) * E
    • ここで * は ( D | S ) が 0 回以上起きることを表します.

ディフューズによるカラーブリーディング

  • カラーブリーディングはディフューズ反射が繰り返し起きた間接光によって, 他の物体に色味がつく現象です.
  • 下図がカラーブリーディングの例で, 赤い紙が反射したディフューズが彫像に当たって赤くなっています.

  • L ( D )+ E
    • ここで + は D が 1 回以上起きることを表します.

鏡に映る物体(あるいはキューブマップによるリフレクション)

  • L ( D | S )* S E
    • E の前の S が鏡を表しています.

コースティクスを直視

    • ガラスや水からできたコースティクスが、最後に床面でディフューズ反射して目に届いています.
  • L ( S )+ D E

コースティクスのより一般的な表現

  • L ( S )+ D ( S )* E
    • コースティクスが複数回, 鏡に映ったりすることもあるので, E の前の ( S )* を追加しています.