Computer Science · An Overview · Chapter 10

计算机图形学COMPUTER GRAPHICS

计算机图形学应用计算机技术制作和操控视觉表现——本章聚焦 3D 图形学:先建造虚拟世界的数字编码版本(建模),再模拟摄影过程把它“拍成”二维图像(渲染),最后让画面动起来(动画)。背景中的线框正在实时完成一次“三维 → 二维”的投影。

建模 modeling渲染 rendering显示 display 多边形网络 polygonal mesh贝塞尔曲线 Bezier curve 镜面光 specular漫射光 diffuse光线跟踪 ray tracing 辐射度 radiosity帧 frame关键帧 key frame
3D 图形学流水线示意图
从线框到真实感图像——3D 图形学把数字编码的虚拟场景,渲染成我们看到的二维画面。
Learning Map

本章学习地图

每节末尾附「本节小结」与 2 道课堂选择题(A / B / C / D),共 12 题,参考答案见页尾。一条主线:建模给世界,渲染给像素,动画给时间

小节核心问题关键概念
10.1 计算机图形学的范围2D、图像处理与 3D 有何分工?2D 图形学 · 图像处理 · 3D 图形学
10.2 3D 图形学概述一张 3D 图像如何诞生?建模 → 渲染 → 显示 · 帧缓冲区
10.3 建模虚拟物体和场景如何表示?平面片 · 多边形网络 · 贝塞尔 · 程序化模型 · 场景图
10.4 渲染如何算出每个像素的颜色?镜面光/漫射光 · 折射 · 渲染流水线 · 着色
10.5 处理全局光照如何模拟光的全局传播?光线跟踪 · 分布式光线跟踪 · 辐射度 · 渗色
10.6 动画静态场景怎样动起来?帧 · 变形 · 故事板 · 关键帧 · 运动学/动力学
10.1 The Scope of Computer Graphics

10.1 计算机图形学的范围

计算机图形学 computer graphics:应用计算机技术制作和操控视觉表现的分支——文本呈现、图表构建、图形化用户界面、照片处理、视频游戏、动画电影,都属于它。“计算机图形学”一词如今越来越多地专指 3D 图形学,本章也聚焦于此。

2D Graphics

2D 图形学:生成图像

处理生成图像——把二维图形(圆、矩形、文字等)转化为像素模式来产生图像。

例:绘图软件画流程图;统计软件把数据绘成柱状图。

Image Processing

图像处理:分析图像

处理分析图像——分析图像中的像素来识别模式,以达到增强或“理解”图像的目的。

例:照片去瑕疵、去红眼;医学影像中识别病灶;把几张照片的部分剪切拼贴成并不反映现实的新图像。

3D Graphics

3D 图形学:三维转图像

把三维场景转换成二维图像:① 建造三维场景的数字编码版本——创建、编码、存储和处理场景,是创造性的艺术过程;② 模拟摄影过程制作这些场景的图像——是密集的计算过程

本节小结 · 10.1

2D 图形学“生成”图像,图像处理“分析”图像,3D 图形学把虚拟三维世界“拍成”二维图像——三者同属计算机图形学。数字图像可以生成、可以处理、也可以组合;计算让我们能创造性探索现实与虚拟现象。一句话:生成(2D)· 分析(图像处理)· 模拟拍摄(3D)

课堂练习 · 10.1(单选,参考答案见页尾)
Q1关于 2D 图形学与图像处理(image processing),正确的是?
答案 B。2D 图形学是把图形“生成”为像素模式;图像处理恰好相反——分析已有图像的像素,增强或理解图像。
Q23D 图形学把三维场景转换为图像的过程是?
答案 B。第一步是创造性的艺术过程(搭建数字场景),第二步是密集的计算过程(模拟拍照)。
10.2 Overview of 3D Graphics

10.2 3D 图形学概述

创建并显示一幅 3D 图像的整个过程由三步构成:建模 modeling → 渲染 rendering → 显示 display

Step 1 · Modeling

建模:搭建虚拟世界

用数字编码数据和算法设计、构建布景。在计算机图形学背景下产生的场景,可能在现实中永远都不存在——这是创造性活动。

Step 2 · Rendering

渲染:模拟拍照

通过计算场景中的物体如何出现在由特定位置的摄像机拍摄的照片中,制作场景的二维图像。

Step 3 · Display

显示:位图入帧缓冲区

每个像素的外观确定后,结果被表示成图像的位图,集中存储在帧缓冲区 frame buffer中,再送屏幕显示或存入持久存储器。

Frame Buffer

帧缓冲区

存储最终图像的存储区域——可能是主存储器中的一块区域;在配备专用图形硬件的系统中,也可能是一块专用存储电路。其中图像要么立即显示,要么传送到更持久的存储器以备以后显示。

Two Natures

两步性质不同

建模是创造性的艺术过程(像布置摄影棚);渲染是密集的计算过程(像真正按下快门)。理解这一区分,就理解了 3D 图形学的分工。

本节小结 · 10.2

三步流水线:建模(用数字编码搭虚拟世界)→ 渲染(模拟摄影算出每个像素)→ 显示(位图存入帧缓冲区再显示)。一句话:建模是艺术,渲染是计算,显示靠帧缓冲区

课堂练习 · 10.2(单选,参考答案见页尾)
Q3在 3D 图形学中,“渲染”(rendering)的任务是?
答案 C。A 是建模,B 是显示,D 是建模中的“数字化”手段;渲染 = 模拟摄影。
Q4帧缓冲区(frame buffer)中存储的是?
答案 B。渲染确定了每个像素的外观后,结果作为位图集中存入帧缓冲区,等待显示或持久存储。
10.3 Modeling

10.3 建模:搭一个不存在的世界

3D 项目的开始方式与戏剧舞台制作十分相似:布景叫场景 scene,道具叫物体 object。3D 场景是虚拟的——组成它的物体由数字编码模型“构建”,并非物理结构。模型是现实的简化:模型越精确,图像质量越高,但渲染时间越长

Planar Patch & Polygonal Mesh

形状:平面片与多边形网络

物体的形状 shape 被描述成小平面——平面片 planar patch 的集合;这些多边形构成多边形网络 polygonal mesh 逼近物体形状。平面片常选三角形:三个顶点是三维空间中确定一个平面所需的最少点数;整个网格可表示为其平面片顶点的集合。

Bezier Curve / Surface

贝塞尔曲线与曲面

规则形状可用分析方法描述:贝塞尔曲线 Bezier curve 只用几个控制点在三维空间中定义曲线段,移动控制点,曲线就被扭曲成不同形状;该思想扩展到三维即贝塞尔曲面 Bezier surface。例:字体轮廓、汽车车身曲面。

Digitizing

数字化:蛮力获取网格

无法用优雅数学技术表示时:先构建物体的物理模型,再用能记录自身三维空间位置的笔触摸表面、逐点记录位置——这个过程叫数字化 digitizing;得到的点集用作顶点,构成描述形状的多边形网格。

Procedural Model & Particle System

程序化模型与粒子系统

形状太复杂、几何建模和手工数字化都难获得时,可编写自动构建所需形状的程序——程序化模型 procedural model(应用算法生成所需结构的程序单元),能高效生成多个相似又独特的复杂物体。另一种方法是粒子系统 particle system:把物体基础结构模拟为大粒子集合,按预定义规则移动粒子产生所需形状。例:火焰、烟雾、人群、草丛。

Texture Mapping

表面特征:纹理映射

多边形网格只捕获形状;渲染系统可在渲染时丰富表面特征。纹理映射 texture mapping:将一个预定义的图像与物体的表面相关联。用于平坦表面效果最好;大幅扭曲纹理或包裹出接缝时不够逼真。已被证明高效,广泛用于实时敏感场合。

Fractal

寻求逼真:分形

分形 fractal:通过把较低维度物体的副本“打包”而形成的几何体,通常用递归过程生成——每次激活重复打包更小的副本。结果处处自相似:放大任何部分,看到的仍像它自身。例:海岸线、树木、云朵、雪花。

多边形网格与光滑着色对比
同一个物体的两种面貌:左边是多边形网络(三角面片逼近形状),右边是光滑着色后的效果——网格是“骨架”,渲染是“皮肤”。
动手试一试:贝塞尔曲线——拖不动,但看得见Interactive · Bezier Curve
一条三次贝塞尔曲线由 4 个控制点定义:两个端点(实心)决定曲线从哪里出发、到哪里结束;两个控制点(空心)像磁铁一样把曲线“拉”向自己。观察控制点移动时曲线如何被扭曲——字体轮廓和车身曲面就是这样被设计师捏出来的。
曲线经过两个端点,但一般不经过中间的控制点——控制点决定“趋势”,端点决定“起止”。
Scene Graph

场景图:描述虚拟世界

物体经充分描述和数字编码后,被赋予场景内的位置、大小和朝向,这些信息链接成场景图 scene graph。它类似传统摄影的工作室布置——摄像机、灯光、道具、背景各就各位;不同的是,场景图里全是数字编码表示。简而言之:场景图描述的是一个虚拟世界

Milestone

场景图的分量

场景图包含制作最终图像所需的一切信息。它的完成标志着艺术建模过程的结束,和渲染这一计算密集型过程的开始——是 3D 流水线的分水岭。

本节小结 · 10.3

形状 = 平面片的集合 = 多边形网络(常用三角形,顶点集合即可表示);获得网格的三条路:数学描述(贝塞尔曲线/曲面)→ 手工数字化 → 程序化生成(算法/粒子系统)。纹理映射丰富表面,分形用递归自相似造复杂形体,场景图组织整个虚拟世界。一句话:网格是骨架,纹理是皮肤,场景图是整个舞台

课堂练习 · 10.3(单选,参考答案见页尾)
Q5多边形网络中的平面片常选择三角形,主要原因是?
答案 B。三点必共面——三角形永远不会“翘曲”,且只需记录三个顶点,最经济。
Q6纹理映射(texture mapping)指的是?
答案 D。A 是数字化,B 是分形,C 是程序化模型;纹理映射 = 把图像“贴”到表面上。
10.4 Rendering

10.4 渲染:模拟光的行为

渲染 rendering:确定场景图中的物体投影到投影平面时将如何显示。物体的外观由从它发出的光决定——确定外观的任务,最终变成对光的行为的模拟。照射到表面的光可能被吸收、被反射、或穿过表面形成折射。

Specular Light

镜面光

反射定律:光线以入射角 incidence angle 射到表面,反射角与入射角相同(相对于法线测量),入射光线、反射光线与法线共面。光滑表面上平行光仍以平行方向离开——形成镜面光 specular light,即表面明亮的高亮区;它与表面接触时间最短,颜色最接近原始光源

Diffuse Light

漫射光

真实表面很少绝对光滑:光线在表面微粒间跳弹,向不同方向散开——形成漫射光 diffuse light。它与表面接触更久,更受材料吸收特性影响,颜色更接近物体本身。发亮表面镜面光多于漫射光;灰暗表面漫射光多于镜面光。

Anisotropic vs Isotropic

各向异性与各向同性表面

某些表面有细微特性:入射方向不同,镜面光与漫射光的比例也不同——旋转时外观从明亮变为灰暗,称为各向异性表面 anisotropic surface(如拉丝金属、丝绸);明亮度保持不变的称为各向同性表面 isotropic surface,反射模式对称。

Refraction

折射

光照射透明物体时穿过而非反射,方向改变即折射 refraction,程度由材料折射率决定(密度高→折射率高)。进入折射率较高的材料:向靠近法线方向弯曲;反之远离法线。渲染软件还须知道:表面哪面朝内、光线正进入还是离开物体。例:水杯中的筷子“折”了。

动手试一试:镜面光 vs 漫射光Interactive · Surface Roughness
拖动滑块改变表面粗糙程度:表面越光滑,高光越小越亮(镜面光占主导,接近光源色);表面越粗糙,高光散开变弱(漫射光占主导,呈现物体本身的颜色)。
镜面光 = 光源的“镜像亮斑”;漫射光 = 被表面染色后向各方向散开的光。
渲染流水线步骤做什么要点
① 裁剪 clipping去掉每个物体在视体 view volume(投影中心向图像窗口各角延伸出的棱锥区域)外面的部分看不到的就不算——平面片与视体边界逐一比较,只留下完全在视体内的多边形网络
② 扫描转换 scan conversion又称光栅化 rasterization:把保留平面片上的点与最终图像中的像素位置关联从投影中心向每个像素位置引投影线,求它与平面片的交点;落在两个像素中间的细节在最终图像中不可见
③ 隐藏面消除 hidden-surface removal识别并去除场景中被遮挡的点前面的物体挡住后面的——只留下摄像机“看得见”的表面
④ 着色 shading确定面片在该点朝向摄像机发出的光的外观平面着色 flat shading 呈小平面状;Gouraud 着色插值颜色、Phong 着色插值朝向(更易捕捉面片内部高光);凹凸映射 bump mapping 添加表面质感
Graphics Card

渲染流水线硬件:图形卡

流水线已用超大规模集成电路(VLSI)技术微缩成芯片——图形卡 graphics card(图形适配器),作为专用控制器连到计算机总线上。应用软件只需交出场景图,硬件执行流水线并把结果放进帧缓冲区:渲染流水线被简化为一个抽象工具

Aliasing

图形走样

当期望图像中的模式与组成图像的像素密度不匹配时,就会出现图形走样 aliasing——斜边呈现锯齿状。渲染计算成本很高,必须采用各种技术丢弃不影响最终结果的模型细节。

本节小结 · 10.4

光到表面三条路:吸收、反射、折射;反射分镜面光(亮斑、近光源色)与漫射光(柔和、近物体色)。渲染流水线四步:裁剪(留视体内的)→ 扫描转换/光栅化(对齐像素)→ 隐藏面消除(去遮挡)→ 着色(算颜色),由图形卡硬件完成。一句话:镜面光画“亮”,漫射光画“色”,折射画“透”,流水线四步一次走完

课堂练习 · 10.4(单选,参考答案见页尾)
Q7关于镜面光与漫射光,正确的是?
答案 C。镜面光接触时间最短、保持光源色;漫射光被材料“染色”,呈现物体色——所以亮斑总是偏白。
Q8渲染流水线处理不透明物体反射光的正确顺序是?
答案 A。先剪掉视体外的,再把点对准像素,再去掉被遮挡的,最后算颜色——着色总是最后一步。
*10.5 Dealing with Global Lighting

10.5 处理全局光照

传统渲染流水线是局部光照模型——算每个面片时不管别的物体。要模拟光的全局传播,有两套方案:光线跟踪辐射度。(本节为选学内容)

Ray Tracing

光线跟踪:沿光线反向追踪

光线跟踪 ray tracing:对要渲染的像素,确定它与投影中心所在的直线,沿此直线反向追踪光线进入场景,直至接触物体——若是光源则终止(像素取光源颜色);否则计算表面特征,找出产生该光线的入射光方向,递归地继续追踪。遇透明物体时分成两路:同时追踪反射光与折射光。

终止条件:光线碰上光源;不再与任何物体相交;达到递归次数上限;或表面吸收率已使入射光几乎无影响。

Distributed Ray Tracing

局限与改进

缺点一:光线跟踪仅跟踪镜面光——渲染出的物体往往都有光泽的外观。改进:分布式光线跟踪 distributed ray tracing——从反射点同时追踪多条方向略异的光线。

缺点二:非常费时——没有在“消费者级”实时系统中实现,只见于实时性要求不高的“专业水平”应用(如电影特效)。

Radiosity

辐射度:区域化的方法

辐射度 radiosity:考虑每对平面片之间辐射光能(本质上是漫射光)的总和——每个物体的外观都要算上从其他物体接收的光能。形状因子 form factor:一个物体辐射的光对另一个物体外观的影响程度。渗色 color bleeding:一个物体的颜色影响其周围其他物体的色调。优点:结果与视点无关,捕获光的许多细微特征。

Trade-off

辐射度的代价

缺点:计算量非常大,无法满足当前消费市场图形系统的实时要求;且无法捕获镜面光的细节——用它渲染的表面倾向于灰暗的外观。实践中与光线跟踪互补:一个管漫射的全局柔和,一个管镜面的高光反射。

动手试一试:一条光线的反向旅程Interactive · Ray Tracing
场景:左侧是摄像机和图像窗口(紫色竖线),中间是一个镜面球和一个普通球,右上方是光源。点击「追踪下一段」,看这条光线如何从像素出发、经镜面反射、再碰到漫射表面,最终找到光源——每一步都是一次递归。
光线跟踪是“逆向思维”:不从光源出发,而从像素出发,倒推光从哪里来。
本节小结 · 10.5

光线跟踪沿光线反向递归追踪,擅长镜面反射与折射,但只追镜面光、非常费时(分布式光线跟踪可缓解);辐射度计算面片间的漫射光能交换,能表现渗色、与视点无关,但抓不住镜面高光、同样费时。一句话:光线跟踪抓“镜面”,辐射度抓“漫射”——两手都要硬,但都费时

课堂练习 · 10.5(单选,参考答案见页尾)
Q9关于光线跟踪(ray tracing),正确的是?
答案 B。只追镜面光→物体亮闪闪;分布式光线跟踪是补救;费时使其只适合非实时专业应用。
Q10渗色(color bleeding)指的是?
答案 C。A 是折射,B 是各向异性,D 是图形走样;渗色是辐射度方法能捕获的全局光照效果。
10.6 Animation

10.6 动画:给虚拟世界加上时间

计算机成像 computer generated imagery(CGI):利用计算机技术制作和显示呈现运动的画面。动画通过快速连续地显示一系列称为帧 frame 的静止图像来实现。

Frame & Frame Rate

帧与帧率

帧 frame:动画序列中的单个静止图像,以固定时间间隔捕获变化场景的外观——顺序展示便产生观看连续场景的错觉。电影业标准:每秒 24 帧;广播视频标准:每秒 60 帧。帧可传统摄影制作,可计算机人工生成,也可两者结合。

Morphing

变形

变形 morphing:一个物体看起来逐渐变成另一个物体。取变形前最后一帧与变形后第一帧为关键帧,用控制点 control point 把前后帧的特征(点、线)关联,再用数学技术逐渐扭曲,生成填充两个关键帧之间的图像序列——变形幻象由此产生。

Storyboard · Key Frame · In-betweening

故事板、关键帧与中间渐变

故事板 storyboard:以关键点场景草图讲述完整故事的二维图像序列——动画项目从这里开始。主动画师把故事板细化成关键帧 key frame(固定时间间隔的角色与场景外观);助理动画师绘制填充两个关键帧间隔的帧,使动画连续平滑——这个过程叫中间渐变 in-betweening

3D Animation

3D 动画中“移动”的真相

3D 项目中故事板只是构建三维虚拟世界的蓝图。物体“移动”的真实含义:物体是场景图中的数据集合,其中存放指示位置与朝向的值——改变这些值就完成了“移动”,新值用于渲染,物体便在最终的二维图像中看起来动了。

动手试一试:帧率与中间渐变Interactive · Frames & In-betweening
画面里有 2 个关键帧(实心球:起点与终点)。先点「生成中间帧」——软件自动补出的过渡帧(空心球)就是中间渐变;再选帧率点「播放」,感受 12 / 24 / 60 帧每秒的差别:同样的运动,帧率越低越“卡”。
动画的本质是错觉:足够快的静止图像序列,就被看成连续的运动。
Kinematics

运动学

运动学 kinematics:根据物体各部分间的相对运动方式来描述物体的运动。例:角色行走时小腿相对大腿、大腿相对躯干如何摆动——只描述“怎么动”,不问“为什么动”。

Dynamics

动力学

动力学 dynamics:应用物理定律确定力作用于物体的效果,以此描述运动。例:小球自由下落的加速、布料随风飘动、爆炸碎片飞散——由力推算运动。

The Animation Process

今天的动画制作过程

动画师用软件操纵场景图中的三维虚拟物体,创建一系列虚拟场景,再逐一“拍摄”成动画。常见做法:只为关键帧制作场景,然后由软件应用动力学与运动学,把场景图中的物体从一个关键帧位置自动移到下一个关键帧位置,自动渲染出中间渐变帧——曾经靠助理动画师手绘的中间渐变,如今被软件接管了。

本节小结 · 10.6

动画 = 帧的快速连放(电影 24 fps、广播视频 60 fps);变形 = 关键帧 + 控制点 + 数学插值;流程 = 故事板 → 关键帧 → 中间渐变。3D 中“移动”只是改场景图里的数值再渲染;运动学描述相对运动(怎么动),动力学由物理定律推运动(为何动)。一句话:人做关键帧,软件补中间——动画的错觉来自足够快的静止

课堂练习 · 10.6(单选,参考答案见页尾)
Q11电影业的标准显示速率是?
答案 B。电影是 24 帧/秒;60 帧/秒是广播视频的标准。
Q12“中间渐变”(in-betweening)指的是?
答案 D。主动画师画关键帧,中间帧由中间渐变补出——今天这一步常由软件自动完成。
Answer Key

课堂练习参考答案(共 12 题)

逐题一句话解析;错题请回到对应小节复习。速记:10.1→B B|10.2→C B|10.3→B D|10.4→C A|10.5→B C|10.6→B D

10.1 范围

Q1B图像处理分析像素识别模式;“生成像素模式”是 2D 图形学。

Q2B3D 图形学 = 先建数字场景(艺术),再模拟拍照(计算)。

10.2 3D 概述

Q3C渲染 = 模拟摄影:算物体在特定机位照片中的样子。

Q4B帧缓冲区存的是像素外观已确定的位图。

10.3 建模

Q5B三点定一面——三角形是最经济、永不翘曲的面片。

Q6D纹理映射 = 把预定义图像贴到物体表面上。

10.4 渲染

Q7C镜面光接触短、近光源色;漫射光接触久、近物体色。

Q8A先裁剪留视体内的,再对齐像素,去遮挡,最后着色。

10.5 全局光照

Q9B光线跟踪只追镜面光且费时;分布式光线跟踪是补救。

Q10C渗色:一个物体的颜色“染”到周围物体上。

10.6 动画

Q11B电影 24 帧/秒;广播视频是 60 帧/秒。

Q12D关键帧之间的过渡帧由“中间渐变”补出。

Summary & Glossary

全章总结与术语表

计算机图形学把虚拟世界的搭建(艺术)与光、像素的计算(计算)连成一条流水线。下一章预告:人工智能

小节一句话总结
10.1 范围2D 生成图像、图像处理分析图像、3D 把虚拟世界拍成图像
10.2 概述建模(艺术)→ 渲染(计算)→ 显示(帧缓冲区)
10.3 建模形状 = 平面片/多边形网络;贝塞尔、数字化、程序化模型;场景图组织一切
10.4 渲染镜面光/漫射光/折射;流水线四步:裁剪 → 扫描转换 → 隐藏面消除 → 着色
10.5 全局光照光线跟踪抓镜面(递归、费时);辐射度抓漫射(形状因子、渗色)
10.6 动画帧的快速连放;故事板 → 关键帧 → 中间渐变;运动学与动力学让运动自动化
计算机图形学 computer graphics图像处理 image processing 建模 modeling渲染 rendering 帧缓冲区 frame buffer场景 scene 平面片 planar patch多边形网络 polygonal mesh 贝塞尔曲线 Bezier curve数字化 digitizing 程序化模型 procedural model粒子系统 particle system 纹理映射 texture mapping分形 fractal 场景图 scene graph入射角 incidence angle 镜面光 specular light漫射光 diffuse light 各向异性表面 anisotropic surface折射 refraction 渲染流水线 rendering pipeline视体 view volume 裁剪 clipping扫描转换 scan conversion 光栅化 rasterization隐藏面消除 hidden-surface removal 着色 shading图形卡 graphics card 光线跟踪 ray tracing辐射度 radiosity 形状因子 form factor渗色 color bleeding 计算机成像 CGIframe 变形 morphing控制点 control point 故事板 storyboard关键帧 key frame 中间渐变 in-betweening运动学 kinematics 动力学 dynamics