[简化版 GAMES 101] 计算机图形学 07:图形学投影完全推导
[简化版 GAMES 101] 计算机图形学 07图形学投影完全推导Bilibili 同步视频0. 前置约定 一、正交投影 Orthographic Projection1.1 直观理解1.2 变换两步走平移矩阵缩放矩阵正交投影矩阵最终二、透视投影 Perspective Projection2.1 核心思路2.2 挤压规则2.3 相似三角形推导 XY 变换✍️ 补充第三行为什么是 [0,0,A,B]2.4 解方程求 A、B2.5 透视→正交矩阵2.6 完整透视投影矩阵三、关键结论 四、经典思考题 Bilibili 同步视频[简化版 GAMES 101] 计算机图形学 07图形学投影完全推导在计算机图形学中投影变换是连接 3D 世界与 2D 屏幕的唯一桥梁✨。正交投影Orthographic与透视投影Perspective是所有渲染、相机、视图系统的底层根基。本文严格依照经典图形学推导完整复现矩阵由来不跳步、不省略带你一次吃透两种投影的数学本质。0. 前置约定 相机位于原点 (0,0,0)看向-Z 方向向上为Y 方向使用右手坐标系近平面n较大 Z远平面f较小 Z➡️n f一、正交投影 Orthographic Projection1.1 直观理解正交投影 相机在无限远处平行光线射入 →无近大远小→ 平行线永远平行适合工程制图、CAD、蓝图核心把一个任意长方体映射到标准立方体 NDC。1.2 变换两步走平移把长方体中心移到原点缩放把长宽高缩到 [-1,1]平移矩阵c x f r a c l r 2 , c y f r a c b t 2 , c z f r a c n f 2 c_x frac{lr}{2}, c_y frac{bt}{2}, c_z frac{nf}{2}cxfraclr2,cyfracbt2,czfracnf2KaTeX parse error: Expected EOF, got at position 21: …egin{bmatrix}1 ̲ 0 0 -c_x …缩放矩阵KaTeX parse error: Expected EOF, got at position 32: …x}frac{2}{r-l} ̲ 0 0 0 0 …正交投影矩阵最终KaTeX parse error: Expected }, got at position 46: …x}frac{2}{r-l} ̲ 0 0 -frac{…二、透视投影 Perspective Projection2.1 核心思路透视投影观测空间是视锥体 Frustum直接求矩阵很难 →拆成两步把 Frustum 挤成长方体Perspective → Ortho做正交投影2.2 挤压规则近平面任意点完全不变远平面 Z 不变仅 XY 收缩中心点不变2.3 相似三角形推导 XY 变换x ′ x c d o t f r a c n z , y ′ y c d o t f r a c n z x x cdot frac{n}{z}, y y cdot frac{n}{z}x′xcdotfracnz,y′ycdotfracnz齐次坐标同乘 z( x , y , z , 1 ) t o ( n x , n y , ? , z ) (x,y,z,1) to (nx, ny, ?, z)(x,y,z,1)to(nx,ny,?,z)得到矩阵雏形KaTeX parse error: Expected EOF, got at position 27: …egin{bmatrix}n ̲ 0 0 0 0 …✍️ 补充第三行为什么是 [0,0,A,B]第三行计算输出深度zz 只和原深度 z 相关与 x、y 无关因此前两位必须为 0只保留 z 与常数项的系数 A、B。2.4 解方程求 A、B近平面条件A n B n 2 A n B n^2AnBn2远平面中心点条件A f B f 2 A f B f^2AfBf2联立解得b o x e d A n f , q u a d b o x e d B − n f boxed{A nf},quad boxed{B -n f}boxedAnf,quadboxedB−nf2.5 透视→正交矩阵KaTeX parse error: Expected }, got at position 33: …egin{bmatrix}n ̲ 0 0 0 0 …2.6 完整透视投影矩阵b o x e d M p e r s p M o r t h o c d o t M p 2 o boxed{M_{persp} M_{ortho} cdot M_{p2o}}boxedMperspMorthocdotMp2o三、关键结论 正交无近大远小仅平移 缩放透视有近大远小先挤压再正交右手系下n f挤压矩阵第三行前两位为 0因深度与 x、y 无关四、经典思考题 视锥体中间点 z(nf)/2挤压后会被推向远平面这是深度精度与 Z‑fighting 的核心原因。