【Games101】
透视矩阵

(near和far都是负数)
正交投影矩阵: 左边,先缩放,再平移。右边,先平移,在缩放。
\[M_{正交}=
\begin{bmatrix}
\frac{2}{r-l} & 0 & 0 & -\frac{r+l}{r-l}\\
0 & \frac{2}{t-b} & 0 & -\frac{t+b}{t-b}\\
0 & 0 & \frac{2}{n-f} & -\frac{f+n}{n-f} \\
0 & 0 & 0 & 1
\end{bmatrix}
=
\begin{bmatrix}
\frac{2}{r-l} & 0 & 0 & 0\\
0 & \frac{2}{t-b} & 0 & 0\\
0 & 0 & \frac{2}{n-f} & 0 \\
0 & 0 & 0 & 1
\end{bmatrix}
\times
\begin{bmatrix}
1 & 0 & 0 & -\frac{r+l}{2}\\
0 & 1 & 0 & -\frac{t+b}{2}\\
0 & 0 & 1 & -\frac{f+n}{2} \\
0 & 0 & 0 & 1
\end{bmatrix}
\]
透视投影矩阵:先变换成正交,再用正交变换进行(当对称时可简化)
\[M_{\text{透视}} =
M_{\text{正交}} \times
\begin{bmatrix}
n & 0 & 0 & 0 \\
0 & n & 0 & 0 \\
0 & 0 & n+f & -n \times f \\
0 & 0 & 1 & 0
\end{bmatrix}
=
\begin{bmatrix}
\frac{2n}{r-l} & 0 & -\frac{r+l}{r-l} & 0 \\
0 & \frac{2n}{t-b} & -\frac{t+b}{t-b} & 0 \\
0 & 0 & \frac{n+f}{n-f} & \frac{-2nf}{n-f} \\
0 & 0 & 1 & 0
\end{bmatrix}
\]
\[= \begin{bmatrix}
-\frac{\cot(\frac{fovY}{2})}{\text{aspect-ratio}} & 0 & 0 & 0 \\
0 & -\cot(\frac{fovY}{2}) & 0 & 0 \\
0 & 0 & \frac{n+f}{n-f} & \frac{-2nf}{n-f} \\
0 & 0 & 1 & 0
\end{bmatrix}
\]
经透视变换后,所有坐标位于\([-w, w]\)之内,然后除以w分量,使其处于\([-1, 1]\)的NDC中。
Blinn-Phong 光照模型
Blinn-Phong_光照模型,又称为_Blinn-phong_反射模型(Blinn–Phong reflection model)或者 phong 修正模型(modified Phong reflection model)_,是由 Jim Blinn于 1977 年在文章中对传统 phong 光照模型基础上进行修改提出的。它是一个经验模型,并不完全符合真实世界中的光照现象,但由于实现起来简单方便,并且计算速度和得到的效果都还不错,因此在早期被广泛的使用。
它将进入摄像机的光线分为三个部分,每个部分使用一种方法来计算它的贡献度,这三个部分分别是环境光(Ambient)、漫反射(Diffuse) 和 高光反射(Specular)。
- Diffuse

\[L_d=k_d(I/r^2)max(0, n·l)
\]
- Specular

\[L_s=k_s(I/r^2)max(0, n·h)^p
\]
- Ambient:假定其为常数
\[L_a=k_aI_a
\]
- 注意:上述式子中所涉及的向量均应该是位于观察坐标下的,即经过model和view变换后。假设\(M=view \times model\),那么法线的变换矩阵\(Q=(M^{-1})^T\) ,证明见Link。

浙公网安备 33010602011771号