计算机图形学复习整理

引言

计算机图形学的起源

计算机图形学的发展

四大块支柱

几何造型理论与技术

参数曲线曲面(Bezier,B-spline)

隐式曲线曲面

多面体模型

设计重建(CAD软件,点云重建)

分形表现

自相似

自然属性(面积/周长,体积/表面积)

分形维数

粒子系统

流体特性(遵从流体力学规律)

海量数据(处理耗时)

物理的和数学的

渲染理论与技术

材质(物体自身特性)

纹理(物体表面模样)

颜色(与光谱相关)

光照(环境影响因素)

计算机图形学的现在

虚拟现实技术(视觉主导)

视觉,听觉,触觉,嗅觉,思维活动等的融合

多媒体/超媒体

计算机仿真(物理主导)

核试验,风洞试验,车辆安全试验,环境评估等

传感器/现实环境/仿真

计算机图形学的未来

机器制造领域

CAD/CAM/CAF+计算机网络

高速无纸化自动化作业

日常生活领域

现实世界+网络+3D虚拟世界

高效超媒体(置身其中)

与计算机图形学相关的难题

拓扑重构:庞加莱猜想与霍奇猜想

偏微分方程组:纳维-斯托克斯方程

偏微分方程:分形与混沌

离散点的空间分布:2D流形上的规律

算法设计:P与NP问题

小结

研究对象

刚体/弹性体、流体、分形结构物体

研究内容和方法

建模方法、真实感绘制方法、插值方法

图形和图像的区别

处理的对象是图像image本身,信息全部存在像素上,RGB,坐标就是二维坐标(位图)

图形学用的,是矢量图,存储物体外表结构(特征点),中间全部用插值形成(保存的是数据本身,和对数据的操作)

图形变换与观察

图形变换

什么是变换

描述的东西是同一个,其中的一个是另一个的变换

什么是几何变换,什么是图形变换

几何变换:只做几何上的操作,平移旋转等

数学变换的作用有哪些

有一系列表达形式,找哪一种表达形式是最快,消耗最少资源

变换的分类

基本变换

组合变换

变换的表达方法

矩阵

齐次坐标

三维坐标为什么要多一个w?

是因为数学上表达的便利性(透视投影)

涉及到投影,就会丢失一个维度

w也可以表示不同位置的深度

只有确定一个w时,才对应的一个实际的点

在四元组中如果只用xyz,那就给w赋值为1

典型的图形变换

线性变换(仅改变尺度)

平移变换(仅改变位置)

仿射变换(改变位置和尺度)

旋转变换(仅改变方向)

投影变换(正投影和透视投影)

线性变换

线性变换本质上是缩放变换

平移变换

平移变换和线性变换是最简单的两种基本变换

仿射变换

任何仿射变换都是线性变换和平移变换的组合运算

把齐次坐标的w赋值为1

旋转变换

对应旋转矩阵

刚体变换

旋转和平移的组合

欧拉变换

旋转变换的组合

万向节锁:丢失一个自由度

绕一个轴旋转90°会丢失一个自由度

解锁万向节:从正交矩阵提取欧拉参数

cosp可能会作为分母存在,就不能为0


张志毅名言:我们根本不知道什么东西是为什么,我们只知道事物的一个片段,人的认知是有边界的,一直问为什么是不恰当的做法

科学是探究事物之间的联系,只是探求ABCD之间的关系,并不是解释ABCD谁是谁的原因

投影变换

正投影:由6个垂直于坐标轴的面围成立方体

透视投影:由6个面围成四棱锥台

透视投影因为深度不一样会变形

观察及其实现原理

OpenGL绘制流水线四个阶段

建模,视图选择,透视除法,显示

映射到像素

计算会有小数,但是要求是整数

向下取整会有截断误差,不管怎么做都会有误差

画出来的图不可能是光滑的图,因为显示设备本来就是离散的

这种无法避免的必然结果叫“走样”,因为数值计算误差和取整的原因

只给定3个点

其他点用插值的方法做出来

真实感图形绘制

颜色模型简介

色彩感知

视觉三原色理论(RGB)

视觉对立色彩理论(明暗,红绿,蓝黄)

关于三色刺激(三原色强度混合)

物理模型(光源色度差异,多种单色)

加色法和减色法

RGB颜色表示

色调,饱和度,亮度(HSL体系)

Phone光照模型

渲染要考虑颜色纹理光照材质等

光照和着色可使图形看起来更真实、易理解。还可提供表面曲率和朝向信息,在形成图形的三维观感方面非常重要

通过分别指定光源位置和属性,及物体表面材质,来产生相应的光照、颜色和明暗变化

光照模型的要素

漫反射,镜面反射,环境反射和发射光

多种光源和颜色

Gouraud和Phong渲染

表面法向,仿射变换和法向量

简单例子

Phong光照模型的核心是一个光线如何从表面反射的模型

反射光照材料属性

两种反射:漫反射,镜面反射

三种光照:漫反射光,镜面反射光,环境光

四种表面材料属性:镜面反射属性,漫反射属性,环境反射属性,发射属性

引入二分向量进行化简

优点:当使用方向光源和非局部观察者时,l和v为常数,因此h也为常数,镜面反射光计算仅需知道每个顶点处的法向量n

环境光是来自所有方向的光,光照和反射都与方向无关

发射光不作为照射其他物体的光源

叠加原理

叠加定理叠加反射光和发射光

注意:材质属性与光的波长有关,镜面反射指数 f 与光的波长无关

Gouraud渲染

法向量计算

对几何模型进行仿射变换时需将法向量正确变换

消隐算法和深度缓存算法

消隐的本质和必要性

消隐:把三维模型投影到平面上,观察者看不见的数据就不用计算,节省存储空间和运算时间

需要符合视觉特征

目的:计算量的减少


物体表面反射的光线进入眼睛就是可见的

反射光线和视线的方向夹角小于90度,就可见

深度缓存的作用

存储量的减少

纹理映射

为解决表面建模时使用大量多边形处理效率低,复杂度高的问题,可将纹理图“贴到(映射)”光滑模型表面达到同样的视觉效果


纹理映射最简单的形式是将一幅图像贴到物体的表面

该图像可从文件读入,也可在程序内部定义从颜色缓存中复制

纹理图像是一张查找表,可保存影响表面外观的任何信息


程序中的图像是数字图像,即用m×n的像素数组保存。用该图像创建纹理后,将其视为连续数组,其坐标范围为[0,1]

在建模时为每个顶点都定义纹理坐标(s,t),s和t取值都在[0,1]。这样可得到每个顶点对应的纹理像素颜色

多边形内部像素的纹理坐标在显示阶段由插值得到

使用纹理映射的步骤

圆柱面球面环面

多级渐进纹理

多级渐进纹理是为解决当纹理像素分辨率高于屏幕像素分辨率时的纹理映射走样问题

其思想是根据原始纹理图创建不同细节等级的多个纹理图,在映射时根据映射表面对应的屏幕像素分辨率选择最适纹理图进行映射

凹凸纹理

凹凸贴图通过修改表面法向的“高度纹理” 达到该效果

光线追踪简介

光线跟踪:通过统一的方法,计算全局光照和阴影,表面消隐,光的反射和折射,投影及其他效果的技术

计算量大,比较耗时

基本思想是跟踪三维场景中光线行进路径

跟踪方向为:观察者->物体->反(透)射->光源

基本方法有:反射,阴影,透明和折射

OpenGL不支持光线追踪,需自写代码

算法整合

几何建模基础

线性插值

Bezier曲线

来源:线性插值

性质:凸包性,端点性,连续性,对称性,相似性

计算机中用这个方法计算Bezier曲线

算法和方法

算法Algorithm:一个复杂的问题拆分成很多最基本步骤,是算法

方法Method

分割方法

C连续:参数连续,对参数求导的时候,一阶,二阶,三阶导数

G连续:几何连续,直观的方向

G1:切向量方向一致

曲线是光滑的,满足C1, G1, C2, G2任何一个就行

升阶方法

任何贝塞尔曲线都可以升阶,但是不是任何贝塞尔曲线都可以降阶

只有满足特殊情况下贝塞尔曲线才能降阶

有理Bezier曲线

绘制自由度大,更灵活,可定义圆锥曲线段

B-spline曲线

来源:分段多项式

4个点可以做一个贝塞尔曲线

每一段只与对应的控制点有关

可以调节曲线中某一段的形状

NURBS曲线

Bezier曲线插值与B-spline曲线插值

细分割曲线简介

Bezier曲面

B-spline曲面与NURBS曲面

其他参数曲面简介

三维形体的表示

立体模型表示法概要

线框模型

表面模型

实体模型

构造实体几何表示法

基本思想是设定一些可用数学表达的基本形状,其它复杂形状可以通过基本形状的集合运算操作来获得

边界表示法

分形几何简介

本质特征是压缩变换

操作规则是一定的,所以只记录操作规则的数字,用对数的形式给出维数

三分康托尔集合:分为三等分,剩下两份,维数就是\(\log_32\)

粒子系统简介

随机粒子系统,流体粒子系统,方向粒子系统,结构化粒子系统





参考资料

课程PPT

课程录播