あらいさん日記(仮)

あらい日記

活動の記録

ダイポールモデルによる半透明物体の散乱特性の計測

概要

半透明物体では,光が物体内部に入り込んで反射する表面下散乱という現象が発生します.この現象をダイポールモデルで近似することによって,半透明物体の散乱特性を計測することができます.

今回はろうの散乱特性を計測しました.さらに,計測した結果を用いてろうの質感をCGで再現しました.

半透明物体

私たちの身の周りには半透明物体で溢れています.大理石・皮膚・ろうそく・果物・肉・牛乳など,程度の差はありますが,これら全ては半透明物体としての性質を持っています.

f:id:raccoon15:20191019002914j:plain

ろうにレーザ光を照射した様子.照射された光が物体内部で散乱していることが確認できる.

半透明物体では光が物体内部に入って,別の点から出てくる現象が発生します.このような現象を表面下散乱(Subsurface scattering)と呼びます.表面下散乱では,ある物体表面上の点x_{i}に入った光が物体内で1回ないし複数回反射して別の点x_{o}から出てきます.

f:id:raccoon15:20191019193322p:plain
f:id:raccoon15:20191019193325p:plain
(左)物体表面での反射,(右)物体内部での表面下散乱

表面下散乱が発生する物体の表面上での光の関係を表現した関数をBSSRDF (Bidirectional Scattering Surface Reflectance Distribution Function, 双方向散乱面反射率分布関数)と呼びます.BSSRDFは入射光と出射光の位置x_{i}x_{o}と方向\vec{\omega_{i}}\vec{\omega_{o}}の8次元の関数S \left( x_{i},\vec{\omega_{i}}, x_{o}, \vec{\omega_{o}} \right)です.

BSSRDFが既知であれば,その物体をCGで表現できるようになります.しかし,実際に計測しようとすると非常に時間がかかります.また,計測できたとしても莫大なデータ量になります*1

ダイポールモデル

BSSRDFを表すパラメトリックモデルとして,ダイポールモデル(Dipole model)*2があります.このモデルは,多重散乱*3 *4で,無限平面で,十分に厚みのある*5,均一散乱物体のBSSRDFを良く近似します.

ダイポールモデルではBSSRDFを次式のように構成しています. 

S \left( x_{i},\vec{\omega_{i}}, x_{o}, \vec{\omega_{o}} \right) = \frac{1}{\pi} F_{t}(\eta,\vec{\omega_{i}}) R_{d}(x_{i}, x_{o}) F_{t}(\eta,\vec{\omega_{o}})

\etaは相対屈折率,F_{t}はフレネル透過率です.r=||x_{i}-x_{o}||とすると,散乱項R_{d}は次式で表せられます. 

R_{d}(r)=\frac{\alpha}{4 \pi}\left\{ z_{r}\left(\sigma_{tr} + \frac{1}{d_{r}}\right)\frac{e^{-\sigma_{tr} d_{r}}}{d_{r}^{2}} + z_{v}\left(\sigma_{tr}+\frac{1}{d_{v}}\right)\frac{e^{-\sigma_{tr} d_{v}}}{d_{v}^{2}} \right\}

このとき各変数は次式のようになります. 

d_{r}=\sqrt{r^{2}+z_{r}^2}d_{v}=\sqrt{r^{2}+z_{v}^2}z_{r}=\frac{1}{\sigma_{t}^{\prime}}z_{v}=z_{r}\left(1+\frac{4}{3}A \right)A=\frac{1+F_{dr}}{1-F_{dr}}F_{dr}=-\frac{1.440}{\eta^{2}}+\frac{0.710}{\eta}+0.668+0.0636\eta\sigma_{tr}=\sqrt{3 \sigma_{a} \sigma_{t}^{\prime}}\sigma_{t}^{\prime}=\sigma_{s}^{\prime}+\sigma_{a}\sigma_{s}^{\prime}=\sigma_{s}(1-g)\alpha=\frac{\sigma_{s}^{\prime}}{\sigma_{t}^{\prime}}

この中で,散乱係数(Scattering cofficient)\sigma_{s},吸収係数(Absorption coefficient)\sigma_{a},相対屈折率\eta,散乱方向の平均コサイン(Mean cosine of the scattering angle)g*6の4つがパラメータになります. 

例として,皮膚(Skin1[Jensen et al, 2001])のパラメータを元にR_{d}rの関係をプロットしました.光が入射された位置から離れるほどR_{d}は指数関数的に減衰します.

f:id:raccoon15:20191019204121p:plain

散乱項R_{d}と距離rの関係(Skin1)

実験

実際に計測を行いダイポールモデルのパラメータを推定します.対象の半透明物体は,ろう(一辺の長さは6.9cm)です.光源として赤色レーザを使いました.カメラはCanon EOS 6DでレンズはSMC TAKUMAR 90mm F2.8です.レーザ光が対象物体に対して垂直に入射するように設置しました.表面下散乱は距離に応じて指数関数的に減衰するので輝度差が大きくなります.そこでHDR撮影を行いました.

f:id:raccoon15:20191021122024j:plain

実験のセットアップ

まず,半透明物体を撮影した画像から,レーザ光の入射位置を原点としたときの距離r_{i}に対応する画素値p_{i}を抜き出しました.レーザ光の放射束\Phiと未知の定数Kを用いるとp_{i}は次式で表せられます.

p_{i} = K \Phi R_{d}(r_{i})

次に,K\Phiを求めるために拡散反射板を撮影します.理想的には標準拡散反射板(反射率>0.99)を使いたいのですが,持ってなかった*7のでコピー用紙で代替しました.拡散反射板を撮影した画像の画素値の合計を求めるとK\Phi/Aになります.Aは1画素あたりで撮影された拡散反射板の領域の面積です.コピー用紙に既知の長さの線を印刷しておいたので,それを元にAを求めました.Aが求まったのでK\Phiを求めることができます.

最後にp_{i}/(K\Phi)を計算するとR_{d}が求まります.r_{i}はろうの大きさを定規で測定して,画像中の位置との関係から求めました.

f:id:raccoon15:20191020013827j:plain
f:id:raccoon15:20191020013831j:plain
撮影の対象.(左)拡散反射板(コピー用紙で代替),(右)半透明物体(ろう).

結果

レーザ光の入射位置を原点としたときの距離rを横軸に,計測した散乱項R_{d}を縦軸にしてプロットしました.原点から離れるとR_{d}は小さくなっていることが確認できます.原点に近い点r<1では,R_{d}が極端に大きくなっています.この点では物体表面での直接反射成分が含まれているためだと考えられます.

f:id:raccoon15:20191020151457p:plain

計測したろうの散乱項R_{d}と距離r.推定したパラメータを用いて曲線を描画した.

ダイポールモデルに基づいてパラメータの推定を行います.ここでは等方散乱を仮定するのでg=0とします.相対屈折率は多くの物体で\eta=1.3となることが知られているのでこの値を用います.非線形最適化でパラメータを推定すると,\sigma_{s}^{\prime}=0.112/mm,\sigma_{a}=0.00711/mmとなりました.

推定したパラメータを用いてレンダリングを行いました.レンダラはMitsubaを使いました.

f:id:raccoon15:20191019015226p:plain
f:id:raccoon15:20191019015230p:plain
レンダリング結果.(左)拡散反射,(右)ダイポールモデル(計測したろう).

表面下散乱の生じない拡散反射と比べると,ダイポールモデルでは陰影が少なくなり,半透明物体の質感が表現できていると思います. 

立方体以外の複雑なシーンにも適用してみました.

f:id:raccoon15:20191019114738p:plain
f:id:raccoon15:20191020163229p:plain
ろうの質感を表現できる.

参考資料

*1:100x100の画素数で1度単位の計測を行うと,入射光位置は100x100通り,出射光位置は100x100通り,入射光方向は360x90通り,出射光方向は360x90通り,となる.全ての組み合わせは10^{16}通り.8bitで記録しても100PB(ペタバイト)必要になる.

*2:H. W. Jensen, S. R. Marschner, M. Levoy, and P. Hanrahan, “A Practical Model for Subsurface Light Transport”, Proc. SIGGRAPH2001, 2001.

*3:物質内で何度(2回以上)も反射する散乱を多重散乱.1回だけの反射は単一散乱と呼ぶ.

*4:単一散乱も近似できるモデルとして,Directional dipole modelが提案されている.J. R. Frisvad, T. Hachisuka, and T. K. Kjeldsen, “Directional dipole model for subsurface scattering,” ACM Trans. Graph., 2014.

*5:特定の厚みを持つ物体を近似できるモデルとして,Multipole modelが提案されている.C. Donner H. W. Jensen, “Light Diffusion in Multi-Layered Translucent Materials”, Proc. SIGGRAPH2005, 2005.

*6:散乱の方向を表すフェーズ関数のパラメータ.-1.0~1.0の範囲の値をとる.g=0のとき等方散乱,g>0のとき前方散乱,g<0のとき後方散乱になる.

*7:10万円くらいするみたいですね.Labsphere Spectralon, Diffuse Reflectance