OpenGL Lighting Equation 요약 설명
Latex 연습
Table Of Contents
숙제 4. OpenGL Lighting Equation 요약 설명
20190002 강다혜
OpenGL은 퐁의 조명 모델에 기반을 두고, 각 vertex에 사용할 색을 계산한다. 조명 공식을 통해서 각 각 vertex에 대한 RGBA 색을 구할 수 있는데, RGB 채널과 A 채널은 서로 다른 계산 방식을 취하고, 여기에서는 RGB 채널에 대한 계산만 다룬다.
OpenGL의 조명 공식은 크게 물질 자체의 방사 색깔, 전역 앰비언트 반사, 그리고
n\bold{c} =n물질의 방사 색은
\bold{e}_{cm}\bold{a}_{cm}\bold{a}_{cs}\bold{a}_{cm} * \bold{a}_{cs}\bold{c} = \bold{e}_{cm} + \bold{a}_{cm} * \bold{a}_{cs} + \sum^{n-1}_{i = 0}i조명의 반사 효과는 쉐이딩을 하려는 지점의 꼭지점 좌표
V\bold{n}i광원이 물체에 영향을 미치는 방법으로는 앰비언트 반사, 난반사, 정빈사의 3가지가 있다. 위의 조명 공식에서
\bold{a}_{cm} * \bold{a}_{cli} + (\bold{n}\odot \overrightarrow{\bold{\text{VP}}}_{pli})\bold{d}_{cm} * \bold{d}_{cli} + (f_i)(\bold{n}\odot \bold{\hat{h}}_i)^{s_{rm}}\bold{s}_{cm} * \bold{s}_{cli}부분은
i위 공식에서
\bold{a}_{cm} * \bold{a}_{cli}i\bold{a}_{cm}\bold{a}_{cli}i다음으로 난반사의 계산식은
(\bold{n}\odot \overrightarrow{\text{VP}}_{pli})\bold{d}_{cm} * \bold{d}_{cli}\overrightarrow{\text{VP}}_{pli}\text{P}_1\text{P}_2\overrightarrow{\text{P}_1\text{P}_2}\text{P}_1\text{P}_2ww_1, w_2w_1, w_2\overrightarrow{\text{P}_1\text{P}_2}\text{P}_1\text{P}_2w_2\overrightarrow{\text{P}_1\text{P}_2}\text{P}_2w_1\overrightarrow{\text{P}_1\text{P}_2}\text{P}_1w_1, w_2\overrightarrow{\text{P}_1\text{P}_2}\text{P}_2 - \text{P}_1이러한 정의를 통하여
\overrightarrow{\text{VP}}_{pli}\text{V}w\text{P}_{pli}ww\overrightarrow{\text{VP}}_{pli}\bold{n}\bold{n}\odot \overrightarrow{\text{VP}}_{pli}\bold{d}_{cm}\bold{d}_{cli}i정반사의 계산식은
(f_i)(\bold{n}\odot \bold{\hat{h}}_i)^{s_{rm}}\bold{s}_{cm} * \bold{s}_{cli}해프웨이 벡터
\bold{h}_i\bold{h}_i = \left \{ \begin{array}{cc} \overrightarrow{\text{VP}}_{pli} + \overrightarrow{\text{VP}}_{e}, \qquad\quad v_{bs} = \text{TRUE,} \\ \overrightarrow{\text{VP}}_{pli} + (0\;0\;1\;0)^t,\quad v_{bs} = \text{FALSE}\end{array} \right.여기서 해프웨이 벡터는 광원에 대한 방향과 관찰자 방향의 중간 방향으로의 단위 벡터로 정의되는데, 광원에 대한 방향은
\overrightarrow{\text{VP}}_{pli}v_{bs}\text{TRUE}\text{P}_e = (0\;0\;0\;1)^t\text{V}\overrightarrow{\text{VP}}_{e}v_{bs} = \text{FALSE}z_e(0\;0\;1\;0)^t\bold{\hat{h}}_i정반사 또한 난반사처럼 광원이 표편의 앞쪽에서 빛을 비추는 경우만 고려하기 때문에,
f_if_i\bold{n}\overrightarrow{\text{VP}}_{pli}\bold{s}_{cm}\bold{s}_{cli}i이렇게
i\bold{a}_{cm} * \bold{a}_{cli} + (\bold{n}\odot \overrightarrow{\bold{\text{VP}}}_{pli})\bold{d}_{cm} * \bold{d}_{cli} + (f_i)(\bold{n}\odot \bold{\hat{h}}_i)^{s_{rm}}\bold{s}_{cm} * \bold{s}_{cli}att_ispot_i(att_i)(spot_i)[\bold{a}_{cm} * \bold{a}_{cli} + (\bold{n}\odot \overrightarrow{\bold{\text{VP}}}_{pli})\bold{d}_{cm} * \bold{d}_{cli} + (f_i)(\bold{n}\odot \bold{\hat{h}}_i)^{s_{rm}}\bold{s}_{cm} * \bold{s}_{cli}]을 반사 색깔로 사용한다.
att_iatt_i = \left \{ \begin{array}{cc} {1 \over {k_{Oi} + k_{1i}\parallel\text{VP}_{pli}\parallel + k_{2i}\parallel\text{VP}_{pli}\parallel^2}},\quad \text{P}_{pli}\text{'s}\;w\neq 0, \\ 1.0, \qquad\qquad\qquad\qquad\text{otherwise}\end{array} \right.광원이 무한의 거리만큼 떨어진 평행 광원인 경우,
\text{P}_{pli}watt_i\text{d}\parallel\text{d}\parallel\parallel\text{VP}_{pli}\parallelk_{0i}ik_{1i}ik_{2i}ispot_iispot_i = \left \{ \begin{array}{cc} (\overrightarrow{\text{P}_{pli}\text{V}}\odot\bold{\hat s}_{dli})^{s_{rli}} c_{rli} \neq 180.0 \;\&\; \overrightarrow{\text{P}_{pli}\text{V}}\odot\bold{\hat s}_{dli} \geq \text{cos}c_{rli},\\ \qquad 0.0, \qquad\quad c_{rli} \neq 180.0 \;\&\; \overrightarrow{\text{P}_{pli}\text{V}}\odot\bold{\hat s}_{dli} < \text{cos}c_{rli},\\ 1.0, \qquad\quad c_{rli} = 180.0\qquad\qquad\qquad\qquad\quad\end{array} \right.스폿 광원의 절단 각도
c_{rli}spot_i\text{V}\overrightarrow{\text{P}_{pli}\text{V}}\text{cos}c_{rli}spot_i\text{cos}^{s_{rli}}\psi(\overrightarrow{\text{P}_{pli}\text{V}}\odot\bold{\hat s}_{dli})^{s_{rli}}이러한 과정을 거쳐서
in\big( \sum^{n-1}_{i = 0}(att_i)(spot_i)[\bold{a}_{cm} * \bold{a}_{cli} + (\bold{n}\odot \overrightarrow{\bold{\text{VP}}}_{pli})\bold{d}_{cm} * \bold{d}_{cli} + (f_i)(\bold{n}\odot \bold{\hat{h}}_i)^{s_{rm}}\bold{s}_{cm} * \bold{s}_{cli}] \big)\big( \bold{a}_{cm} * \bold{a}_{cs} \big)\big( \bold{e}_{cm} \big)\bold{c} = \bold{e}_{cm} + \bold{a}_{cm} * \bold{a}_{cs}+ \sum^{n-1}_{i = 0}(att_i)(spot_i)[\bold{a}_{cm} * \bold{a}_{cli} + (\bold{n}\odot \overrightarrow{\bold{\text{VP}}}_{pli})\bold{d}_{cm} * \bold{d}_{cli} + (f_i)(\bold{n}\odot \bold{\hat{h}}_i)^{s_{rm}}\bold{s}_{cm} * \bold{s}_{cli}]