自学(4):计算机图形学

大二下学期的自学笔记,由 GAMES 101 课程组成。

一、变换

  1. $\vec{a}\times \vec{b}=A*\vec{b}=\begin{bmatrix}0 & -a_z & a_y\\a_z & 0 & -a_x\\-a_y & a_x & 0\end{bmatrix}\vec{b}$,用于判断左右、内外
  2. 仿射坐标:点 $(x,y,z,1)$,向量 $(x,y,z,0)$
  3. 交比:直线上四点 $A,B,C,D$,$(A,B;C,D)=\frac{\vec{AC}/\vec{CB}}{\vec{AD}/\vec{DB}}$,射影变换前后保持不变
  4. 欧拉角:绕 $x,y,z$ 轴旋转 $\alpha,\beta,\gamma$ 角,$R=R_z(\gamma)R_y(\beta)R_x(\alpha)$
  5. 绕 $\vec{n}$ 轴旋转 $\alpha$ 角:$R(\vec{n},\alpha)=\cos\alpha I+(1-\cos\alpha)\vec{n}\vec{n}^T+\sin\alpha \begin{bmatrix}0 & -n_z & n_y\\n_z & 0 & -n_x\\-n_y & n_x & 0\end{bmatrix}$
  6. 视角变换:把摄像机移动到原点,$y$ 轴向上,看向 $-z$
  7. 正交投影:把长方体变换到 $[-1,1]^3$
  8. 透视投影:把视锥压缩成长方体再正交投影,前平面不变,后平面压缩且中心点不变

二、几何

  1. 隐式表示:$f(x,y,z)=0$、几何体加减、距离函数(可用于插值)、水平集
  2. 显示表示:$(u,v)\to (x,y,z)$、点云、多边形网格
  3. 贝塞尔曲线:三阶 $b_0^3(t)=(1-t)^3 b_0+3(1-t)^2tb_1+3(1-t)t^2b_2+t^3b_3$,为保证 $\mathbb{C}^1$ 连续需连接点处平分控制点
  4. 贝塞尔曲面:16 个控制点,先沿 $u$ 求四条曲线,再对每个 $v$ 以四条曲线为控制点
  5. 曲面细分:Loop 细分(三角形加三个中点,一拆四)、Catmull-Clark 细分(加边中点、面中心)
  6. 曲面简化:边收缩,使用二次度量误差建优先队列,贪心收缩
  7. 曲线坐标:切线(方向变化快慢为曲率)、法线(切向量导数)、副法线(叉乘,方向变化快慢为挠率)
  8. 曲面第一基本形式:$I=E\mathrm{d}u^2+2F\mathrm{d}u\mathrm{d}v+G\mathrm{d}v^2,E=\vec{r_u}\cdot \vec{r_u},F=\vec{r_u}\cdot \vec{r_v},G=\vec{r_v}\cdot \vec{r_v}$,切向量 $\vec{r_u},\vec{r}_v$,法向量 $\vec{n}$
  9. 曲面第二基本形式:$II=L\mathrm{d}u^2+2M\mathrm{d}u\mathrm{d}v+N\mathrm{d}v^2,L=\vec{n}\cdot \vec{r_{uu}},M=\vec{n}\cdot \vec{r_{uv}},N=\vec{n}\cdot \vec{r_{vv}}$,$r_uv$ 为二阶导数
  10. 曲率:法曲率(沿切平面中某方向截曲面得平面曲线的曲率)$\kappa_n=\frac{II}{I}$,主曲率(法曲率最大最小值)$\kappa_1,\kappa_2$,平均曲率 $H=\frac{\kappa_1+\kappa_2}{2}$,高斯曲率 $K=\kappa_1\kappa_2$ 与曲面在 $\mathbb{R}^3$ 中的嵌入无关

三、摄影

  1. 视场:传感器大小、焦距,等效焦距为 35mm 传感器时
  2. 曝光:光圈直径、快门时间、ISO 倍数
  3. 景深:对焦距离附近的清晰区间,焦距越长、光圈越大、对焦距离越近景深越浅
  4. 光场:前后平面共四维,同物体不同角度、同角度不同物体
  5. 光场相机:微透镜阵列,每一角度对应普通相机一张图,可后期调整焦距、光圈等
  6. 颜色:光谱与视锥细胞响应函数乘积,有同色异谱
  7. 加色系统:sRGB(用三纯色调出纯频率,再调出光谱)、XYZ(人为定义,Y 代表亮度)、HSV(色调、饱和度、明度)、Lab(亮度、绿红轴、蓝黄轴,互补色原理)
  8. 色彩空间:XYZ,固定 Y,$(x,y,z)=\frac{(X,Y,Z)}{X+Y+Z}$,$sRGB$ 为三角形
  9. 减色系统:CMYK(品红黄青黑,印刷用)

四、光栅化

  1. 三角形:判断像素中心是否在内部,可用先模糊或多重采样(MSAA)反走样
  2. 反走样原理:采样等于时域上乘积等于频域上卷积(重复),高低频信号混叠,模糊等于低通滤波
  3. 深度缓冲:逐像素记录最近深度
  4. 着色模型:Blinn-Phong,环境光常数、漫反射(系数、平方反比、余弦)、高光(系数、平方反比、半程向量余弦幂)
  5. 着色频率:逐平面、平面内插值顶点着色、平面内插值顶点法线
  6. 插值方法:重心坐标(用三顶点坐标表示平面内点)、双线性(先 u 再 v,解决纹理过小)、Mipmap(预先计算指数级不同分辨率纹理,解决纹理过大),各向异性过滤(存长方形纹理)
  7. 渲染管线:几何 $\to$ 纹理 $\to$ 着色 $\to$ 变换 $\to$ 光栅化
  8. 高级纹理:环境光贴图、法线贴图、位移贴图
  9. 阴影贴图:从光源视角渲染深度图,像素在深度图中对应位置深度小于等于该值则有光照

五、光线追踪

  1. 传统方法:从视角发射光线,每次与场景相交时计算着色和反射折射,着色递归相加
  2. 求交:$f(\vec{o}+t\vec{d})=0$,三角形先计算平面交点再判断内外或直接套公式
  3. 加速结构:轴对齐包围盒、均匀网格、空间切分(KD 树、层次包围体)
  4. 现代方法:辐射度量学 $\to$ 渲染方程 $\to$ 蒙特卡洛积分 $\to$ 路径追踪

六、动画

  1. 基本方法:关键帧插值、物理模拟(质量弹簧、有限元、质点系统、逆运动学)、动捕
  2. 质量弹簧系统:弹力、阻尼(相对速度在连线上的投影),可模拟布料(对角网格加跳连)
  3. ODE 求解:欧拉法 $x^{t+\delta t}=x^t+\dot{x}^t\delta t$,中点法 $x^{t+\delta t}=x^t+\dot{x}_{\mathrm{mid}}\delta t$,隐式欧拉法 $x^{t+\delta t}=x^t+\dot{x}^{t+\delta t}\delta t$(逆向优化求解),四阶 Runge-Kutta 法
  4. 流体模拟:质点位置基方法,分质点法(拉格朗日)、格点法(欧拉)、物质点法(混合)

自学(4):计算机图形学
https://sqzr2319.github.io/CSDIY/CSDIY-4/
作者
sqzr2319
发布于
2026年2月16日
许可协议