1.计算机图形学概述
1.1 概述

1.2 什么是计算机图形学

计算机图形学(Computer Graphics):使用计算机合成Synthesize和处理Manipulate视觉信息。
定义中有两个关键动作:
- 合成视觉信息:根据场景中的几何形体、材质、光照和相机等信息,生成最终图像。例如,将游戏场景渲染到屏幕上。
- 处理视觉信息:对已有的视觉内容进行操作。例如,数字绘画中的曲线绘制、图形编辑,以及将数据转化为直观图形的可视化操作。
因此,计算机图形学不只是三维建模,也不只是把三维场景渲染成图片。后面介绍的光栅化、几何、光线传播、动画与模拟,都是这一大领域的重要组成部分。
1.3 为什么学习计算机图形学
应用领域
计算机图形学在很多领域都有应用,例如:
- 电子游戏:实时渲染游戏画面,以及表现不同的美术风格。
- 电影:将计算机生成的视觉效果与真实拍摄画面结合。
- 动画:生成虚拟角色、毛发、服饰、特效,以及角色的运动。
- 设计:计算机辅助设计(CAD)、产品建模和设计效果预览。
- 可视化:将科学、工程、医学、统计等数据转换为可理解的视觉信息。
- 虚拟现实(VR):让用户沉浸于计算机生成的虚拟环境。
- 增强现实(AR):在现实环境中叠加计算机生成的虚拟内容。
- 数字插画:在数字设备上绘制、编辑图像,处理笔触、曲线及透明度等。
- 模拟:模拟布料、沙尘、粒子,甚至特定条件下的光线传播。
- 图形用户界面(GUI):窗口、图标及交互界面的视觉呈现。
- 字体排印(Typography):字形的几何表示、缩放和显示。
以上并不是相互独立的技术分类。例如,一部动画电影可能同时涉及建模、毛发渲染、布料模拟和电影特效。
基础性的智力挑战
学习图形学不仅是为了生成好看的图片,还需要理解和构建逼真的虚拟世界:
- 理解物理世界:真实物体的形状、材质、光照和运动都有各自的规律。
- 创造并与虚拟世界交互:除了生成静态图片,还要考虑场景及对象如何随时间变化。
- 探索新的计算与显示方式:新的计算方法和显示技术,会带来不同的图形学问题。
技术挑战
要解决上述问题,需要综合使用多个学科的知识:
- 数学:透视投影、曲线、曲面,以及三维空间中的变换。
- 物理:光的传播、光照与着色。
- 几何:三维形体的表示与操作。
- 动画与模拟:描述物体随时间发生的变化。
- 软硬件技术:三维图形软件编程及图形硬件相关知识。
1.3.4 小结


闫令琪大佬在列举完这些应用与挑战后,用一句话概括学习图形学的理由:Computer Graphics is AWESOME!——计算机图形学太酷了!
1.4 课程内容
光栅化(Rasterization)

光栅化的核心是:将几何图元投影到屏幕上,并确定投影后的图元覆盖哪些像素位置。
曲线与网格(Curves and Meshes)

主要研究:计算机应该如何表示、创建和处理几何形体?
课件展示了两个典型例子:
- 贝塞尔曲线(Bézier Curve):使用控制点描述曲线,常见于路径、字体及曲线编辑等场景。
- Catmull–Clark 细分(Subdivision):通过网格细分,由较粗糙的网格逐步构造更光滑的曲面形状。
光线追踪(Ray Tracing)

光线追踪从另一个角度思考如何生成图像:从相机出发,沿像素对应的方向发射光线,计算光线与场景的相交及光照情况。
动画与模拟(Animation / Simulation)

动画与模拟关注的是场景中的对象应该如何随时间变化。
- 关键帧动画(Keyframe Animation):设定不同时间点的关键状态,形成连续的动画过程。
- 质点弹簧系统(Mass-Spring System):使用质点和弹簧等简化模型,描述可变形物体的运动。
例如,布料下垂、受力后的变形和摆动,可以借助物理模型进行模拟。
不包含的内容

重点学习的是图形学原理,而不是某一种图形 API 的使用教程,因此不会专门教授 OpenGL、DirectX、Vulkan 的 API 用法,也不会把 Shader 的具体语法当作课程目标。

同样,课程不会教学使用 Maya、3ds Max、Blender 建模,也不以 Unity、Unreal Engine 的游戏开发操作为教学内容。

此外,计算机视觉、深度学习等也不属于本课程的讲授范围。
核心区别是:理解图形学原理,不等于学习某个具体工具的操作;反过来,会使用图形工具也不等于已经理解其背后的图形学原理。
计算机图形学与计算机视觉的区别

用 Model(模型) 和 Image(图像) 之间的关系来更好的理解:
| 数据关系 | 课程中的直观解释 | 典型问题 |
|---|---|---|
| Model → Image | 图形学中的渲染(Rendering) | 已知三维场景,怎样生成一张图像? |
| Image → Model | 计算机视觉(Computer Vision)中的一类问题 | 已知图片,怎样推断场景和物体的信息? |
| Model → Model | 图形学中的建模、模拟等 | 怎样改变几何形状,或计算物体的运动? |
| Image → Image | 图像处理等领域中的一类问题 | 怎样对已有图像进行分析或处理? |
例如,已经知道游戏角色的模型、材质与灯光,计算屏幕画面,是典型的图形学渲染问题;从一张街景照片推断哪些区域是车辆和行人,则是计算机视觉中的一类问题。
1.5 课程安排
课程概况
- 课时:共 22 讲,包括图形学概述、数学、光栅化、几何、光线追踪和动画模拟等内容。
- 前置知识:微积分、线性代数、算法和数据结构;信号处理、数值分析、大学物理(光学)有帮助,但不是必须条件。
- 作业:官方最终课程信息列出 8 次小作业与 1 次大作业,以编程实践为主,并提供代码框架。
- 编程语言:课程小作业主要使用 C++。
参考资料

- GAMES101 官方主页(课程大纲、讲义、参考资料)
- GAMES 官方课件与视频索引
- 推荐参考书:Steve Marschner、Peter Shirley,Fundamentals of Computer Graphics,第三版或更新版本。该书为参考资料,并非必购教材。
1.6 总结
| 核心问题 | 本讲要记住的内容 |
|---|---|
| 计算机图形学研究什么? | 使用计算机合成和处理视觉信息。 |
| 为什么学习图形学? | 既有游戏、电影、设计等广泛应用,也涉及数学、物理、几何和软件工程等挑战。 |
| 四个主要领域是什么? | 光栅化、几何表示、光线传播、动画与模拟。 |
| 光栅化和光线追踪有什么区别? | 前者从几何图元投影及像素覆盖出发,后者从相机光线及其与场景的作用出发。 |
| 图形学是否等于 OpenGL 或 Unity? | 不等于。OpenGL 是图形 API,Unity 是游戏引擎;本课程的目标是理解背后的图形学原理。 |
| 图形学与计算机视觉的关系是什么? | 渲染常从模型生成图像;计算机视觉中的部分任务则从图像推断信息,但两个学科没有绝对边界。 |
计算机图形学不是某个 API,也不只是光栅化或光线追踪,而是一套理解和构建虚拟世界的基础知识体系。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com