光源の明るさの計算について

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