第十章、计算机图形学
许多人认为计算机动画在不久将来会取代整个影视产业对传统的演员、布景和照片的需求
计算机图形学包含的方面:
- 图形、图表
- 图形化用户界面的开发
- 照片的操作
- 视频游戏的制作
- 动画电影的生成
1. 计算机图形学的范畴
2D图形学
- 用于生成图像
图像处理
- 用来图像分析,进行模式识别
3D图形学
- 建造三维场景的数字编码版本,然后模拟照相的过程,产生这些场景的图像
- 适用于交互视频游戏和动画电影
- 三维人机接口
2. 3D图形概述
创建和显示的过程
1. 建模
- 由数字编码数据和算法构成
2. 渲染
- 通过投影显示二维图像,还要取决于你的图像视窗的大小,来显示不同的样貌
- 还需要计算场景中物体和光线如何交互
- 当确定了每个像素的外观后,结果被表示为图像的位图,集中存储在称为帧缓冲区(frame buffer)的存储区中
3. 显示
3. 建模
3D计算机图形学的其实阶段与戏剧舞台制作方式十分相似:必须设计出布景,收集或者搭建所需的道具
- 在计算机图形学中的术语,布景成为场景(scene),道具成为物体(object)
3.1 单个物体建模
3.1.1 形状
网格表示所有物体的形状确立了渲染处理的同意方法——可以更高效地渲染整个场景
在3D图形中的物体的形状通常被描述成称为平面片(planar patch),的小平面集合,期中每一个都是一个多边形。这些多边形形成了多边形网络(polygonal mesh),被近似于描述物体的形状。通过使用小平面,近似值可以达到所需的精度。
- 多边形网格中的平面片经常选择三角形,因为在三维空间中最少使用三个点表示一个平面
- 一个物体的多边形网格可以展现可以通过多种途径获得,如:以所需形状的精确的集合描述开始 $$ r^2 = x^2+y^2+z^2 $$
- 基于这个公式,我们可以建立球上的经线和纬线方程,标识这些线的交叉点,然后使用这些点作为多边形网格中的顶点
更一般的形状可以使用更复杂的分析方法来描述
贝赛尔曲线
- 在三维空间中只用几个称为控制点的点来定义曲线段(两个点表示端点,其他点表示曲线的弯曲方式)
- 贝塞尔曲面可以用来获得复杂表面的网格信息
蛮力获取物体表面的多边形结构
- 通过类笔设备触摸表面,记录模型表面点的位置
对于非常复杂,难以用集合建模或手工数字化获得模型
- 通过编写自动构建所需形状的程序——程序化模型(procedural model)
- 对于相似而又唯一复杂的对象,使用分支规则,即语法分析器构建对象
粒子系统
将物体的基础结构模拟为一个大的粒子集合
- 通过预定义的规则去移动系统中的粒子,来生成所需的形状
- 如水、火苗的闪烁、云、拥挤的人群
分型
豪斯多夫维数大于其拓扑维数的几何物体
- 科赫雪花,通过重复地用相同的结构的较小版本替换结构中的直线段二形成的
- 在3D图形领域经常是程序化模型的主干,用于生成山脉、蔬菜、云和烟的图像
3.3.2 表面特征
- 通过纹理映射,将图像与一个物体的表面相关联
- 在平坦的表面,纹理映射效果最好。如果必须大幅扭曲纹理图像区覆盖弯曲的表面,在接缝出纹理模式可能不与它本身融合,效果会不够逼真
3.3.3 寻求逼真的效果
- 人类皮肤的逼真模型(光渗透的表皮和真皮层的程度)
- 头发(对风的外力、半透明特性、纹理深度、悬垂性)
- 布(纹理、机械工程知识(拉伸、修剪等))
3.2 整个场景的建模
当场景中的物体得到充分的描述和数字化编码,被赋予了位置、大小和方向——场景图(scene graph)的数据结构
- 包含与光源的特殊物体及表示相机的特殊物体的链接,期中记录了相机的位置、方向和焦点等特性
- 类似传统的摄影工作室,但场景图描述的是一个虚拟的世界
- 前景比背景更需要精度
- 另一个设想是,场景由智能模型构成,会根据相机的移动,改变自身的特性
4. 渲染
物体的外观是由物体发出(反射)的光决定的
4.1 光-表面交互
- 照射到物体表面的光可能被反射、吸收、穿过等
4.2 裁剪、扫描转换和隐藏面的消除
- 渲染流水线,通过一个投影中心形成的椎体,可以不用考虑椎体外边的物体(称为裁剪)
- 然后确定剩余平面上的点,将像素和场景中的点关联起来(称为扫描转换),像素越高,渲染细节就越多
- 也就是用到投影的技能,用光栅来表示
- 然后还要去除那些被遮挡的点(称为隐藏面消除)
- 关于隐藏面消除有许多做法,比如后面消除法、画家算法、Z缓冲区
4.3 着色
- 平面着色,表示的是多边形网格本身的图像,而不是用网格建模的物体图像
- Gouraud着色、Phong着色
- 凹凸映射,表面外观朝向加上一个小的变量
4.4 渲染——流水线硬件
只实现了局部照明模式,对于全局照明模式,没有考虑到两个物体之间的交互
- 在电子电路中实现了,通过超大规模集成电路(VLSI)技术已经被微缩为芯片,自动完成整个渲染线的工作
- GPU
- 为了减少对特定图形平台的依赖,使用了(OpenGL、Direct3D等标准软件接口)
- 但对于物体的交互,在这常常用时模拟投影,来实现
5. 处理全局照明
- 光线跟踪、辐射度;两种方法都极为精准,但是费时
光线跟踪
沿着光线反向跟踪以找到他的光源的过程
- 缺点是只跟踪镜面反射,可以通过分布式光线跟踪来去除这种效果
- 通过递归调用来找到光源,费时,一般在电影工作室使用
辐射度
考虑通过两个平面片对之间的辐射光能的总和,采取了更加区域化的方法
- 辐射的光能本质是散射光
- 一个物体对另一个物体的影响程度称为形状因子(form factor)
- 因为需要考虑许多面片,计算量是很大的
- 优点在与物体的显示不受相机的影响,捕获了光的许多微特征,如渗色(color bleeding)
6. 动画
最后更新: 2018年07月11日 14:10
原始链接: https://ilifexiao.github.io/2018/06/17/计算机科学概论/第十章、计算机图形学/