计算机图形学入门笔记 | GAMES101 Lecture 01 & 02 学习总结
本文基于 UCSB 闫令琪老师 GAMES101 课程(B站播放量384万+)的前两讲内容整理而成,结合个人学习笔记与网上资料,适合图形学初学者阅读。
一、课程简介
GAMES101:现代计算机图形学入门 是由加州大学圣塔芭芭拉分校(UCSB)的闫令琪老师主讲的一门计算机图形学公开课。闫老师本科毕业于清华大学,博士毕业于UC Berkeley,2018年凭借在视觉特效领域的贡献获得奥斯卡技术奖提名。
这门课在B站上有超过384万播放量,是中文互联网上最受欢迎的图形学入门课程之一。课程涵盖23讲内容,系统介绍了现代计算机图形学的四大支柱:光栅化、几何表示、光线传播理论、动画与仿真。
课程主页:https://sites.cs.ucsb.edu/\~lingqi/teaching/games101.html
参考教材:Fundamentals of Computer Graphics (4th Edition)(俗称"Tiger Book")
二、Lecture 01:计算机图形学概述
2.1 什么是计算机图形学?
计算机图形学(Computer Graphics,简称CG)的核心定义是:使用计算机来合成并操控视觉信息。
简单来说,CG 和计算机视觉(Computer Vision,CV)是一对"镜像"关系:
| 方向 | 输入 | 输出 | 任务 |
|---|---|---|---|
| 计算机图形学 (CG) | 3D模型/场景描述 | 2D图像 | Rendering(渲染) |
| 计算机视觉 (CV) | 2D图像/视频 | 3D模型/理解 | Modeling / Understanding |
用一句话概括:CG 是从模型生成图像,CV 是从图像理解模型。
2.2 图形学的应用领域
图形学已经渗透到我们的日常生活方方面面:
- 视频游戏:从《只狼》的全局光照到《无主之地3》的漫画风格渲染
- 电影特效:《阿凡达》的面部捕捉、《疯狂动物城》的毛发模拟
- 动画制作:《冰雪奇缘2》的布料与粒子模拟
- 工业设计:奔驰概念车的CAD设计、家装效果图
- 数据可视化:将抽象数据转化为直观的图形展示
- 虚拟现实(VR)与增强现实(AR):完全虚拟 vs 虚实结合
- 数码插画与字体设计:用电脑进行艺术创作
- 仿真模拟:物理碰撞、流体、爆炸等特效
闫令琪老师在课上说了一句很经典的话:"Forget about the previous reasons. Computer Graphics is AWESOME!"
2.3 课程四大核心主题
GAMES101 课程围绕以下四大模块展开:
- 光栅化(Rasterization):将3D三角形/多边形投影到屏幕,分解为像素片段------这是游戏等实时应用的金标准
- 曲线与网格(Curves and Meshes):如何用数学方法表示三维几何形状
- 光线追踪(Ray Tracing):模拟光线传播路径,实现逼真的全局光照效果
- 动画与仿真(Animation / Simulation):物体运动、物理碰撞、布料/流体模拟等
注意:本课程不涉及图形API(如OpenGL/DirectX)、建模软件、游戏引擎或计算机视觉的具体实现。
2.4 技术挑战
实现一个完整的图形学系统面临诸多挑战:
- 透视投影的数学原理
- 光照与着色的物理建模
- 三维形状的表示与操作
- 动画与物理仿真
- 3D图形编程与硬件实现
三、Lecture 02:线性代数回顾
图形学的底层数学基础主要是线性代数。这一讲快速回顾了图形学中最常用的向量与矩阵知识。
3.1 向量(Vector)
在图形学中,向量是一个具有方向 和长度的量。几个关键性质:
- 图形学中统一使用列向量表示
- 向量没有绝对的起点------平移不改变向量本身(只要方向和长度相同,就是同一个向量)
- 单位向量:长度为1的向量,仅表示方向。任意向量 a 可单位化:â = a / |a|
向量加法遵循平行四边形法则和三角形法则,代数上就是对应坐标相加。
3.2 点乘(Dot Product)
点乘(也叫数量积、内积)的结果是一个标量(数值):
定义公式:
a · b = |a| |b| cos θ
由此可以计算两个向量的夹角:
cos θ = (a · b) / (|a| |b|)
如果是单位向量,则简化为:â · b̂ = cos θ
点乘的性质:
- 交换律:a · b = b · a
- 分配律:a · (b + c) = a · b + a · c
- 结合律:(ka) · b = a · (kb) = k(a · b)
笛卡尔坐标系下的计算:
二维:a · b = xₐ·xᵦ + yₐ·yᵦ
三维:a · b = xₐ·xᵦ + yₐ·yᵦ + zₐ·zᵦ
点乘在图形学中的重要应用:
(1) 向量投影
计算向量 b 在向量 a 方向上的投影长度:
projₐ(b) = (a · b) / |a| = |b| cos θ
投影向量 = ((a · b) / |a|²) · a
通过投影,可以将任意向量分解为平行于 a 的分量和垂直于 a 的分量。
(2) 判断方向关系
- a · b > 0:两向量方向基本一致(夹角 < 90°)
- a · b < 0:两向量方向基本相反(夹角 > 90°)
- a · b = 0:两向量垂直(正交)
3.3 叉乘(Cross Product)
叉乘的结果是一个向量 ,这个新向量与参与运算的两个向量都正交(垂直)。
定义公式:
|a × b| = |a| |b| sin θ
方向由右手螺旋定则确定:右手四指从 a 转向 b,大拇指指向的方向就是 a × b 的方向。
叉乘的性质:
- 反交换律:a × b = −(b × a)
- 分配律:a × (b + c) = a × b + a × c
- 结合律:a × (kb) = k(a × b)
笛卡尔坐标系下的展开:
a × b = (yₐ·zᵦ − yᵦ·zₐ, zₐ·xᵦ − xₐ·zᵦ, xₐ·yᵦ − yₐ·xᵦ)
叉乘的矩阵形式:
a × b 可以写成矩阵乘法的形式:a × b = a× · b,其中 a× 是由 a 的分量构成的反对称矩阵。
叉乘在图形学中的关键应用:
(1) 判断左右方向
在三维空间中,给定两个共面的向量 a 和 b,计算 a × b:
- 结果的 z 分量 > 0:b 在 a 的左侧
- 结果的 z 分量 < 0:b 在 a 的右侧
- 结果的 z 分量 = 0:两向量共线
(2) 判断点在三角形内部(Barycentric 思想)
给定三角形 ABC 和任意点 P,分别计算:
- AB × AP
- BC × BP
- CA × CP
如果三个叉乘结果的第三分量同号(全部向上或全部向下),则点 P 在三角形内部;否则在外部。
这个方法在光栅化中至关重要------用来判断一个像素点是否被三角形覆盖,从而决定是否着色。
3.4 矩阵(Matrix)
矩阵是图形学中实现变换的核心工具。
矩阵乘法:
- 前提:第一个矩阵的列数 = 第二个矩阵的行数
- 若 A 是 M×N 矩阵,B 是 N×P 矩阵,则 AB 是 M×P 矩阵
- 计算方式:新矩阵第 i 行第 j 列的元素 = A 的第 i 行向量 · B 的第 j 列向量
矩阵运算性质:
- 不满足交换律:AB ≠ BA(这是最重要的区别!)
- 满足结合律:(AB)C = A(BC)
- 满足分配律:A(B + C) = AB + AC
矩阵转置:
(AB)ᵀ = BᵀAᵀ
单位矩阵(Identity Matrix):
对角线全为1,其余为0的矩阵。任何矩阵乘以单位矩阵等于自身:AI = IA = A
逆矩阵:
AA⁻¹ = A⁻¹A = I
(AB)⁻¹ = B⁻¹A⁻¹
矩阵在图形学中的核心应用------坐标变换:
通过矩阵乘法可以实现平移、旋转、缩放等变换操作。例如,二维空间中沿 y 轴翻转(x 变号)的变换矩阵为:
| -1 0 |
| 0 1 |
作用于列向量 x, yᵀ 得到 -x, yᵀ。
3.5 正交标准坐标系(Orthonormal Frame)
在图形学中,我们常用三个互相正交的单位向量 (a, b, w) 来定义一个坐标系:
- a · b = 0, a · w = 0, b · w = 0(正交)
- |a| = |b| = |w| = 1(单位长度)
- a × b = w(右手系)
任意向量 p 可以用这个坐标系表示为:
p = (p · a)a + (p · b)b + (p · w)w
这就是向量在正交基下的分解,是后续坐标变换的理论基础。
四、学习心得与资源推荐
4.1 学习心得
通过前两讲的学习,我对计算机图形学有了全新的认识:
- 图形学不只是"画图":它融合了数学(线性代数、微积分)、物理(光学、力学)、计算机科学等多个学科的知识
- 数学是基石:向量运算(点乘、叉乘)和矩阵变换是贯穿整个课程的核心工具
- 理论与实践结合:GAMES101 的特色在于每讲都配合编程作业(C++),通过实际代码加深理解
4.2 推荐资源
| 资源 | 说明 |
|---|---|
| GAMES101 课程主页 | https://sites.cs.ucsb.edu/\~lingqi/teaching/games101.html |
| B站视频合集 | https://www.bilibili.com/video/BV1X7411F744 |
| 参考教材 | Fundamentals of Computer Graphics (4th Edition) |
| GAMES平台 | http://games-cn.org(计算机图形学与混合现实在线平台) |
本文是个人学习笔记的整理分享,欢迎交流讨论。如有错误欢迎指正!
参考资料:GAMES101课程课件、The Tiger Book第四版、CSDN/博客园相关笔记等。