光源の明るさの計算について
Shade3DからOSPRayに光源の「明るさ」を渡す際に単位変換の計算を行っています。
この計算は、レンダリング時のトーンマップを使用しない状態でガンマ2.2で比較して明るさが一致するようにしています。
シーンの単位
Shade3Dの内部的なシーンの単位はmm(ミリメートル)で管理されています。
OSPRayではm(メートル)で管理されています。
光源の明るさの単位変換
intensityをShade3Dでの「減衰基準距離」での「明るさ」、intensity’をOSPRayでの明るさとします。
PIを円周率とします。
無限遠光源
intensity' = intensity * PI
点光源、スポットライト
intensity' = (intensity / 1000.0)^2 * PI
面光源
areaV = 対象形状の表面積 (単位 : m)
intensity' = ((intensity / 1000.0)^2 * PI) / areaV
面光源は、OSPRayに渡す際は「発光(Luminous)マテリアル」に変換しています。
これは光源ではなく、マテリアルとしての発光の挙動になります。
発光(Luminous)マテリアル
発光マテリアルは、指定の「明るさ」をそのままOSPRayに渡しています。
intensity' = intensity
Shade3Dでの「減衰基準距離」と「ルーメン」の変換 (参考)
Shade3Dでの「減衰基準距離」と「ルーメン」の変換式は以下のようになります。
減衰基準距離の距離値をt(単位はmm)、ルーメン値をΦとします。
また、無限遠光源の「明るさ」1.0は100k (lx)に相当します。
点光源、スポットライト
Φ = (4 * PI * (t^2)) / 10
面光源
Φ = (t^2) / PI