Lambert Model
$$I_o = D * I_i\cos(\theta) $$ $$D = \frac{\rho_d}{\pi} $$ $\rho_d$表示表面的反射率:用于描述入射光能量在表面被反射的比例。范围在[0 , 1]$\theta$为入射光线$L$与法线$n$的夹角

Lambert Model是漫反射模型,在任何出射方向的光能都是一样
因此
$$I_o = \frac{\rho_d}{\pi}I_i\cos(\theta) $$
那么我们对所有的出射光进行积分:
$$I_{total-ouput} = \int_\Omega \frac{\rho_d}{\pi}I_i\cos(\theta)d\omega $$
与$\rho_d$的定义一致
Phong Model
该模型是个经验模型
- $k_a$:环境光反射率
- $k_d$:漫反射光反射率
- $k_s$:镜面光反射率
- $\alpha$:光泽度,该值越大,表面越光滑,高亮区域越小
- $I_a$:环境光
- $I_d$:光源的漫反射分量
- $I_s$:光源的镜面分量
- $\overrightarrow{R}$:反射光方向
- $\overrightarrow{N}$:法线方向
- $\overrightarrow{L}$:光线入射的反方向,通常都是使用入射的反方向
- $\overrightarrow{V}$:指向viewer的方向
该模型由三个分量组成:环境光,漫反射光,镜面光。
环境光部分:
$$I_{o , a} = k_a I_a $$漫反射部分:
$$I_{o , d} = \sum_{m\in lights}(k_d(\overrightarrow{L_m}\cdot \overrightarrow{N})I_{m , d}) $$镜面光部分:
$$I_{o , s} = \sum_{m\in lights}(k_s(\overrightarrow{R_m}\cdot \overrightarrow{V})^{\alpha}I_{m , s}) $$Blinn-Phong Model
该模型在Phong Model的基础上改进了计算方法

使用$\overrightarrow{N}\cdot \overrightarrow{H_m}$代替$\overrightarrow{R_m}\cdot \overrightarrow{V}$
因为$\overrightarrow{N}\cdot \overrightarrow{H_m}$可以在一开始就计算好,因此可以加快计算。
$$I_o = k_aI_a + \sum_{m \in lights}(k_d(\overrightarrow{L_m} \cdot \overrightarrow{N})I_{m , d}) + \sum_{m \in lights}(k_s(\overrightarrow{N}\cdot \overrightarrow{H_m})^{\alpha}I_{m , s}) $$环境光分量:
$$I_{o , a} = k_a I_a $$漫反射分量:
$$I_{o , d} = \sum_{m \in lights}(k_d(\overrightarrow{L_m} \cdot \overrightarrow{N})I_{m , d}) $$镜面光分量:
$$I_{o , s} = \sum_{m \in lights}(k_s(\overrightarrow{N}\cdot \overrightarrow{H_m})^{\alpha}I_{m , s}) $$
Comments