版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 第8讲:真实感图形技术2 目录 CONTENTS 01 绪论02 图形系统03 二维图形生成04 图形几何变换05 二维观察06 三维观察07 三维对象08 真实感图形技术09 交互技术10 计算机动画3 n Computer Graphics第8章:真实感图形技术1 概述概述2 消隐算法消隐算法 3 颜色模型颜色模型 4 光照模型光照模型5 纹理映射技术纹理映射技术4 8.1 8.1 概述概述n真实感图形生成流程真实感图形生成流程 : 真实感图形是综合利用数学、物理学、计算机科学以及其真实感图形是综合利用数学、物理学、计算机科学以及其它科学技术在计算机图形设备上生成的、像彩色照片那样它科
2、学技术在计算机图形设备上生成的、像彩色照片那样逼真的图形。逼真的图形。 野外场景模拟 机械设备仿真 室内装修展示 小区规划设计5 n(1)构建模型)构建模型 用数学方法建立实体三维模型,并存储到系统中;n (2)投影变换)投影变换 将实体模型转换到三维观察坐标系中;n (3)消隐处理)消隐处理 用消隐技术去除视景外的和实体上不可见的面;n (4)光照处理)光照处理 建立光照模型生成真实感图形。生成真实感图形的基本步骤:生成真实感图形的基本步骤:PC线框线框图形图形消隐消隐图形图形真实真实感图感图显示显示图像图像DCPCPC投投影影投投影影投投影影表表面面处处理理消消隐隐输入输入数据数据WC三维
3、三维图形图形VC观察观察变换变换消消隐隐6 8.1.2 真实感图形特点真实感图形特点n1. 真实感图形的真实感图形的特点特点 1)能比较完整地反映物体表面的颜色和亮度变化;)能比较完整地反映物体表面的颜色和亮度变化; 2)反映物体表面的质感和表面粗糙度;)反映物体表面的质感和表面粗糙度; 3)反映物体的光照效果,表现场景的深度感和层次)反映物体的光照效果,表现场景的深度感和层次感感,充分,充分体现物体间的遮挡关系;体现物体间的遮挡关系; 4)模拟透明物体透明效果和镜面物体的镜像效果。)模拟透明物体透明效果和镜面物体的镜像效果。7 8.1.2 真实感图形特点真实感图形特点n2. 影响真实感图形的
4、因素影响真实感图形的因素: 1)物体本身的几何形状:)物体本身的几何形状: 平面体、曲面体、随机形状平面体、曲面体、随机形状 (云、雾、火);(云、雾、火); 2)物体表面特性:)物体表面特性: 粗糙度、感光度。表面颜色、纹理等;粗糙度、感光度。表面颜色、纹理等; 3)照射物体的光源形状:)照射物体的光源形状: 形状:点光源、线光源、面光源、体光源等;形状:点光源、线光源、面光源、体光源等; 强度:光的强度、颜色等。强度:光的强度、颜色等。 4)物体和光源的位置:)物体和光源的位置:距离、角度、站高距离、角度、站高 5)周边环境:)周边环境:环境对光的反射、折射、散射等。环境对光的反射、折射、
5、散射等。 8 n Computer Graphics第8章:真实感图形技术1 概述概述2 消隐算法消隐算法 3 颜色模型颜色模型 4 光照模型光照模型5 纹理映射技术纹理映射技术9 n 8.2.1 8.2.1 消隐基础知识消隐基础知识 1 1. 消隐的定义 表示物体图形的方式: 线框图 消隐图 真实感图形。线框图消隐图真实感图8.2 8.2 消隐算法消隐算法10 隐藏隐藏线(面):线(面):根据投影几何的理论,形体上的看不见的图线或(平面)。消隐:消隐:消除形体视图中隐藏线(面)的处理过程。2 消隐处理主要问题(1 1)形体数据结构的合理组织;)形体数据结构的合理组织;(2 2)排除与遮挡无关
6、的要素;)排除与遮挡无关的要素; (3 3)遮挡关系。)遮挡关系。3 消隐算法分类消隐算法分类 1) 根据消隐对象: 线消隐:消除物体上不可见的轮廓线。 面消隐:消除物体上不可见的表面。 2) 根据消隐算法空间: 物体空间消隐算法物体空间消隐算法,也称对象空间消隐算法: 物体空间是指规范化的投影空间,即用户域。 该算法通过分析物体之间的空间几何关系,来确定 物体的可见性。 图像空间消隐算法图像空间消隐算法 图像空间是指物体投影后的二维空间,即屏幕域。 该算法是将物体的投影分解为像素,通过分析像素的 可见性,来确定物体的可见性。4 消隐基本原则消隐基本原则 1 排序 判别消隐对象与观察点之间的距
7、离远近;判别消隐对象与观察点之间的距离远近; 对其按对其按x x、y y、z z三个坐标方向进行排序;三个坐标方向进行排序; 确定对象之间的遮挡关系。确定对象之间的遮挡关系。 2 连贯性 从一个对象到另一个对象,其属性值是或连续的。从一个对象到另一个对象,其属性值是或连续的。 连贯性:连贯性: 1 1) ) 实体对象的连贯性;实体对象的连贯性; 2 2) ) 实体属性的连贯性;实体属性的连贯性; 3 3) ) 扫描线的连贯性;扫描线的连贯性; 4 4) ) 深度的连贯性。深度的连贯性。13 n 8.2.2 8.2.2 平面平面立体消隐算法立体消隐算法 平面立体=凸多面体+凹多面体。 1 凸多面
8、体消隐 (1 1)凸多面体特点)凸多面体特点: 在投影关系上,体的表面要么完全可见, 要么完全不可见; 各朝前表面不发生相互重叠现象。(2 2)凸多面体消隐的基本原理)凸多面体消隐的基本原理 表面外法线与其可见性的关系定形体表面外法线方向为由形体内部指向外部,或由 形体表面指向外部空间。 如右图所示。设平面Pi上任一点的外法矢ni与该点的视线矢量vi的数量积: 当cos 0时,Pi为朝前面,可见,画出; 当cos0时,90180,表面面向观察者可见。 若表面可见画出该表面,否则处理下一个表面。19 n 8.2 8.2 凹多面体凹多面体的隐藏线消除的隐藏线消除 可见性可见性特点:特点: 1)表面
9、完全可见; 2)表面完全不可见; 3)表面部分可见和部分不可见; 1概述概述形状特点:形状特点: 1)多面体表面由多边形组成,多边形可为凸的,也可为凹的; 2)表面可以由单环或者多环组成的;20 2算法处理过程 1)先求出表面的外法线,计算其投影方向上的方向余弦值cos; n 8.2 8.2 凹多面体凹多面体的隐藏线消除的隐藏线消除 2)根据方向余弦值,进行可见性判断: cos0 朝前面; cos0 背向面 3)对朝前面计算其表面的最大深度值; 4)计算朝前面的盒子角点坐标; 5)取出最大深度值的表面作为当前面; 6)循环计算其他表面和当前表面的遮挡关系; 提取表面的每一个边,判断和当前面的关
10、系: 完全挡住、完全未被挡住或部分挡住; 若完全挡住视为不可见边,作删除或改变线型处理; 若完全不被挡住,视为可见边,绘制该边; 若部分挡住,利用线段裁剪求出多边形之外的部分 线段:可见线段,绘制; 对多边形之内的部分线段:不可见线段,作删除 或改变线型处理; 3平面立体消隐算法的数据结构平面立体消隐算法的数据结构1)采用三表结构,即点面表、棱边表和顶点表。2)面表第一列为该表面的棱边总数;3)面表第二列为该表面中内环数目,无内环时取为0;4)棱边表中记录表面点环的顶点编号,内环顺时针排 序,而外环则按逆时针排序;5)不论内环还是外环,其都是封闭的;6)内外环的分隔符通常采用0;23 1.基本
11、思路 对于屏幕上的每一个像素,记录位于该像素内最靠近观察者的景物面的深度值,同时相应记录该景物面的颜色(或灰度) 的所有记录值,输出的图形。n 8.2.3 8.2.3 深度缓存消隐算法深度缓存消隐算法 (x,y)zvyvxvP2P1S2S1 2. 算法步骤算法步骤 1)开辟内存数组:ZB(m,n)和FB(m,n) 2)初始化数组:FOR i=1,m FOR j=1,n ZB(i,j)=机器允许最大值,FB(i,j)= 背景色 3) 循环计算每个像素点的深度值: For j=1,m For i=1,n For k=1,L /L:形体的表面数 Zij=机器最大值 判断(i,j)点是否在当前投影多边
12、形k内,利用射线法 或弧长法判断。25 若(i,j)点在k内,求(i,j)点的深度值Zij 进行深度值比较。 若ZijZB(i,j),ZB(i,j)= Zij 26 3 3. .深度值计算深度值计算在屏幕坐标系中任取像素点P0(i,j),作平行于Z轴的射线R,和表面F1、F2分别交于P1、P2点。 P1、P2点的Z坐标, 表面F1和F2的深度值。深度值反映了该表面到显示器屏幕的距离。 深度值反映了该表面到观察者的距离, Z,距离 。 P1P1点点Z Z坐标坐标P2P2点点Z Z坐标坐标27 设表面方程:ax+by+cz+d=0 (c0), 该表面对应像素点P(i,j)的深度值: z= (ai+
13、bj+d)/c 4.深度缓存器算法优缺点分析深度缓存器算法优缺点分析 优点:算法简单、直观,便于硬件实现。 缺点:内存占用量大、计算量比较大。 如VGA模式800600,每个数组有: 800600=480,000个元素。 28 1算法的基本思想算法的基本思想 画家算法的基本思想和画家作画过程类似,具体是: (1)先把屏幕设置成背景色。 (2)把物体各个面按其距离观察点的远近进行排序,距观察点远者放在表头,距观察点近者放在表尾,如此构建一个按深度远近排序的表,该表称为深度优先级表。 (3)按照从表头到表尾(由远到近)的顺序逐个绘制物体。由于距观察者近的物体在表尾,最后画出,它覆盖了远处的物体,最
14、终在屏幕上产生了正确的遮挡关系。 8.2.4 8.2.4 画家算法画家算法 29 QPxyzzmin(Q)zmax(Q)zmin(P)zmax(P)o 设每个多边形有一些顶点,这些顶点各有一个z坐标,取出其z坐标最小的记为zmin,取出其z坐标最大的记为zmax,每一多边形都有自己的zmax和zmin。 假设视点在z轴正向无穷远处,视线方向沿着z轴负向看过去。如果z值大,离观察点近;而z值小,离观察点远。2 深度优先级表的建立深度优先级表的建立方法方法 假设zmin最小的多边形为P,它暂时成为优先级别最低的一个多边形。对其它任意多边形Q,其对多边形P的相对位置关系如下: (1)P和Q深度不重叠
15、 若zmax(P) zmin(Q)而zmin(P) zmax(Q),P和Q多边形深度重叠 ,右图。需要作投影重叠测试,需要考虑以下五种情况:1)P和Q多边形在xoy平面上投影的包围盒在x方向上不相交,如图 a)2)P和Q多边形在xoy平面上投影的包围盒在y方向上不相交,如图 b)3)P和Q多边形在xoy平面上投影不相交,如图 c);4)P多边形的各个点均在Q多边形远离视点的一侧,如图 d)5)Q多边形的各个点均在P多边形靠近视点的一侧,如图 e);32 (3)P和Q深度重叠,同时相互遮挡 在下图中,两图均有交叉覆盖或循环遮挡的情况。 在左图中,P在Q前面,Q在R前面,而R反过来又在P前面; 在
16、右图中,P在Q前面,而Q又在P前面。对它们均无法直接建立确定的深度优先表。3算法算法的实现步骤的实现步骤 (1)对每个多边形顶点求Zmin。 (2)取第二个多边形Q。 (3)检查多边形P和Q的关系。 1) 如果Zmax(P)zmin(Q)而zmin(P) zmax(Q)条件成立, 确定多边形P是否真正遮挡Q,做以下测试: P和Q的外接最小包围盒在X方向不相交吗? P和Q的外接最小包围盒在Y方向不相交吗? P是否全部位于Q所在平面的背离视点的一侧吗? Q是否全部位于P所在平面的靠近视点的一侧吗? P和Q在显示屏幕上的投影是否可以分离? 若五个条件之一,则P不遮挡Q,P写入帧缓存。 若不能通过测试
17、,则交换P和Q,并将Q作上记号,形成新的优先级表。 34 3)对重新排列的表重复2)中步骤;4)执行3)以后,若Q的位置需再次交换,则表明存在交叉覆盖的情况,见下图所示,这时可将P沿Q所在平面分割成两部分P1和P2,从表中去掉原多边形P,而将P的这两个新的部分插入原表中的适当位置,使其仍保持按Zmin排序的性质。对新形成的表,重新执行2)。35 4算法特点算法特点 (1)画家算法同时在物体空间和图像空间中进行处理,即:在物体空间中排序以确定优先级;而显示结果在算法运行之际就要不断地写入图像空间的帧缓冲区中。 (2)该算法利用几何关系来判断可见性,而不是像在Z缓冲器算法中那样,逐个像素地进行比较
18、。因此,它利用了多边形深度的相关性,可见性判别是根据整个多边形来进行的。 (3)画家算法比较适于解决图形的动态显示问题,只要事先把不同视点的景物的优先队列算出,然后再实时地采用画家算法来显示图形,就能实现图形的快速消隐与显示。36 n Computer Graphics第8章:真实感图形技术1 概述概述2 消隐算法消隐算法 3 颜色模型颜色模型 4 光照模型光照模型5 纹理映射技术纹理映射技术37 8.3.1 物体的颜色物体的颜色 1 颜色是一种波动的光能形式,从光学角度看,光在本质上是电磁波。 英国科学家牛顿于1666年通过用三棱镜做实验证明了白光是所有可见光的组合。并发现了色散现象。 依次
19、按波的顺序排列的彩色光带,就称为光谱。 8.3 颜色模型颜色模型2 物体的颜色不仅取决于物体本身,还与光源、周围环境的颜色有关。3 颜色是外来的光刺激作用于人的视觉器官而产生的主观感觉。4 颜色有如下三个特性:色调、饱和度和亮度。5 从物理光学的角度出发,颜色可以用主波长、纯度和明度来定义。 6 光是人的视觉系统能够感知到的电磁波,它的波长在380nm到780nm之间;7 光可以由光谱能量p()来表示,其中是波长,当一束光的各种波长的能量大致相等时,称为白光;否则,称其为彩色光;若一束光中只包含一种波长的能量,其它波长都为零时,称其为单色光。8 可用主波长、纯度和明度描述光谱分布的视觉效果。3
20、9 8.3.3 颜色空间颜色空间 1 三色三色理论理论 1802年,Young提出一种假设: 1 某一种波长的光可由三种不同波长的光混合出来; 2 红(R)、绿(G)、蓝(B)三种单色光可原色; 3 把三原色按照不同比例混合能复现任何波长的光 1862年,Helmholtz进一步提出颜色视觉机制学说,即三色学说。到现在,用三种原色能够产生各种颜色的三色原理已经成为当今颜色科学中最重要的原理和学说。40 2 CIE XYZ颜色模型颜色模型颜色空间:用三维空间中的一点来表示一种颜色,依次描述的所有色彩的集合。 由于任何一个颜色空间都是可见光的一个子集,任何一个颜色空间都无法包含所有的可见光。一般地
21、,对于不同的应用领域,我们使用不同的颜色空间。 国际标准照明委员会(CIE)1931年规定三种色光的波长是:红色光(R)的波长为700 nm;绿色光(G)的波长为546.1nm;蓝色光(B)的波长为435.8nm。自然界中各种颜色都能由这三种原色光按一定比例混合而成。41 8.3.3 常用颜色模型常用颜色模型 1 RGB模型 RGB 颜色模型通常使用于彩色阴极射线等彩色光栅图形显示设备中,它是我们使用最多最熟悉的颜色模型。 红、绿、蓝原色是加性原色,各个原色混合在一起可以产生复合色。 RGB 颜色模型通常采用单位立方体来表示。42 2 CMY 颜色模型颜色模型 以红、绿、蓝的补色青、品红、黄为
22、原色构成, 常用于从白光中滤去某种颜色,又被称为减性原色系统。 CMY颜色模型也采用单位立方体来表示。与RGB颜色模型相似。 CMY颜色模型常用于印刷硬拷贝设备。43 8.3.4 OpenGLOpenGL中的颜色模型中的颜色模型 1 计算机颜色计算机颜色 OpenGL采用RGBA模式,在RGB模型中增添alpha分量; 每一个像素点的颜色信息有两种存储模式: RGBA方式存储和颜色索引模式 RGBA模式中的R、G、B、A数值对应于每个像素点,而在颜色索引模式中,对应于每个像素点的是单个数值(称为颜色索引)。 每个颜色索引表是一个设定R、G和B值的特定集合,其中的一个单元即是一个颜色图。 颜色数
23、据是由帧缓冲区的位平面(bitplane)数量决定 在每个像素中,1个位平面表示l位数据。 屏幕窗口坐标以像素为单位,像素的颜色是通过用一系列OpenGL函数来设置的。44 2 RGBA模式下设定颜色模式下设定颜色 在RGBA模式下,每个像素的颜色独立; 在RGBA模式下,硬件为R、G、B和A成分保留一定数量的位平面,但每种成分的位平面数量并不一定相同; 用函数g1Color*()来设置当前颜色,其原型如下:void glColor3b s i f d ub us ui (TYPE r,TYPE g,TYPE b);void glColor4b s i f d ub us ui (TYPE r
24、,TYPE g,TYPE b,TYPE a);void glColor3b s i f d ub us ui v(TYPE *v);void glColor4b s i f d ub us ui v(TYPE *v); 函数最多可有3个后缀,以区分它所接受的不同参数。第一个后缀是3或4,表示是否应该在红、绿、蓝值之外提供一个alpha值。 45 3 索引模式下设定颜色索引模式下设定颜色 在颜色索引模式下,OpenGL使用颜色查找表 可用颜色数量受限于颜色映射表的大小以及可用的位平面数量。 颜色映射表的大小是由专用硬件决定的。大小是2的整数次方,在256到4096)之间,其中指数就是它所使用的位
25、平面的数量。 如果颜色映射表共有2n个索引项以及m个可用的位平面,可用的颜色值的数量就是2n和2m中较小的那个。 颜色索引模式下使用的函数为glIndex(),原型如下: void glIndexs i f d (TYPE c); void glIndexs i f d v(TYPE *c);46 4 指定着色模型指定着色模型 直线或填充多边形可以用一种颜色进行绘制(单调着色),也可以用多种颜色进行绘制(平滑着色,也称着色)。 在单调着色模型下,整个图元的颜色就是它的任何一个顶点的颜色。 在平滑着色模型下,每个顶点都是单独进行处理的。如果图元是直线,线段的颜色将根据两个顶点的颜色进行均匀插值。
26、 如果图元是多边形,多边形的内部颜色是所有顶点颜色的均匀插值。 用glShadeModel()函数指定着色模型,原型如下: void glShadeModel(GLenum mode);其中,mode参数可以是GL_SMOOTH或GL_FLAT,其中GL_SMOOTH 为默认值。47 5 编程实例 如图采用平滑着色方式绘制了两个三角形。源程序如下: #include void init(void) glClearColor(1.0,1.0,1.0,0.0);glShadeModel(GL_SMOOTH);48 void triangle(void)glBegin (GL_TRIANGLES);
27、glColor3f (1.0f, 0.0f, 0.0f); glVertex2f (5.0f,5.0f);glColor3f (0.0f, 1.0f, 0.0f); glVertex2f (25.0f,5.0f);glColor3f (0.0f, 0.0f, 1.0f); glVertex2f (5.0f,25.0f);glEnd ();glBegin (GL_TRIANGLES);glColor3f (1.0f, 1.0f, 0.0f); glVertex2f (26.0f,25.0f);glColor3f (0.0f, 1.0f, 1.0f); glVertex2f (26.0f,5.0f
28、);glColor3f (1.0f, 0.0f, 1.0f); glVertex2f (6.0f,25.0f);glEnd ();49 void display(void) glClear(GL_COLOR_BUFFER_BIT); triangle();glFlush();void reshape(int w,int h) glViewport(0,0,(GLsizei)w, (GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity(); if(w = h) gluOrtho2D(0.0,30.0,0.0,30.0*(GLfloat)h/(
29、GLfloat)w); else gluOrtho2D(0.0,30.0*(GLfloat)w/(GLfloat)h,0.0,30.0);glMatrixMode(GL_MODELVIEW);50 int main(int argc, char* argv) glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowSize(500, 500); glutInitWindowPosition(100, 100); glutCreateWindow(OpenGL颜色函数例程颜色函数例
30、程); init(); glutDisplayFunc(display); glutReshapeFunc(reshape); glutMainLoop(); return 0;51 n Computer Graphics第8章:真实感图形技术1 概述概述2 消隐算法消隐算法 3 颜色模型颜色模型 4 光照模型光照模型5 纹理映射技术纹理映射技术52 8.4 光照模型光照模型8.4.1 基本光照模型基本光照模型 光照模型:在计算机图形学中为表达自然光照现象,需要根据光学物理的有关定律建立一个数学模型去计算景物表面上任意一点投向观察者眼中的光亮度的大小。 光照模型包含许多因素,如物体的类型、物体
31、相对于光源与其他物体的位置以及场景中所设置的光源属性、物体的透明度、物体的表面光亮程度,甚至物体的各种表面纹理等。不同形状、颜色、位置的光源可以为一个场景带来不同的光照效果。一旦确定出物体表面的光学属性参数、场景中各面的相对位置关系、光源的颜色和位置、观察平面的位置等信息,就可以根据光照模型计算出物体表面上某点在观察方向上所透射的光强度值。53 1.基本光学原理基本光学原理 光照到物体表面时,物体对光会发生反射、透射、吸收、衍射、折射和干涉等。 入射光=反射光+散射光+吸收光+透射光+ 54 简单简单光反射模型光反射模型 假设:1)光源是点光源;2)物体不透明 模拟光照射到物体表面产生的反射现
32、象。 入射光=漫反射光+镜面反射光+环境光不透明不透明55 2. 环境光环境光 环境光:环境光是指光源间接对物体的影响,是在物体和环境之间多次反射,最终达到平衡时的一种光。 特点:光强分布是均匀的,它在任何一个方向上的分布都相同 。环境光相对比较弱,仅考虑强度: Ie=IaKa Ia:环境光强度, Ka:物体表面对环境光的反射系数。 56 3. 漫反射光漫反射光 漫反射光:光照射到粗糙、无光泽表面的光现象。 特点:来源一个方向,向各个方向反射。 假设: 1)各个方向的反射相同; 2)任何方向的亮度相同。57 兰伯特(lanbert)定律: 设:P点法线为N,光源的矢量为L,其夹角为,漫反射光强
33、度: Id d =IpKd dcos 0/2 Ip:入射光强度, Kd:入射光的漫反射系数, 范围: 0 Kd1 影响因素: 1) 物体材料 2) 入射光波长。 58 4 镜面反射光镜面反射光 当观察一个光照下的光滑表面,特别是有光泽的表面时,可能在某个方向上看到很强的高光,这个现象称为镜面反射。 在正常情况下,光沿着直线传播,当遇到不同的介质表面时,会产生反射和折射现象,光在反射和折射时,遵循反射定律和折射定律。59 (1) (1) 反射定律反射定律 入射光线、反射光线与光照点的法向量在同一平面上,而且光线的入射角等于反射角。入射光线与光照点的法向矢量之间的夹角称为光线的入射角,反射光线与光
34、照点的法向矢量之间的夹角称为光线的反射角。(2) (2) 折射定律折射定律 入射光线、折射光线与光照点的法向量在同一平面上,折射角与入射角满足: 为光照点的法向量与入射光线之间的夹角,为折射光线与光照点的负法向量之间的夹角,1 和2分别为光线在第一种媒质和第二种媒质中的折射率。60 从物体表面反射或折射出来的光的强度取决于光源的位置与光的强度、物体表面的位置和朝向、表面材质的性质和视点的位置。对于理想镜面,反射光集中在一个方向,并遵守反射定律。对一般的光滑表面,反射光集中在一个范围内,且由反射定律决定的反射方向光强最大。 Phong经验模型计算公式为:其中 Is:为镜面反射光在观察方向上的光强
35、度; Ip:为点光源的强度; Ks:为镜面反射系数; a:为视点方向V与镜面反射方向R之间的夹角; n:与物体表面光滑度有关的一个常数, 一般取为12000。表面,n。 61 5 Phong光照明模型光照明模型 综合上面介绍的光反射作用的各个部分,Phong光照明模型有这样的一个表述:由物体表面上一点P反射到视点的光强I为环境光的反射光强Ie、理想漫反射光强Id、和镜面反射光Is的总和,即: 在这种简化下,由于对所有的点总共只需计算一次H的值,节省了计算时间。结合RGB颜色模型,Phong光照明模型最终有如下的形式:62 n 1.恒定光强的多边形绘制 (Flat法)n 主要用于平面体的真实感图
36、形处理。n 光照条件:n 光源无穷远,入射光相互平行;n L和N恒定不变,cos为定值;n 观察点足够远;n 视矢量V 和R夹角为定值。 常用方法:明暗度常数法、双线性插值法等。8.4. 2 明暗度处理模型明暗度处理模型 63 处理方法:处理方法: 计算组成物体的每个多边形平面的明暗度; 不满足光照条件, 用平面多边形各点L和V的平均值 用多边形中心点的L和V。计算明暗度计算明暗度处理曲面体时,将曲面网格化,当网格很密时,各 多边形很小,表面曲率逐渐变化,计算网格平面内的点的亮度,对网格进行明暗处理。64 2. Gouraud明暗处理明暗处理(亮度插值法亮度插值法) 假定曲面已离散为平面多边形
37、网格(三角形或四边形),并已知每个小平面的顶点信息。 1) 插值计算步骤: (1) 计算多边形表面的外法线向量; i j kN = xb-xa yb-ya zb-za =Ai+Bj+Ck xc-xb yc-yb zc-zb 65 (2) 多边形各顶点的法矢计算 其值为诸邻面的法向量的平均值,即: NA=(N1+N2+.+Nk)/k (3) 求各顶点的亮度值 求可见顶点的亮度值,以简单光反射模型进行计算: I(r, g, b)=Ia(r, g, b)Ka(r ,g ,b)+Ip(r, g, b) Kd(r, g, b)( L N)+Ks( H N)66 (4) 求扫描线与多边形边交点的亮度值 假
38、设:多边形边上各点亮度值,边上点是线性分布。假设扫描线y=yj与多边形两条边分别相交于a(xa,ya)和b(xb,yb),则a、b点的亮度: Ia=I1(ya-y2)+I2(y1-ya)/(y1-y2) Ib=I1(yb-y3)+I3(y1-yb)/(y1-y3) (5) 求扫描线上各点的亮度值 沿扫描线方向按线性插值计算:即: Is=Ia(xb-xs)+Ib(xs-xa)/(xa-xb) I I1 1I I3 3I I4 4I I2 2I Ib bI Ia aI Is s67 增量形式 当j j+1,yjyj+1时: Ia, j+1= Ia, j+Ia Ib, j+1= Ib, j+Ib 其
39、中:Ia=(I1-I2)/(y1-y2) Ib=(I1-I3)/(y1-y3) 而当i i+1,xi xi+1时: Is, i+1= Is, i+Is其中:Is=(Ib-Ia)/(xb-xa) 68 3.双线性法向插值法双线性法向插值法(Phong 冯氏法冯氏法) 1) 算法特点: (1) 保留双线性插值,用增量式对多边形边上各点和内域各点进行计算; (2) 对顶点法向量插值,顶点法矢按亮度插值法计算; (3) 对每一个象素,由法矢计算其亮度。69 2) 算法步骤:算法步骤: (1) 根据顶点信息计算各多边形面的外法线向量; (2) 求多边形各顶点的法向矢量; (3) 求扫描线与多边形边交点的
40、法矢 Na=N1(ys-y2)+ N2(y1-ys)/(y1-y2) Nb=N1(ys-y4)+ N4(y1-ys)/(y1-y4) (4) 求扫描线上点的法矢 Ns=Na(xb-xs)+ Nb(xs-xa)/(xa-xb) (5) 求扫描线上各点的亮度值 I(r,g,b)=Ia(r,g,b)Ka(r,g,b)+Ip(r,g,b) Kd (r,g,b)( L N)+Ks( H N)70 增量算法: 当j j+1,yj yj+1时: Na, j+1= Na, j+Na Nb, j+1= Nb, j+Nb 其中:Na=(N1-N2)/(y1-y2) Nb=(N1-N3)/(y1-y3) 而当i i
41、+1,xixi+1时: Ns,i+1= Ns,i+Ns 其中:Ns=(Nb-Na)/(xb-xa) 71 8.4.3 透明与阴影透明与阴影 1 透明处理透明处理 自然界中许多物体是透明的,例如玻璃、水等。 当光线从一种媒质进入另一种媒质,光线由于折射产生弯曲。 对于透明或半透明的物体,在光线与物体表面相交时,一般会产生反射与折射,经折射后的光线将穿过物体而在物体的另一个面射出,形成透射光。如果视点在折射光线的方向上,就可以看到透射光。 最常见的方法是颜色调和法,该方法不考虑透明体对光的折射以及透明物体本身的厚度,光通过物体表面是不会改变方向的,故可以模拟平面玻璃。 72 Ia不透明体透明体Ib
42、(x,y) 设t是物体的透明度,t0,1。t=0不透明;t=1完全透明 设过像素点(x,y)的视线与物体相交处的颜色(或光强)为Ia,视线穿过物体与另一物体相交处的颜色(或光强)为Ib, 则像素点(x,y)的颜色(或光强)的计算式: I=tTb+(1-t) Ia 式中的I a和I b可由简单光照明模型计算。73 2 阴影 阴影是现实生活中一个很常见的光照现象,它是由于光源被物体遮挡而在该物体后面产生的较暗的区域。 在真实感图形学中,通过阴影可以提供物体位置和方向信息,从而可以反映出物体之间的相互关系,增加图形图像的立体效果和真实感。 当知道了物体的阴影区域以后,就可以把它结合到简单光照明模型中
43、去,对于物体表面的多边形,如果在阴影区域内部,那么该多边形的光强就只有环境光那一项,后面的那几项光强都为零,否则就用正常的模型计算光强。通过这种方法,就可以把阴影引入简单光照明模型中,使产生的真实感图形更有层次感。 74 (1)阴影多边形算法 该算法是Atherton等人于1978年提出的,其采用隐藏面消除技术来生成阴影。 把光源设为视点,物体的不可见面就是阴影区域,利用面消隐就可以区别可见面与不可见面。 相对光源可见的多边形被称为阴影多边形,而不可见面就是非阴影多边形,。 该算法首先把物体上的多边形区分为阴影多边形、非阴影多边形和逆光多边形;然后需要计算物体表面各个多边形的光强,对于非阴影多
44、边形和逆光多边形,用某种方法来减少正常计算出来的光强值,使其有阴影的效果。 利用这个算法可以合理的确定物体表面的阴影区域,对于本影信息的获取是非常有效的。75 (2)阴影域多面体算法 在物体空间中,按照阴影的定义,若光源照射到的物体表面是不透明的,那么在该表面后面就会形成一个三维的多面体阴影区域,该区域被称为阴影域,实际上,阴影域是一个以被光照面为顶面,表面的边界与光源所张的平面系列为侧面的一个半开三维区域,任何包含于阴影域内的物体表面必然是阴影区域。 在透视变换生成图像的过程中,屏幕视域空间常常是一个四棱椎,用这个四棱锥对物体的阴影域进行裁剪,那么裁剪后得到的三维阴影域就会变成封闭多面体(称
45、为阴影域多面体)。得到阴影域多面体后,可利用其来确定场景中的阴影区域,只要与阴影域多面体进行三维布尔交运算,计算出的交集就可以被定为物体表面的阴影区域。76 8.4.5 光线追踪模型光线追踪模型 1整体光照模型 为了精确模拟光照效果,应考虑四种情况:镜面反射到镜面反射、镜面反射到漫反射,漫反射到镜面反射,以及漫反射到漫反射。对于透射,也可分为漫透射与规则透射(镜面透射)。整体光照模型可分两步进行: 首先,只考虑光线在物体表面的镜面反射和规则透射,得到的图像可表现出在光亮平滑的物体表面上呈现出其他物体的映像,以及通过透明物体看到其后的环境映像; 其次,考虑光照从漫反射到漫反射,得到的画面较为柔和
46、,并能模拟彩色渗透现象。这种考虑了整个环境的总体光照效果和各种景物之间的互相映照或透射的情形, 77 整体光照模型和光线追踪算法是紧密结合在一起实现的。Whitted和Kay首先在光线追踪算法中采用整体光照模型,由于Whitted算法更具一般性,因而被广泛采用和推广。78 2 Whitted光照模型光照模型 1980年Whitted提出了一个光透射模型(Whitted模型),该模型是在在简单光照明模型的基础上,加上透射光一项,并第一次给出光线跟踪算法的范例。 其中It为折射方向的入射光强度;Kt为透射系数,为01之间的一个常数;其大小取决于物体的材料。79 如果该透明体又是一个镜面反射体,应再
47、加上反射光一项,以模拟镜面反射效果。就得到Whitted整体光照模型: 在此,Is为镜面反射方向的入射光强度;Ks为镜面反射系数,为01之间的一个常数,其大小同样取决于物体的材料。 计算反射方向计算反射方向:给定视线方向V与法向方向N,视线方向V的反射方向S可以由下式计算: 计算折射方向的简单公式计算折射方向的简单公式:计算所得的T为单位向量。 其中: 80 1)基本原理 由于从光源发出的光线有无穷多条,使得直接从光源出发对光线进行跟踪变得非常困难。实际上,从光源发出的光线只有少数经由场景的反射和透射(折射)后到达观察者的眼中。为此标准光线跟踪算法采用逆向跟踪技术完成整个场景的绘制。 从视点出
48、发,通过图像平面上每个像素中心向场景发出一条光线,光线的起点为视点,方向为像素中心和视点连线单位向量。光线与离视点最近的场景物体表面交点有三种可能: 当前交点所在的物体表面为理想漫射面,跟踪结束。 当前交点所在的物体表面为理想镜面,光线沿其镜面发射方向继续跟踪。 当前交点所在的物体表面为规则透射面,光线沿其规则透射方向继续跟踪。3 光线跟踪算法光线跟踪算法 81 (2) 光线追踪的终止条件: 光线未碰到任何物体;光线碰到了背景; 光线经过许多次反射和折射后,光线对视点的光强小于某个设定值; 光线反射或折射次数即跟踪深度大于一定值。 82 RayTracing (start, direction
49、, weight, color) if ( weight MinWeight ) color = black; else 计算光线与所有物体的交点中离start最近的点; if ( 没有交点 ) color = black; else local = 在交点处用局部光照模型计算出的光强; 计算反射方向 R; RayTracing(最近的交点, R, weight*Wr, Ir); 计算折射方向 T; RayTracing(最近的交点, T, weight*Wt, It); color = Local + KsIr+ KtIt; (3) 光线追踪算法的伪代码 83 n Computer Grap
50、hics第8章:真实感图形技术1 概述概述2 消隐算法消隐算法 3 颜色模型颜色模型 4 光照模型光照模型5 纹理映射技术纹理映射技术84 8.5 纹理映射技术纹理映射技术 8.5.1 概述概述 纹理:物体表面的各种细小结构和图案花纹。 1纹理分类 1)纹理定义域: 分为二维纹理和三维纹理; 平面纹理平面纹理立体纹理立体纹理85 2)纹理表现形式: 分为颜色纹理、几何纹理、过程纹理; 颜色纹理指的是呈现在物体表面上的各种花纹、图案和文字等,如大理石等; 几何纹理是指基于景物表面微观几何形状的表面纹理,如树干、岩石等; 过程纹理是指各种规则或不规则动态变化的自然景象; 纹理形式纹理形式86 2纹
51、理定义 1)图像纹理:将二维纹理图案映射到三维物体表面,绘制物体表面上一点时,采用相应的纹理图案中相应点的颜色值。2)函数纹理:用数学函数定义简单的二维纹理图案,如方格地毯;或用数学函数定义随机高度场,生成表面粗糙纹理即几何纹理。 纹理空间的定义方法常用的几种: 用参数曲面的参数域作为纹理空间(二维)。 用辅助平面、圆柱、球定义纹理空间(二维)。 用三维直角坐标作为纹理空间(三维)。 3纹理映射 纹理映射就是将在纹理空间中uv平面上预先定义的二维纹理(图像、图形、函数等)映射到景物空间的三维物体表面,再进一步映射到图像空间的二维图像平面上,一般将两个映射合并为一个映射。 87 映射类型为二维纹
52、理映射和三维纹理映射。二维二维映射映射三维三维映射映射88 8.5.2 颜色纹理映射颜色纹理映射 颜色纹理映射要达到的目的是使绘制出来的物体表面具有花纹图案效果。它的基本思想是: 给出期望在物体表面出现的花纹图案样式,可以用纹理函数来表示。纹理函数的定义域称为纹理定义域,纹理函数值一般可以理解为亮度值,可以转换为RGB表示的颜色值。 建立物体表面的定义域与纹理函数的定义域之间的映射关系(即映射函数)。这种对应关系一旦建立,物体表面任何一点的花纹图案属性都可以通过纹理定义域中相应点的纹理由数值获得。 在绘制物体表面可见点时,通过前面定义的对应关系可以获得该可见点处代表花纹图案属性的相应纹理函数值
53、,适当地使用该纹理函数值就可以便最终绘制出来的物体表面具有花纹图案的效果。89 在纹理映射技术中,最常见的纹理是二维纹理。映射将这种纹理变换到三维物体的表面,形成最终的图像。 二维纹理的函数表示: 90 为了实现这个映射,就要建立物体空间坐标(x,y,z)和纹理空间坐标(u,v)之间的对应关系,这相当于对物体表面进行参数化,反求出物体表面的参数后,就可以根据(u,v)得到该处的纹理值,并用此值取代光照明模型中的相应项。 两个经常使用的映射方法是圆柱面映射和球面映射。 对于圆柱面纹理映射,由圆柱面的参数方程定义,可以得到纹理映射函数。若参数方程为: 91 对给定圆柱面上一点(x,y,z),可以用
54、下式反求参数: x=0y=0 根据计算得到的(u,v)值,就可以求出对应该处的纹理值,在简单光照明模型中,可用该值代替漫反射系数Kd,计算柱面上一点(x,y,z)的亮度值,即可实现圆柱面的映射。92 8.5.3 几何几何纹理映射纹理映射 如果对现实生活中的某个表面粗糙、存在细小凹凸的物体拍摄一幅数字图像,然后将它映射到指定的光滑物体表面上,期望由此绘制出来的图像可以产生被映射表面的粗糙、凹凸不平效果,最后会发现结果并不能令人满意,物体表面只是被绘制上了粗糙的花纹图案,但看起来感觉仍然是光滑的。 事实上,粗糙表面不同于光滑表面之处在于粗糙表面的法矢量具有一个比较小的随机分量,这使得其上的光线反射
55、方向也具有定的随机分量。B1inn注意到这个问题,于是想了一种办法用来扰动表面法矢,表面法矢量的扰动导致表面光亮度的突变,从面产生表面凹凸不平的真实感效果。 B1inn对表面法矢进行扰动的方法是,在表面任一点处沿其法向附加一微小增量,从而生成一张新的表面,计算新生成的表面i:点的法矢量以取代原表面上相应点的法矢量。93 设表面的参数方程为P=P(u,v),表面上任何一点的单位法矢量为N(u,v),纹理函数F(u,v)给出表面上每一点沿着其法向的位移量,则新生成的表面为:其中:新表面的法向量可以有P(u,v)的两个偏导数叉乘得到:94 8.5.4 环境环境映射映射 环境映射技术首先由Blinn和Newell在1976年提出。 环境映射技术从本质上讲是种颜色映射技术。它适用于这样的场景绘制,其他的物体和光源离当前被绘制的物体比较远。 它使用的纹理图像是当前被
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 富士康厂长培训课件
- 家长安全工作培训会讲话课件
- 家长培训课件软件
- 公众责任保险合同2026年供应协议
- 2026年电商直播品牌代言合同
- 2026年安保系统维护合同
- 2026年广告投放效果承诺合同协议
- 2026年车辆产权抵押合同协议
- 2026年工业设备供电合同协议
- 知识产权许可合同2026年使用许可协议
- 《JJG 1081.2-2024铁路机车车辆轮径量具检定规程第2部分:轮径测量器》 解读
- YY/T 1488-2025中医器械舌象信息采集设备
- 2025-2030中国食品保鲜技术市场现状与创新趋势预测报告
- 2024人教版八年级生物上册全册教案
- 2025秋期版国开电大本科《心理学》一平台形成性考核练习1至6在线形考试题及答案
- 2025年上海城投集团社会招聘模拟试卷附答案详解(黄金题型)
- 第13章传染病及其预防(复习课件)生物北师大版2024八年级上册
- 供电公司一把手讲安全课
- 解读手术室护理实践指南
- Excel入门基础知识课件
- 管道焊接工艺规程
评论
0/150
提交评论