【Games101】

透视矩阵

Pasted image 20260430203521

(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
    Pasted image 20260502172628

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

  • Specular
    Pasted image 20260502172903

\[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
posted @ 2026-05-02 17:46  Elizahone  阅读(9)  评论(0)    收藏  举报