LoginSignup
0
0

[コンピュータグラフィックス] 鏡面反射における、フォンのモデルの計算 (正反射方向ベクトルの計算を含む)

Posted at

以下のテキストで学習中、計算に詰まったので、計算過程を記録しておく。

  • 画像情報教育振興協会 「コンピュータグラフィックス [改訂新版]」

1. 問題サンプル

  • フォンのモデルを用いて、鏡面反射光の強さを求める。
  • 以下の値を用いて計算する。
    • $W(\alpha)=0.8$
    • $I_i=10$
    • $N=(0,1,0)$
    • $L=(-1,2,0)$
    • $V=(2,1,0)$
    • $n=2$

2. 利用する数式

2-1. フォンのモデル

鏡面反射光の強さは以下のように表される。

テキスト p.148

\begin{align}
I &= W(\alpha)I_icos^n\gamma \\
&= W(\alpha)I_i(\hat R \cdot \hat V)^n \\
\end{align}

2-2. 正反射方向ベクトルの計算

テキスト p.150~151

\begin{align}
R &= V^{\prime} + 2 \hat N \\
V^{\prime} &= - \frac{\hat V}{|\hat V \cdot \hat N|} \\
\hat R &= \frac{R}{\|R\|} = |\hat V \cdot \hat N|R
\end{align}

鏡面反射光の計算のために p.151 の正反射方向ベクトルの計算式を利用したい。この場合、 $V = L$ として計算することになるので、式は以下のようになる。

\begin{align}
R &= L^{\prime} + 2 \hat N ・・・①\\
L^{\prime} &= - \frac{\hat L}{|\hat L \cdot \hat N|}\\
\hat R &= \frac{R}{\|R\|} = |\hat L \cdot \hat N|R ・・・②
\end{align}

解法

これに、各種値を当てはめる。

1. L の単位ベクトル, N の単位ベクトルの計算

まず、 $\hat L, \hat N $を求める。

\begin{align}
\hat L &= \frac{L}{|L|} = \frac{(-1,2,0)}{\sqrt{(-1)^2+2^2+0^2}} \\
&= \frac{(-1,2,0)}{\sqrt{5}} = \left(\frac{-1}{\sqrt{5}},\frac{2}{\sqrt{5}},0 \right) \\
\\
\hat N &= \frac{N}{|N|} = \frac{(0,1,0)}{\sqrt{0^2+1^2+0^2}} \\
&= \frac{(0,1,0)}{\sqrt{1}} = (0,1,0) \\
\\
\end{align}

2. R の計算

①より

\begin{align}
R &= L^{\prime} + 2 \hat N \\
&= - \frac{\hat L}{|\hat L \cdot \hat N|} + 2 \hat N \\
&= - \frac{\left(\frac{-1}{\sqrt{5}},\frac{2}{\sqrt{5}},0 \right) }{|\left(\frac{-1}{\sqrt{5}},\frac{2}{\sqrt{5}},0 \right) \cdot (0,1,0) |}  + 2 \hat N\\
&= - \frac{\left(\frac{-1}{\sqrt{5}},\frac{2}{\sqrt{5}},0 \right) }{|\left(0,\frac{2}{\sqrt{5}},0\right)|} + 2 (0,1,0)\\
&= - \left(\frac{-1}{2},1,0 \right) + (0,2,0)\\
&= \left(\frac{1}{2},-1,0 \right) + (0,2,0)\\
&= \left(\frac{1}{2},1,0 \right)\\
\end{align}

3. R の単位ベクトルの計算

②より

\begin{align}
\hat R &= \frac{\left(\frac{1}{2},1,0 \right)}{|R|}\\
&= \frac{\left(\frac{1}{2},1,0 \right)}{\sqrt\frac{5}{4}}\\
&= \left(\frac{1}{\sqrt 5},\frac{2}{\sqrt 5},0 \right)\\
\end{align}

4. V の単位ベクトルの計算

$V=(2,1,0)$ より、
$\hat V = \frac{(2,1,0)}{\sqrt{2^2+1^2+0^2}} = (\frac{2}{\sqrt{5}},\frac{1}{\sqrt{5}},0)$

5. 鏡面反射光の計算

ここまでに求めた値を、鏡面反射光の強さのに式(フォンのモデル)に当てはめると、

\begin{align}
I &= W(\alpha)I_icos^n\gamma \\
&= W(\alpha)I_i(\hat R \cdot \hat V)^n \\
&= 0.8 * 10 * \left(\left(\frac{1}{\sqrt 5},\frac{2}{\sqrt 5},0 \right) \cdot \left(\frac{2}{\sqrt 5},\frac{1}{\sqrt 5},0 \right) \right)^2 \\
&= 8 * \left(\frac{4}{5} \right)^2 = 5.12\\
\end{align}

できたぽよ!((φ(>ω<*)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0