




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章 真实感图形的生成技术 l6.1 消隐技术 l6.2 光照技术 l6.3 物体表面细节的模拟 l6.4 阴影的生成 l6.5 图形反走样技术 l6.6 用OpenGL生成真实感图形 6.1 消隐技术 真实感图形绘制真实感图形绘制:借助数学、物理、计算机等学科的知识在 计算机二维显示屏上产生三维场景的真实逼真图像、图形。 应用应用:计算机辅助设计、多媒体教育、虚拟现实系统、科学 计算可视化、动画制作、电影特技模拟、计算机游戏等。 图图6-1 6-1 图形具有二义性图形具有二义性 ( (a)a)线框图线框图 ( (b b) )从右上往下看从右上往下看 ( (c c) )从左下往上看从左下往上看) ) 将三维场景绘制在计算机二维显示屏上必须经过投影变换,投 影变换将三维信息变换到二维平面上,这个过程中深度信息被 丢失,生成的图形往往具有二义性 ,早期判别可见面的算法有消 除隐藏线、消除隐藏面算法。现在有画家算法、Z缓冲器算法、 扫描线缓算法、光线追踪算法等等。 物空间算法是在定义、描述物体的世界坐标系中实现的,以场景中的物 体为处理单元: for(场景中的每一个物体) 将其与场景中的其它物体比较,确定其表面的可见部分; 显示该物体表面的可见部分; 像空间算法是在观看物体的屏幕坐标系下实现的,它以窗口内的每个像 素为处理单元: for(窗口内的每一个像素) 确定与此像素对应的距离视点最近的物体, 以该物体表面该处的颜色来显示像素; 判别可见面算法通常按它们在实现时所基于的坐标系分为两类: 物空间算法物空间算法和像空间算法像空间算法。 理论上讲,物空间算法的计算量少于像空间算法的计算量,但实际上物体 到视点距离的排序与遮挡判别比较复杂,算法效率很大程度上取决于排序 的效率。而以扫描线的方式实现像空间算法时容易利用连贯性质从而使得 像空间算法更具效率。 (1)将线段和多边形投影到投影平面上得到线段 和多边形 。 (2)计算线段 和多边形 各条边的交点。 (3)交点将 分成若干个子线段,特别地当交点不存在时, 子线段只有一个,即自身。现在每个子线段上的所有点具有 相同的隐藏性。 (4)分别判断各个子线段的隐藏性。 q 多面体隐藏线消除 隐藏线的产生是因为在给定的观察方向下,某些棱(或棱的一 部分)被表面多边形的遮挡成为不可见,因此多面体隐藏线消 除可以归结为一个根本问题:在给定的观察方向下,给定一 条空间线段 和一个多边形 ,判断线段是否被多边形遮挡 。如果遮挡,求出遮挡部分。步骤如下: 取子线段的中点,判断该点是否在多边形 内。 如不在多边形内,子线段与多边形 不存在隐藏关系,子线段是可见的。 如在多边形内,从子线段中点向视点引射线,如果射线与多边形 相交, 则该子线段被多边形隐藏,否则该子线段可见。 消除自隐藏线、隐藏面消除自隐藏线、隐藏面 利用多面体表面多边形的法矢判别“朝后的面”,即不可 见面。 深度测试深度测试 在观察坐标系下判断线段与多边形的前后关系。如多边 形完全在线段之后,则线段完全可见,无需就线段和多边形 的遮挡关系进行进一步判断。 包围盒测试包围盒测试 包围盒不相交,线段和多边形也不相交,线段完全可见 ,无需就线段和多边形的遮挡关系进行进一步判断。 线段和一个多边形进行隐藏性判断时,涉及到的运算包括投 影变换,平面上线段和多边形的求交,判断点是否在多边形 内,空间中射线和平面求交。如果将多面体的每条棱与每个 多边形都按上面的方法消除隐藏线,那么计算量将非常大。 采取如下措施可以减少计算量: q Z缓冲器消隐算法 Z缓冲器消隐算法是最简单的消除隐藏面算法之一。在这 个算法里,除了有一个帧缓冲区用来存放每个像素的亮度值, 还要有一个Z缓冲区用来存放每个像素的深度值。帧缓冲区和 Z缓冲区的存储单元数目相同,并且都等于屏幕上像素的个数 ,见图。 for(各个多边形) 扫描转换该多边形; for(多边形所覆盖的每个像素(x,y) 计算该像素所对应多边形上的点在观察坐标系下的z坐标值Z(x,y); if(Z(x,y)大于Z缓冲区在(x,y)处的值) Z缓冲区中(x,y)处深度值替换为Z(x,y); 帧缓冲区中(x,y)处亮度值替换为多边形在(x,y)处的亮度值; 帧缓冲区置成背景色; Z缓冲区置成某初始值,该值比场景在观察坐标系下的最小z值还小; Z缓冲区算法的流程为: 6.2 光照技术 图图6-5 (6-5 (a) a) 经过光照计算的球经过光照计算的球 ( (b) b) 不经过光照计算的球不经过光照计算的球 单纯判别物体表面的可见性,远远不能反映物体表面的真实感。 物体表面所呈现的颜色是由表面向视 线方向辐射进入人眼中光决定的。建 立数学模型模拟物体表面的光照明物 理现象,按照数学模型计算物体表面 向视线方向辐射进入人眼中的光亮度 ,即可获得像素所对应的物体上的可 见点的颜色,这样绘制出来的图形具 有较强的真实感,如图6-5(a)。这些 数学模型就称为明暗效应模型或者光 照明模型。 当光照射到物体表面时,光可能被吸收、反射和透射,被物体吸收的部分转 化为热,只有反射、透射的光能够进入人眼产生视觉效果,它们决定了物体 所呈现的颜色。如果物体是不透明的,则透射光不存在,物体的颜色仅由反 射光决定。这种情形正是简单光照模型需要考虑的,简单光照模型只考察光 源直接照射下物体表面的反射情况。 (d) 理想镜面反射方向 与视线方向的夹角 (a) 漫反射(b) 理想镜面反射 (c) 一般光滑表面的镜面反射 图6-6 光学反射模型 q 光学反射模型 通常物体表面的反射光可以认为包含三个分量:对环境光的 反射、对特定光源的漫反射和镜面反射。 环境光的反射环境光的反射: 环境光(ambient light)来自周围环境(如墙面)散射的光,在 空间近似均匀分布,入射至物体表面后向空间各个方向均匀 反射出去。物体对环境光的反射分量表示: 其中Ia是入射的环境光亮度,Ka是环境光漫反射系数,它与物 体表面性质有关。如果简单光照模型中仅考虑环境光的反射分 量,则物体表面的亮度是一个恒定值,没有明暗的自然过渡。 漫反射漫反射( (diffuse reflection)diffuse reflection): 漫反射分量表示特定光源在物体表面的反射光中那些向空 间各个方向均匀反射出去的光。兰伯特(Lambert)余弦定律指出 :当点光源照射到一个漫反射体时,其表面反射光亮度和光源 入射角(入射光线和表面法矢量的夹角)的余弦成正比,即 其中Il是来自点光源的入射光亮度。Kd是漫反射系数,与物体 表面性质有关。 是入射光线和表面法矢量的夹角。 q 兰伯特反射光照模型 只考虑对环境光的反射分量和对特定光源的漫反射分量,则 物体表面的反射光亮度为 : 适用于粗糙、无光泽的物体,如粉笔、黑板。对于擦亮的金属、 光滑的塑料等光亮物体需要计算镜面反射。 镜面反射镜面反射( (specularspecular reflection) reflection): 表示特定光源在物体表面的反射光中那些遵循反射定律的 光。对于纯镜面,反射光和入射光对称地分布在表面法向的两 侧。对于一般光滑表面,表面可理解为由许多朝向不同的微小 平面构成,入射光经许多微小平面反射后形成的反射光不再是 单向的,而是分布于理想镜面反射方向的周围。通常采用余弦 函数的幂次来模拟一般光滑表面的镜面反射光的空间分布。 Il是入射光亮度。Ks是物体表面镜面反射系数,为理想镜面反 射方向与视线方向的夹角,n为镜面反射光的会聚指数。 q Phong 光照模型 考虑环境光、漫反射和镜面反射,则物体表面的反射光亮 度为 : 实际上光的亮度与传播距离的平方成反比,Il为光源处的 光亮度,光线抵达物体表面以及从物体表面反射进入观察者 眼睛的过程中存在衰减的问题。漫反射分量和镜面反射分量 应该乘以一个衰减因子,以取得远的物体看起来暗些的效果 。当场景的投影变换采用透视投影时,Warnock提出线性衰减 因子1/d,而Rommey提出衰减因子1/dp可以取得比较真实的效 果。此时Phong光照模型可以进一步描述为: 其中d是物体上当前考察点到视点的距离,K是一个任意的常 量, 。 光照效果图 计算物体上可见点光亮度时通常是将光亮度转换成为光栅图形 显示器采用的RGB三基色,这时计算需要在三个基色上分别进 行。如果存在多个光源,则将效果线性相加。此时光照模型可 以描述为 : 建立简单光照模型后,就可以用于消隐算法中计算像素所对 应的物体上可见点的亮度。 q 明暗处理 图6-7(a) 多边形表示的物体 (b) Gouraud明暗处理 光照计算时需要用到多边形上点的法矢量,如果多边形 上点的法矢量总是取多边形的面法矢,则由于不同平面片之 间法矢量不连续,最终绘制出来的图像看起来呈多面体状。 解决方法:解决方法:首先多边形的顶点法矢量不再简单的取为其所在多 边形的面法矢,而是取为共该顶点的所有多边形的面法矢的平 均值;其次多边形内部点的法矢量也不再简单地取为多边形的 面法矢,而是利用多边形顶点的法矢量通过双线性插值计算出 。 图6-8 对P点进行双线性插值 Phong明暗处理(插值法矢) 如图6-8,P1、P2、P3是多边形顶点,其法 矢量视为共该点的所有多边形法矢量的平 均值。由P1、P2的法矢量可以线性插值计 算出A点的法矢量,由P1、P3的法矢量可 以线性插值计算出B点的法矢量,于是P 点的法矢量可以由A、B点处的法矢量线 性插值计算出,计算出P的法矢量后应用 简单光照模型可以计算出P点的光亮度。 GouraudGouraud明暗处理(插值颜色)明暗处理(插值颜色) 由于每个像素点都需要法向量插值和光照计算,Phong明暗处理计算 量较大,一种简化的处理方法是先利用光照模型计算出多边形顶点处亮 度,然后对亮度进行双线性插值,直接获得像素的颜色,如图6-8,P1、 P2、P3是多边形顶点,其亮度已经计算出。A点的亮度可以由P1、P2点的 亮度线性插值计算出,B点的亮度可以由P1、P3点的亮度线性插值计算出 ,于是P点的亮度可以由A、B点的亮度线性插值计算出。 PhongPhong明暗处理计算量远大于明暗处理计算量远大于GouraudGouraud明暗处理,但效果好。明暗处理,但效果好。 q 光线跟踪与辐射度方法介绍 简单光照模型将光在物体间往复反射、折射引起的照明效 果简化为环境光形式的入射光,没有很好的模拟光的折射、 反射,没有特别考察物体间的相互照明影响,这使得简单光 照模型在某些情况下绘制效果并不理想。 Ic为简单光照模型计算结果,Is为其 它物体反射光,It为透射光,Ks为物 体表面的镜面反射系数,Kt为物体表 面的透射系数。 Whitted特别考察了光在物体间往复反射、折射引起的照明 效果。Whitted认为物体表面向空间某方向V辐射的光亮度I由三 部分组成: 整体光照模型整体光照模型 光线跟踪 光线跟踪技术是Whitted由光线投射技术发展的。从视点V向投 影面上与像素e对应的点投射一光线, P1是该光线与场景中的 物体相交的、离视点最近的点。 辐射度方法辐射度方法 1984年,美国Cornell大学和日本广岛大学的学者分别将热辐射 工程中的辐射度方法引入到计算机图形学中,用辐射度方法成 功地模拟了理想漫反射表面间的多重漫反射效果。辐射度方法 基于物理学的能量平衡原理,它采用数值求解技术来近似每一 个景物表面的辐射度分布。 按整体光照模型,计算P1点的光亮需要计算 源自其它物体的镜面反射光和规则透射光, 如图,在P2、P3点分别沿相应镜面反射方向 、规则透射方向发出一条光线与景物求交, 欲求出交点处对P2、P3的反射光亮度,如此 追踪下去,实际上是自然界光照明物理过程 的的近似逆过程,光线跟踪故此得名。 6.3 物体表面细节的模拟 物体表面的细节可以分为两类:一类是由物体表面颜色色彩 、明暗变化体现出来的细节,如光滑瓷砖表面上装饰图案,它 主要取决于物体表面的材质属性材质属性;另一类是由物体表面不规则 的细小凹凸造成的细节,如桔子表面的皱纹,它主要取决于物 体本身的几何形状几何形状。 在计算机中描述物体材质属性、几何形状的细节很难,如果 只追求看起来象就可以了,可以通过纹理映射的方式生成物体 表面的细节。 纹理映射可以分为:颜色纹理映射颜色纹理映射和几何纹理映射几何纹理映射。颜色纹 理映射用来在光滑表面上产生花纹图案的效果,几何纹理映射 用来使物体表面产生凹凸不平的效果。 一般地讲,利用纹理映射可以在不增加场景描述复杂度,不 显著增加计算量的前提下,大幅度地提高图形的真实感。 q 颜色纹理映射技术 颜色纹理映射的三个主要步骤: (1)纹理函数定义; (2)映射函数定义; (3)纹理映射的实施; 映射 图6-11 纹理图案 (a) 纹理定义域 (b) 物体表面 图6-12 映射函数的建立 q 几何纹理映射技术 粗糙表面的法矢量具有一个比较小的随机分量,这使得 其上的光线反射方向也具有一定的随机分量。Blinn用表面 法矢量的扰动产生凹凸不平的真实感效果。 6.4 6.4 阴影的生成阴影的生成 阴影是现实生活中一个很常见的光照现象,在真实感图形 学中,通过阴影可以反映出物体之间的相互位置关系,增加 图形图像的立体效果,极大地增强真实感。 阴影可以分为本影和半影。本影是指物体表面上那些没 有被任何光源直接照射到的部分,半影是指物体表面上那些 被某些特定光源或特定光源的一部分直接照射到,但不是被 所有光源直接照射到的部分。 场景绘制时,先利用消隐技术确定物体表面的可见部分或 者是像素所对应的物体表面上的可见点,然后应用光照模型 计算物体表面上可见点的亮度,这时如果根据光源是否可以 直接照射到物体表面上当前可见点来取舍光源的照明效果, 则绘制出来的图像具有阴影的效果。 线投射算法和光线追踪算法可以用于阴影的生成。 对光线投射算法而言,如果光源不能直接照射到像素所对 应的物体表面上的可见点,则物体表面上当前可见点的亮度 只包含环境光反射项。 对光线追踪算法而言,如果光源不能直接照射到当前追踪 到的物体表面上的点,则该点反射的光亮度只包括简单光照 模型中的环境光反射项、来自其它物体经当前表面镜面反射 的光亮度、来自其他物体经当前表面规则透射的光亮度。 6.5 图形反走样技术 图6-14 点采样的图形走样 在光栅显示器上显示直线段或曲线段时或多或少地呈现锯齿 状。原因用这有限个像素表示连续的直线段、曲线段就必须 对直线段、曲线段进行采样,最终在光栅显示器上表示直线 段或曲线段的只是一个个离散的有一定面积的像素。这种用 离散量表示连续量引起的失真现象称之为走样走样( (aliasingaliasing) )。用 于减少或消除这种失真现象的技术称为反走样反走样( (antialiasingantialiasing) )。 反走样的方法有两种:一种是提高采 样率,以高于显示分辨率的精度对画 面进行计算,然后以某种方式取平均 获得低分辨率的显示图像;另一种方 法是把像素看成一个区域,求出像素 内各可见物体所占据的面积,然后对 这些物体的光亮度进行面积加权平均 。 6.6 用OpenGL生成真实感图形 OpenGL提供的函数可以方便地实现隐藏面消除、光照计算 、纹理映射。 OpenGL中隐藏面的消除采用的是Z缓冲器算法。 glEnable(GL_DEPTH_TEST )和glDisable(GL_DEPTH_TEST ) 打开和禁止深度测试。 OpenGL进行光照计算时采用的是简单光照模型,只考虑光 源直接照射下物体表面的反射,不考虑光在物体间的反射和 光的透射。 glEnable(GL_LIGHTING)和glDisable(GL_LIGHTING) 打开和禁止光照计算。 OpenGL认为物体表面的反射光包含三个分量:物体本身 发出的光、对环境光的反射,对特定光源的反射。 物体本身发出的光。OpenGL认为物体本身是可以发 光的,但是这种光只会对物体本身的亮度产生影响,不能 影响其它物体的光亮度。物体本身发出的光记为 。 对环境光的反射。这里的环境光指的是全局环境光, 它不依赖于任何特定光源。全局环境光概念的提出使得即 使场景中没有任何光源,观察者也可以看到物体。假设全 局环境光亮度Iglobal,物体表面的环境光反射系数为Ka,则 物体对全局环境光的反射为 。 对特定光源的反射。 在OpenGL中,光源被定义为聚光灯。定义一个聚光灯需要指 定光源的位置(即锥顶),聚光灯的方向(即圆锥轴的方向),聚光 灯的散射角(即圆锥中轴和边的夹角)。聚光灯将光的发射形状 调整为圆锥形,此时空间光强度分布可以用聚光灯光强分布系 数乘以锥顶处聚光灯光强给出 。 图6-15 视线和反射光线夹角 图6-16 聚光灯 综合三个分量,在OpenGL中物体表面的反射光亮度为: 为减小计算量,OpenGL采用Gouraud明暗处理方法。 glShadeModel(GL_SMOOTH)和glShadeModel(GL_ FLAT) 形式的函数调用来设置。 q OpenGL的光照环境设置方法 函数声明: void glLight* (GLenum light, GLenum pname, TYPE param) light表示光源标识,GL_LIGHT0、 GL_LIGHT1、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年陪诊师考试服务态度试题及答案
- 2025年东莞市人工智能训练师初赛竞赛练习题及答案
- (试题)社会救助公共基础知识题库及答案
- 施工现场应急预案方案
- 2025年新媒体运营师中级考试预测题及实战技巧解析
- 2025年护士招聘面试预测题及应对技巧
- 北京市门头沟区2023-2024学年九年级下学期初中学业水平考试(一模)化学试题及答案
- 桃花姬阿胶糕课件
- 桃江眼科知识培训班课件
- 2025年财务主管职位面试预测题及应对建议
- JJF 1847-2020 电子天平校准规范-(高清现行)
- 人工智能遥感解译介绍课件
- 大信审计执业问题解答-存货监盘审计指引
- 锚杆支护技术规范正式版本
- 婚育情况证明
- 下一代互联网技术
- 皮肤知识与问题性皮肤分析(入行必看)
- 单位消防安全评估报告(模板)
- 江西之江化工“7.2”压力容器爆炸事故
- 岩土工程勘察 第七章 静力触探试验ppt课件
- 流行性出血热疫苗接种知情同意书
评论
0/150
提交评论