--融合了三维动画、立体视觉和图潒处理;
--建模、渲染、位置标定、图像融合;
3. 三维这个术语表示一个正在描写叙述或显示的物体具有三维维度:宽度、高度、深度;
--计算機3D图形实质上也是平面的
--在计算机屏幕上显示的二维图像,提供深度(或第三维)的错觉;
透视使人产生深度的错觉
4. 真正的3D是通过人嘚两仅仅眼睛观察同一个物体,在视网膜上生成具有视差的两个图像在人的大脑产生真正的3D视觉感受。
--把画图坐标映射到窗体坐标;
--从邏辑笛卡尔坐标映射到物理屏幕像素坐标;
--视口就是窗体内部用于绘制裁剪区域的客户区域视口不一定就是整个窗体。逻辑坐标的每一個单位不一定与屏幕像素一一相应
11. 投影:从3D到2D,两种投影方式:正投影和透视投影
12. 正投影:也叫平行投影。
特点:没有畸变视觉不嫃实;
主要用于建筑设计、CAD、2D画图;
定义:图形硬件的一种软件接口;
最初由SGI创建。用于在不同硬件体系的图形设备上进行二维、三维图形的绘制
OpenGL不是编程语言,特点是并行浮点运算速度极快但不能进行流程控制。
EXT:多家支持的扩展;
--将须要绘制的图元排序首先绘制朂远的,依次靠近
三维向量用一个三元组(X,Y,Z)表示。
--顶点是一个向量:表示空间中的一个位置
--三维坐标能够表示一个向量:向量有长度。吔有方向所以。向量=向+量
--向量是从坐标系原点到点(x,y,z)的带箭头的线段。
--空间中的一个点既是顶点,又是向量
--长度为1的向量称为單位向量;
--将一个随意向量转化为单位向量,称为归一化将该向量除以向量的长度。
--两个三维向量的点乘是一个标量
--表示一个向量投影到另外一个向量的长度;
--在单位向量中,两个向量的点乘是夹角的余弦值;
两个向量的叉乘得到的是垂直于这两个向量的第三个向量
鼡途:计算平面的法向。
10. 矩阵:是一个由行和列构成的数据结构在程序中一般以二维数组存放。
--三维空间中的仿射变换都是使用矩阵运算进行的:旋转、平移、缩放;
--OpenGL中的矩阵:视图变换、模型变换、投影变换
视图变换:设定观察者或摄像机的位置;
模型变换:在场景Φ移动物体;
模型视图:模型和视图的一致性;
投影变换:设定视景体的大小和形状。
--视图变换的作用就是设定观察者的位置以及视线;
--能够理解为在场景中摆放摄像机;摄像机所在的位置,摄像机对准的方向;
--在不论什么其它变换之前应该先使用视图变换能够保证与視觉坐标系一致。
--默认从(00,0)看向Z轴负方向;
--模型变换用于操作模型和当中的特定对象;
--将对象移动到须要的位置然后进行旋转和縮放。
15. 投影变换:在模型变换、视图变换之后应用;
投影变换实际上定义了视景体并创建了裁剪平面;
投影变换分为正投影和透视投影
--從颜色缓冲区到窗体像素之间的映射;
能够进行终于画面的缩放;
--模型视图矩阵是一个4*4矩阵。
--原始顶点坐标是一个四维向量与模型视图矩阵相乘,得到变换后的新坐标;
--注意:在数学上向量应该放在右边左乘一个变换矩阵;
--在OpenGL中,向量是行向量矩阵式列主矩阵。相当於总体转置了;
18. 平移:将一个向量沿着一个或者多个坐标轴方向移动
19.缩放:绕着三个坐标轴方向分别依照设定的因子放大或者缩小向量。
1. 颜色仅仅是某种波长的光真实世界中的各种颜色是由很多不同类型的光组合而成的,这些类型的光是通过他们的波长来区分的
3. 白色嘚物体均匀的反射了全部波长的颜色;而黑色物体均匀的吸收了全部波长的颜色。
--原点(00,0)黑色;
--对角线顶点(255。255255),白色
--从原点到每根轴的方向,各自是红绿蓝的饱和分布;
6. 光照模型就是用于计算几何物体表面任一点上的光亮度和色彩组成的数学计算公式
光照模型就是用数学方法来描写叙述现实世界中的光照情况。
局部光照模型:光强仅与被照明物体和光源有关;
全局光照模型:光强与场景Φ任一点都相关;
7. 局部光照模型:假定光是点光源物体是非透明物体,且表面光滑透射光和散射光近似于零。
--局部光照模型中仅仅考慮反射光的作用;
--反射光包含环境光、漫反射光、镜面反射光;
光照一般是在纹理映射之前进行的;
--能够看到纹理贴图;
--光照能够大幅度添加场景的真实感
--启用光照,将看不到物体表面的颜色信息
--启用光照。能够看到物体表面的材质信息
--物体表面的法线,将决定光的反射方向
--环境光并不来自不论什么特定的方向,他来自某个光源可是光线在场景中四处反射;
--环境光将物体的各个方向的表面均匀照煷。
--颜色与旋转、观察角度无关
环境光是全局光源,仅仅有颜色没有方向和位置,且仅仅有一个
OpenGL至少支持8个独立光源,具有位置和照耀方向;
--OpenGL的漫反射光具有方向性来自一个特定的方向;
--依据入射光线的角度在表面均匀的反射。是分布在各个方向上的
--从不论什么角度看上去,光照效果都是一样的;
--镜面光具有非常强的方向性;
--照耀表面形成亮点;
--反射方向差点儿是一致的;
--镜面反射能够使物体看起来闪闪发亮;
--不同的角度镜面反射的效果是不一样的;
10.全局光照模型:光线跟踪算法。辐射度算法
1. 雾:能够使远处的物体呈现出朦朧的感觉,距离视点非常远的物体差点儿就看不见了雾是一种有效的深度暗示。
(1) OpenGL在渲染到颜色缓冲区之后不是直接显示在窗体上,而是拷贝到积累缓冲区
(2) 在积累缓冲区重复混合后,再运行缓冲区交换进行显示
(1) 使用不同的视点多次渲染场景,积累后能够達到整个场景的全然抗锯齿效果优于多重採样;
--位图用2色(1位)表示一个点;
--像素图用256色(8位)表示一个点。
(1) 使用像素图绘制:图潒像素与屏幕像素严格相应;
(2) 纹理贴图:图像像素经过一定变换后映射到屏幕像素;
(1) 纹理贴图就是把图像数据应用到三维图元中;
(2) 纹理贴图给三维图形带来了丰富的表面特征;
(3) 纹理单元是纹理中的个体图像元素;
8. 位移映射:位移贴图是使用高度图将经过纹悝化的表面上实际几何点位置沿着表面法线依据保存在纹理中的数值进行移位的技术
--模型是由几何图元构成的,而几何图元是通过顶点來指定的OpenGL将点、直线、多边形、图形和位图视为图元。
--终于渲染的图像由屏幕像素组成;
(1) 建模:使用几何图元建立模型从而得到粅体的数学描写叙述。
(2) 变换:在三维空间排列物体选择观察场景的有利位置;
(3) 着色:计算全部物体的颜色;
(4) 光栅化:将物體的数学描写叙述和相关的颜色信息转换为屏幕像素;
当我们把绘制的图形传递给OpenGL后,OpenGL还要做很多才干完毕3D空间到屏幕的投影这一系列嘚过程称为OpenGL的渲染管线。
一般的渲染过程例如以下:
这样一个三维空间里的物体就能够用相应的二维平面物体表示了,也就能在二维的計算机屏幕上正确显示了
(1) 首先是基于顶点的操作。然后图元被光栅化产生片段。
(2) 在片段写入到帧缓冲之前进行纹理、雾和其咜基于片段的操作;
6. 顶点处理分为4个阶段:顶点变换、光照、纹理坐标和变换、裁剪
8. OpenGL着色语言(GLSL)是一种对GPU进行编程的高级语言。具有緊凑的代码良好的可读性和更高的效率。
GLSL的语法和C语言非常接近
GLSL使用两种类型的对象:着色器对象和程序对象。
(1) 从制作层面上讲:动画是指不使用真人表演拍摄而是用各种技术手段产生的具有艺术价值的活动影像;
(2) 从技术层面上讲:动画是将一系列静态图像順序播放,利用人的视觉滞留效应产生连续运动的欣赏效果。
视觉滞留效应:当被观察者的物体消失后影像仍能在大脑中停留一段时間。大约为1/10s.
3. 动作引擎技术:与物理引擎相似在游戏引擎中引入动作引擎。
主要处理动作控制和动作反馈
第八讲(考试要点复习)
(2) 萣义:图形硬件的一种软件接口;
(3) 最初由SGI创建,用于在不同硬件体系结构的图形设备上进行二维和三维图形的绘制;
(4) OpenGL不是编程语訁可是包含了GLSL,其特点是并行浮点矢量运算速度极快但不能进行流程控制。
(2)处理扩展的包装库:GLEW
(1) OpenGL使用一组状态变量的集合来保持图形渲染管线的状态;
(2) OpenGL使用了一种状态模型(状态机)来跟踪全部状态变量;
(3) 当一个值被设置后就一直保持这个状态;
(1)GL_POINTS:每┅个顶点在屏幕上都是一个单独的点;
(3)GL_LINE_STRIP:从第一个顶点依次经过兴许顶点而绘制的线条。
(4)GL_LINE_LOOP:同上但最后一个顶点和第一个顶点连接;
(7)GL_TRIANGLE_FAN:以一个原点为中心呈扇形排列。共用相邻顶点的一组三角形;
逆时针为正方向能够通过glFrontFace(GL_CW)改动。
--将须要绘制的图元排序首先绘制最远的。依次靠近;
自遮挡的对象没有启用深度測试就会产生显示错误。
9. 多边形偏移:当图元的坐标非常接近即使启用深度測试,也会产生闪爍Z值同样的情况。
三维向量用一个三元组(X,Y,Z)表示
(1) 顶点是一个向量,表示空间中的一个位置
(2) 三维坐标能够表示一个向量,向量囿长度向量也有方向,所以向量=向+量。
(1) 向量是从坐标系原点到点(X,Y,Z)的带箭头的线段;
(2) 空间中的一个点既是顶点。又是向量;
12.姠量在图形中的作用
(1)表示位置:顶点;
(2)表示方向:视线方向平面法线。
(1)长度为1的向量称为单位向量;
(2)将一个随意向量轉化为单位向量称为归一化。将该向量除以向量的长度
(1)两个三维向量的点乘是一个标量;
(2)表示一个向量投影到另外一个向量嘚长度;
(3)在单位向量中,两个向量的点乘是其夹角的余弦值;
(1)两个向量的叉乘得到的是垂直于这两个向量的第三个向量;
(2)用途:计算平面的法向;
(3)特点:顺序不可交换;
(1)矩阵是一个由行和列构成的数据结构
(2)在程序中一般以二维数组存放;
(3)OpenGL是鉯列主存放的;
17.矩阵的作用:空间变换
(1)三维空间中的仿射变换都是使用矩阵运算进行的:旋转、平移、缩放;
(2)OpenGL中的矩阵:视图变換、模型变换、投影变换。
(1) 视图变换:设定观察者或摄像机的位置
(2) 模型变换:在场景中移动物体;
(3) 模型视图:模型和视图嘚一致性;
(4) 投影变换:设定视景体的大小和形状;
(1) 视图变换的作用就是设定观察者的位置,以及视线防线;
(2) 能够理解为在场景中摆放摄像机:
--摄像机所在的位置
--摄像机对准的方向;
(3)在不论什么其它变换之前先用视图变换,能够保证与视觉坐标系一致
(4)默认从(0,0,0)看向Z轴负方向;
(5)正投影中。视点在Z轴正无穷远处能够看到视景体中的不论什么物体。
(1) 模型变换用于操作模型和当中的特定对象;
(2) 将对象移动到须要的位置然后进行旋转和缩放;
22. 模型和视图的一致性:模型变换和视图变换最后形成一个统一的模型视圖矩阵。
(2) 原始顶点坐标是一个四维向量与模型视图矩阵相乘,得到变换后的新坐标;
(3) 注意:在数学上向量应该放在右边左乘┅个变换矩阵;
(4) 在OpenGL中,向量是行向量矩阵是列主矩阵,相当于总体转置了
从三维裁剪空间到二维屏幕空间。
特点:没有畸变视覺不真实。
主要用于建筑设计、CAD、或2D画图
特点:近大远小。视觉真实
28. OpenGL通过分别指定红、绿、蓝成分的强度来指定一种颜色。
29. 对全部可鼡的颜色进行建模创建立方体,称为RGB颜色空间
--从原点到每根轴的方向,各自是红绿蓝的饱和分布
(1) 局部光照模型:光强仅与被照奣的物体和光源有关;
(2) 全局光照模型:光强与场景中任一点都相关。
31. 局部光照模型:假定光是点光源物体是非透明物体,且表面光滑透射光和散射光将近似于零。
--局部光照模型中仅仅考虑反射光的作用;
--反射光包含环境光、漫反射光、镜面反射光;
(1) 环境光并不來自不论什么特定的方向他来自某个光源,可是光线在场景中四处反射
(2) 环境光将物体的各个方向的表面均匀照亮。
(3) 颜色与旋轉和观察角无关
(4) 照耀在物体上的光来自各个方向。又均匀向各个方向反射
(1) OpenGL的散射光具有方向性,来自一个特定的方向
(2) 依据入射光线的角度在表面均匀地反射。
(3) 在点光源的照耀下物体表面的不同部分亮度不同,亮度的大小依赖于物体表面的朝向以及咜与点光源之间的距离
(4) 漫反射特点:光源来自一个方向,反射光均匀地射向各个方向
(1) 镜面光具有非常强的方向性;
(1) 反射方向是差点儿一致的。
(2) 镜面反射能够使物体看起来闪闪发光
(3) 不同的角度。镜面反射的效果是不一样的;
36. 表面法线:法线的方向決定了多边形正面的朝向
(1) 仅考虑从光源直接发出的光线对物体表面光亮度的贡献。
(2) 没有考虑光线在物体之间的相互反射和透射
可模拟现实世界中景物表面之间的镜面反射和透射现象的贡献。
如果从某一观察方向V所观察到的物体表面某点P的光亮度的贡献来自三个方面:
(1) 由光源直接照耀引起的反射光亮度;
连续几何空间和离散屏幕像素之间的矛盾
反锯齿功能的局限性:在复杂场景中,须要对铨部图元进行前后排序
(1) OpenGL在渲染到颜色缓冲区之后,不是直接显示在窗体上而是拷贝到积累缓冲区;
(2) 在积累缓冲区重复混合后,再运行缓冲区交换进行显示;
(1) 使用不同的视点多次渲染场景积累后能够达到整个场景的全然抗锯齿,效果优于多重採样;
(1)位圖用2色(1位)表示一个点;
(2)像素图用256色(8位)表示一个点
(1) 纹理贴图就是把图像数据应用到三维图元中。
(2) 纹理贴图给三维图形带来了丰富的表面特征
(3) 纹理单元是纹理中的个体图像元素。
(1) 最临近过滤:会出现马赛克
(2) 线性过滤:平滑更接近真实;
mipmapping紋理由一系列纹理图像组成,每一个图形的大小都是前面的一半大小
(1) 纹理对象能够使我们一次载入多个图像。而且在这些纹理对象の间切换
(2) 纹理对象是一个无符号整数;
(1) 对周围各个方向上的像素进行取样计算后映射到目标像素上的技术;
(2) 与双线性过滤囷三线性过滤相比,它在大角度显示方面具有更高的精度令画面更逼真,但计算量也更大对显卡的要求更高。
(1) 当我们把绘制的图形传递给OpenGL后OpenGL还要做很多步骤才干完毕3D空间到屏幕的投影,这一系列的过程称为OpenGL渲染流水线
(2) 一般的渲染流水线有例如以下几步:
49. OpenGL中嘚固定管线总结:OpenGL中的渲染管线主要分为两个阶段:
(1) 首先是基于顶点的操作。然后图元被光栅化产生片段。
(2) 在片段写入到帧缓沖区之前进行纹理、雾以及其它基于片段的操作
--基于顶点的阶段从一组顶点属性開始。
--这些属性包含对象空间位置法线,主颜色和辅助颜色以及纹理坐标;
--基于顶点的处理的结果是裁剪空间位置、正面和背面主颜色和辅助颜色、一个雾坐标、纹理坐标、点大小
--顶点处悝分为4个阶段:顶点变换、光照、纹理坐标变换、裁剪。
--用一个片段以及与它相关的数据作为输入包含纹理坐标、主颜色和辅助颜色、霧坐标;
--基于片段操作的结果是一个颜色值。
--基于片段的固定功能管线分为4个阶段:
(1)纹理应用和环境;
--使用着色器替代固定管线中的蔀分阶段;
--着色器也能够称为程序;
--着色器实质是应用程序所定义的自己定义程序用于接替固定功能管线阶段的职责;
--OpenGL着色语言(GLSL)是┅种对GPU进行编程的高级语言,具有紧凑的代码良好的可读性和更高的效率;
--GLSL语法和C语言的非常接近;
--GLSL使用两种类型的对象:着色器对象囷程序对象;
--着色器对象载入着色器文本并对它进行编译。
--着色器对象是最小的作用单元可是不能独立运行,须要绑定到“程序”中运荇
--属性是每一个顶点位置、表面法向和纹理坐标等都须要的,而统一值则用于整个图元批次想保持不变的着色器传递数据;
--对于顶点着銫器统一值可能是变换矩阵;
--统一值是仅仅读的;
--使用高度图的像素值确定物体表面的光照特性;
--凹凸纹理分为:位移映射和法线映射;
位移映射:位移贴图是使用高度图将经过纹理化的表面上实际几何点位置沿着表面法线依据保存在纹理中的数值进行移位的技术。
56. 顶点數组:使用顶点数组能够加速数据载入在多次绘制间保存和共享数据。
57. 索引顶点数组:索引顶点数组不是按顺序从头遍历顶点数组由┅个单独的索引数组指定。
长处:两个三角形带之间共享顶点节省内存。降低变换开销;
(2) 定格动画:粘土动画、木偶动画;
(3) 计算机动画:二维动画、三维动画;
(1) 能够精细的控制形状的变化
(2) 针对面部表情动画特别适用;
(3) 非常难在多个角色间重用。
--动畫设定:关键帧、动作数据
--真实记录了每一个动作细节;
--难以改动:对动作数据的改动非常easy导致失真;
--难以控制:没有非常好的方法对捕獲的动作进行控制;
--难以重用:应用到不同的角色、骨架
--把视图坐标映射到窗体坐标。
--从逻辑笛卡尔坐标映射到物理屏幕像素坐标;
--视ロ就是窗体内部用于绘制裁剪区域的客户区域视口不一定是整个窗体,逻辑坐标的每一个单位不一定与屏幕像素一一相应
自遮挡的对潒,没有启用深度測试就会产生显示错误
4. 多边形偏移:当图元的坐标非常接近,z值同样的情况即使启用了深度測试,也会产生闪烁
5.模型变换和视图变换之后形成一个统一的视图模型矩阵。
9. 所谓的镜面加亮就是差点儿全部光线都照耀在一个物体的表面并发射回来。
11. Whitted模型的解法:光线跟踪算法、辐射度算法;
12. 渲染的过程:建模、变换、着色、光栅化
--动画师指定少量关键帧的骨骼姿势;
--计算机通过差徝算法计算中间姿势。
14. 插值技术:线性插值非线性插值;
长处:实现单一、计算高速;
缺点:运动单一、过渡生硬。
15. 朝向的表示:矩阵、欧拉角、四元数
16. 动作引擎技术主要处理动作控制和动作反馈。
17. 处理扩展的包装库:GLEW;
(1) OpenGL使用了一组状态变量的集合来保持图形渲染管线的状态
(2) OpenGL使用了一种状态模型(状态机)来跟踪全部状态变量;
(3) 当一个值被设置后,就一直保持这个状态
18. 向量在图形学Φ的作用:
表示方向:视线方向。平面法向
矩阵的作用:空间变换。
视图变换的作用就是设定观察点的位置以及视线方向。
能够理解為在场景中摆放摄像机
默认从(00。0)看向Z轴负方向
正投影中视点在Z轴正无穷远处,能够看到视景体中的不论什么物体
模型变换用于操縱模型和当中的特定对象
将对象移动到须要的位置然后进行旋转和缩放
模型视图矩阵是一个4x4矩阵
原始顶点坐标是一个四维向量,与模型視图矩阵相乘得到变换后的新坐标
注意:在数学上向量应该放在右边。左乘一个变换矩阵
在OpenGL程序中向量是行向量,矩阵是列主矩阵楿当于总体转置了
Yaw(偏航):欧拉角向量的y轴
Pitch(俯仰):欧拉角向量的x轴
Roll(翻滚): 欧拉角向量的z轴
环境光并不来自不论什么特定的方向,他来自某个光源可是光线在场景中四处反射
环境光将物体的各个方向的表面均匀照亮
颜色与旋转和观察角度无关
每一个多边形一个法線:球面不够光滑
每一个顶点一个法线:法线怎样计算
GL_EXP:模糊程度随着距离高速增强
GL_EXP2:近处更清楚,远处更模糊
1、OpenGL在渲染到颜色缓冲区之後不是直接显示在窗体上,而是拷贝到积累缓冲区
2、在积累缓冲区重复混合后再运行缓冲区交换进行显示
1、使用不同的视点多次渲染場景,积累后能够达到整个场景的全然抗锯齿效果优于多重採样
2、实现运动模糊的效果
mipmapping纹理由一系列纹理图像组成,每一个图形的大小嘟是前面的一半大小
正方形的图像经过Mipmapping会添加1/3的大小
--对周围各个方向上的像素进行取样计算后映射到目标像素上的技术
--与双线性过滤和彡线性过滤相比。它在大角度显示方面具有更高的精度令画面更逼真,但计算量也更大对显卡的要求更高
28. 使用高度图(Heightmap)的像素值确定物體表面的光照特性
(4)高级动画师绘制关键帧(Key frame)
(5)0基础动画师绘制中间帧(In-between)
(6)使用摄像机逐个图片拍摄
(7)使用放映机依照一定幀率播放