开场
计算机图形学(Computer Graphics)研究的是如何用计算方法生成、表示和处理视觉内容。它不等同于使用某个商业软件做图,而是关注视觉内容背后的数学模型、算法和系统实现。
从课程角度看,计算机图形学可以先理解为“视觉模拟的算法”。我们给计算机一个场景描述,包括物体、材质、相机和光源,系统再计算出屏幕上的图像。很多后续内容都可以围绕这个问题展开:一个三维世界怎样被表示,怎样运动,最后怎样变成二维图像。
三条主线
计算机图形学的核心内容通常可以分成建模(Modeling)、动画(Animation)和渲染(Rendering)三条主线。
表示物体和环境] --> B[动画 Animation
描述状态随时间变化] B --> C[渲染 Rendering
模拟成像过程] C --> D[图像 Image
屏幕上的像素数组]
建模要回答“场景里有什么”。一个物体不仅有形状(shape),还可能有外观属性(appearance),例如它是否发光、怎样反射光、是否允许光穿过。模型可以由公式手工描述,也可以通过交互建模、程序生成、三维扫描、计算机视觉或生成式模型得到。
动画要回答“物体如何运动”。最直接的方式是把位置、角度和其他状态写成时间的函数。实际系统里,动画可以由关键帧(Keyframing)指定,也可以通过物理模拟、动作捕捉或行为模拟得到。
渲染要回答“图像如何形成”。它需要模拟光从光源出发,在场景中传播,与物体表面相互作用,最后进入相机并形成图像。渲染既涉及几何,也涉及光照、材质和采样。
建模
建模的对象不只是“外轮廓”。在图形系统中,一个模型至少要说明两类信息。
| 信息 | 含义 | 例子 |
|---|---|---|
| 形状 | 物体在空间中的几何结构 | 点、线段、多边形网格、曲线、曲面 |
| 外观 | 物体与光相互作用的方式 | 颜色、粗糙度、反射、透明、发光 |
例如,一张桌子的几何模型可以说明桌面和桌腿的位置;材质模型则说明它看起来是木头、金属还是玻璃。只给出几何形状,系统通常还不能产生可信的图像,因为光照结果取决于表面如何吸收、反射或透射光。
动画
动画本质上是在时间维度上组织场景状态。一个静态模型只说明某一刻的形状和位置;动画还要说明这些量怎样随时间变化。
关键帧方法适合艺术家直接控制动作。物理模拟适合处理流体、布料、雪、碰撞和刚体运动。动作捕捉适合从真实表演中获取人体姿态。行为模拟则常用于让角色或对象根据规则自动行动。
渲染和成像
渲染可以类比真实相机的成像过程。光源产生照明,光在场景中传播,碰到物体后发生反射、吸收或透射,最后一部分光进入相机并在成像平面上形成图像。
这条路径也叫光传输(Light Transport)。真实世界中的光可以看成由大量光子组成,也可以从波长和能量分布来描述。图形学中的渲染算法会根据目标取舍精度和速度。电影制作可以花很长时间计算一帧;交互应用则必须在很短时间内连续生成图像。
应用领域
计算机图形学的应用范围很广。娱乐产业关注电影、动画、游戏和虚拟现实;工业设计关注 CAD、自动加工和建筑原型;科学可视化把实验数据转成图像或动画,帮助研究者发现结构;医学可视化可以辅助理解 X 光、MRI 和三维体数据;人机交互还会涉及草图界面、三维打印和空间交互。
不同应用对图形系统的要求不同。电影渲染更强调画面质量和复杂光照,游戏和虚拟现实更强调实时性。科学可视化更强调数据忠实性,工业设计更强调几何精度和可编辑性。
光和颜色
光是电磁辐射的一种形式。它可以用波长(wavelength)描述,波的振幅影响强度。人眼只能感知电磁波谱中的一小段,也就是可见光范围。不同波长会被感知为不同颜色。
现实照明通常不是单一波长,而是许多波长及其强度的混合。完整描述需要用光谱分布(Spectral Distribution)表示,即每个波长对应多少强度。这个表示很精确,但对计算机处理并不方便。
图形系统通常把颜色简化为三维 RGB 表示。
| 颜色 | RGB 表示 |
|---|---|
| 红色 | $(1, 0, 0)$ |
| 绿色 | $(0, 1, 0)$ |
| 蓝色 | $(0, 0, 1)$ |
| 紫色示例 | $(0.6, 0.0, 0.8)$ |
RGB 的思想是用红、绿、蓝三种基色的相对贡献组合出颜色。每个通道通常归一化到 $[0,1]$。它不是对真实光谱的完整记录,而是一种便于显示、存储和计算的工程表示。
光栅图像
图像在真实成像平面上的光能分布是连续的,但计算机需要离散表示。光栅图像(Raster Image)把二维平面划分成规则网格,每个格子就是一个像素(Pixel)。
彩色图像中,每个像素通常保存一个 RGB 三元组;灰度图像中,每个像素可以只保存一个强度值。分辨率越高,网格越密,图像能表示的细节越多,但存储和计算成本也会增加。
小结
这一讲建立了计算机图形学的整体框架。建模负责描述场景,动画负责描述变化,渲染负责把三维场景转成二维图像。光、颜色和像素表示则提供了后续学习图形管线、材质、照明和图像处理的基础。