夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Blendeでリムライトを実装する

本日はBlender枠です。

Blenderでリムライトを実装していきます。

〇リムライトとは?

リムライトはあるオブジェクトに対してカメラ方向の背部から光が当たっている場合にオブジェクトのリム(淵)に光があふれる現象をさします。

例えば宇宙空間で撮影された地球の写真では地球の球体形状に合わせてリムライトが見られます。

なお、厳密には地球の場合大気があり、大気の反射も含まれるためリムライトの原理とは異なります。

〇リムライトの実装方法

Blenderでリムライトを実装するにはフレネルノードを使用します。

フレネルとは光が物体の界面に入社する際に反射と屈折の影響を示す効果です。

フレネル自体は物理学的公式があり次のように表されます。

 \displaystyle 

R_{\parallel} = \left( \frac{n_1 \cos(\theta_i) - n_2 \cos(\theta_t)}{n_1 \cos(\theta_i) + n_2 \cos(\theta_t)} \right)^2



R_{\perp} = \left( \frac{n_1 \cos(\theta_t) - n_2 \cos(\theta_i)}{n_1 \cos(\theta_t) + n_2 \cos(\theta_i)} \right)^2
\

最初の式は平行楕円偏光の反射係数、二つ目の式は垂直楕円偏光の反射係数の式です。

それぞれ光の振動の方向を表しています。 イメージとしては、光が水面やガラスなどの境界に当たったとき、その振動の方向が重要になります(光の電場の振動方向)。

 平行楕円偏光は光が水面に当たったとき、その振動が水面と平行になっている状態です。

 これは、水面に平行に波を送ったときのような感じです。この光は、境界面で反射するときに特定の割合で反射されます。これを平行楕円偏光の反射係数と呼びます。

垂直楕円偏光は、光の振動が境界面に垂直になっている状態です。これは、光が垂直に波を送ったときのようなイメージです。

この光も境界面で反射しますが、反射の割合は平行楕円偏光と異なります。この反射の割合を垂直楕円偏光の反射係数と呼びます。

 Blenderのフレネルノードは通常、Schlickの近似と呼ばれる式を使用しています。

 フレネルの式の近似ですが、計算が簡略化されており、リアルタイムレンダリングなどの用途に適しています。

 リムライトとして使用する場合はフレネルを放射に接続します。 この際にカラーミックスノードで色を乗算することでリムライトの色を制御できます。

例えば次のような地球のモデルにリムライトを適応すると

こちらのようになります。 一気にCG感が出てしまい場所を選ぶ実装にはなります。

フレネルの強さはIORで調整できますがシェーダーの一般的な表現としてはPowerを使用することができます。

これはBlenderの場合は累乗のノードになります。

以上でリムライトの実装が完了しました。

本日は以上です。