已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章真实感图形的生成技术 6 1消隐技术6 2光照技术6 3物体表面细节的模拟6 4阴影的生成6 5图形反走样技术6 6用OpenGL生成真实感图形 6 1消隐技术 真实感图形绘制 借助数学 物理 计算机等学科的知识在计算机二维显示屏上产生三维场景的真实逼真图像 图形 应用 计算机辅助设计 多媒体教育 虚拟现实系统 科学计算可视化 动画制作 电影特技模拟 计算机游戏等 将三维场景绘制在计算机二维显示屏上必须经过投影变换 投影变换将三维信息变换到二维平面上 这个过程中深度信息被丢失 生成的图形往往具有二义性 早期判别可见面的算法有消除隐藏线 消除隐藏面算法 现在有画家算法 Z缓冲器算法 扫描线缓算法 光线追踪算法等等 物空间算法是在定义 描述物体的世界坐标系中实现的 以场景中的物体为处理单元 for 场景中的每一个物体 将其与场景中的其它物体比较 确定其表面的可见部分 显示该物体表面的可见部分 像空间算法是在观看物体的屏幕坐标系下实现的 它以窗口内的每个像素为处理单元 for 窗口内的每一个像素 确定与此像素对应的距离视点最近的物体 以该物体表面该处的颜色来显示像素 判别可见面算法通常按它们在实现时所基于的坐标系分为两类 物空间算法和像空间算法 理论上讲 物空间算法的计算量少于像空间算法的计算量 但实际上物体到视点距离的排序与遮挡判别比较复杂 算法效率很大程度上取决于排序的效率 而以扫描线的方式实现像空间算法时容易利用连贯性质从而使得像空间算法更具效率 1 将线段和多边形投影到投影平面上得到线段和多边形 2 计算线段和多边形各条边的交点 3 交点将分成若干个子线段 特别地当交点不存在时 子线段只有一个 即自身 现在每个子线段上的所有点具有相同的隐藏性 4 分别判断各个子线段的隐藏性 多面体隐藏线消除 隐藏线的产生是因为在给定的观察方向下 某些棱 或棱的一部分 被表面多边形的遮挡成为不可见 因此多面体隐藏线消除可以归结为一个根本问题 在给定的观察方向下 给定一条空间线段和一个多边形 判断线段是否被多边形遮挡 如果遮挡 求出遮挡部分 步骤如下 取子线段的中点 判断该点是否在多边形内 如不在多边形内 子线段与多边形不存在隐藏关系 子线段是可见的 如在多边形内 从子线段中点向视点引射线 如果射线与多边形相交 则该子线段被多边形隐藏 否则该子线段可见 消除自隐藏线 隐藏面利用多面体表面多边形的法矢判别 朝后的面 即不可见面 深度测试在观察坐标系下判断线段与多边形的前后关系 如多边形完全在线段之后 则线段完全可见 无需就线段和多边形的遮挡关系进行进一步判断 包围盒测试包围盒不相交 线段和多边形也不相交 线段完全可见 无需就线段和多边形的遮挡关系进行进一步判断 线段和一个多边形进行隐藏性判断时 涉及到的运算包括投影变换 平面上线段和多边形的求交 判断点是否在多边形内 空间中射线和平面求交 如果将多面体的每条棱与每个多边形都按上面的方法消除隐藏线 那么计算量将非常大 采取如下措施可以减少计算量 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 a 经过光照计算的球 b 不经过光照计算的球 单纯判别物体表面的可见性 远远不能反映物体表面的真实感 物体表面所呈现的颜色是由表面向视线方向辐射进入人眼中光决定的 建立数学模型模拟物体表面的光照明物理现象 按照数学模型计算物体表面向视线方向辐射进入人眼中的光亮度 即可获得像素所对应的物体上的可见点的颜色 这样绘制出来的图形具有较强的真实感 如图6 5 a 这些数学模型就称为明暗效应模型或者光照明模型 当光照射到物体表面时 光可能被吸收 反射和透射 被物体吸收的部分转化为热 只有反射 透射的光能够进入人眼产生视觉效果 它们决定了物体所呈现的颜色 如果物体是不透明的 则透射光不存在 物体的颜色仅由反射光决定 这种情形正是简单光照模型需要考虑的 简单光照模型只考察光源直接照射下物体表面的反射情况 光学反射模型 通常物体表面的反射光可以认为包含三个分量 对环境光的反射 对特定光源的漫反射和镜面反射 环境光的反射 环境光 ambientlight 来自周围环境 如墙面 散射的光 在空间近似均匀分布 入射至物体表面后向空间各个方向均匀反射出去 物体对环境光的反射分量表示 其中Ia是入射的环境光亮度 Ka是环境光漫反射系数 它与物体表面性质有关 如果简单光照模型中仅考虑环境光的反射分量 则物体表面的亮度是一个恒定值 没有明暗的自然过渡 漫反射 diffusereflection 漫反射分量表示特定光源在物体表面的反射光中那些向空间各个方向均匀反射出去的光 兰伯特 Lambert 余弦定律指出 当点光源照射到一个漫反射体时 其表面反射光亮度和光源入射角 入射光线和表面法矢量的夹角 的余弦成正比 即 其中Il是来自点光源的入射光亮度 Kd是漫反射系数 与物体表面性质有关 是入射光线和表面法矢量的夹角 兰伯特反射光照模型 只考虑对环境光的反射分量和对特定光源的漫反射分量 则物体表面的反射光亮度为 适用于粗糙 无光泽的物体 如粉笔 黑板 对于擦亮的金属 光滑的塑料等光亮物体需要计算镜面反射 镜面反射 specularreflection 表示特定光源在物体表面的反射光中那些遵循反射定律的光 对于纯镜面 反射光和入射光对称地分布在表面法向的两侧 对于一般光滑表面 表面可理解为由许多朝向不同的微小平面构成 入射光经许多微小平面反射后形成的反射光不再是单向的 而是分布于理想镜面反射方向的周围 通常采用余弦函数的幂次来模拟一般光滑表面的镜面反射光的空间分布 Il是入射光亮度 Ks是物体表面镜面反射系数 为理想镜面反射方向与视线方向的夹角 n为镜面反射光的会聚指数 Phong光照模型 考虑环境光 漫反射和镜面反射 则物体表面的反射光亮度为 实际上光的亮度与传播距离的平方成反比 Il为光源处的光亮度 光线抵达物体表面以及从物体表面反射进入观察者眼睛的过程中存在衰减的问题 漫反射分量和镜面反射分量应该乘以一个衰减因子 以取得远的物体看起来暗些的效果 当场景的投影变换采用透视投影时 Warnock提出线性衰减因子1 d 而Rommey提出衰减因子1 dp可以取得比较真实的效果 此时Phong光照模型可以进一步描述为 其中d是物体上当前考察点到视点的距离 K是一个任意的常量 光照效果图 计算物体上可见点光亮度时通常是将光亮度转换成为光栅图形显示器采用的RGB三基色 这时计算需要在三个基色上分别进行 如果存在多个光源 则将效果线性相加 此时光照模型可以描述为 建立简单光照模型后 就可以用于消隐算法中计算像素所对应的物体上可见点的亮度 明暗处理 图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点的光亮度 Gouraud明暗处理 插值颜色 由于每个像素点都需要法向量插值和光照计算 Phong明暗处理计算量较大 一种简化的处理方法是先利用光照模型计算出多边形顶点处亮度 然后对亮度进行双线性插值 直接获得像素的颜色 如图6 8 P1 P2 P3是多边形顶点 其亮度已经计算出 A点的亮度可以由P1 P2点的亮度线性插值计算出 B点的亮度可以由P1 P3点的亮度线性插值计算出 于是P点的亮度可以由A B点的亮度线性插值计算出 Phong明暗处理计算量远大于Gouraud明暗处理 但效果好 光线跟踪与辐射度方法介绍 简单光照模型将光在物体间往复反射 折射引起的照明效果简化为环境光形式的入射光 没有很好的模拟光的折射 反射 没有特别考察物体间的相互照明影响 这使得简单光照模型在某些情况下绘制效果并不理想 Ic为简单光照模型计算结果 Is为其它物体反射光 It为透射光 Ks为物体表面的镜面反射系数 Kt为物体表面的透射系数 Whitted特别考察了光在物体间往复反射 折射引起的照明效果 Whitted认为物体表面向空间某方向V辐射的光亮度I由三部分组成 整体光照模型 光线跟踪 光线跟踪技术是Whitted由光线投射技术发展的 从视点V向投影面上与像素e对应的点投射一光线 P1是该光线与场景中的物体相交的 离视点最近的点 辐射度方法 1984年 美国Cornell大学和日本广岛大学的学者分别将热辐射工程中的辐射度方法引入到计算机图形学中 用辐射度方法成功地模拟了理想漫反射表面间的多重漫反射效果 辐射度方法基于物理学的能量平衡原理 它采用数值求解技术来近似每一个景物表面的辐射度分布 按整体光照模型 计算P1点的光亮需要计算源自其它物体的镜面反射光和规则透射光 如图 在P2 P3点分别沿相应镜面反射方向 规则透射方向发出一条光线与景物求交 欲求出交点处对P2 P3的反射光亮度 如此追踪下去 实际上是自然界光照明物理过程的的近似逆过程 光线跟踪故此得名 6 3物体表面细节的模拟 物体表面的细节可以分为两类 一类是由物体表面颜色色彩 明暗变化体现出来的细节 如光滑瓷砖表面上装饰图案 它主要取决于物体表面的材质属性 另一类是由物体表面不规则的细小凹凸造成的细节 如桔子表面的皱纹 它主要取决于物体本身的几何形状 在计算机中描述物体材质属性 几何形状的细节很难 如果只追求看起来象就可以了 可以通过纹理映射的方式生成物体表面的细节 纹理映射可以分为 颜色纹理映射和几何纹理映射 颜色纹理映射用来在光滑表面上产生花纹图案的效果 几何纹理映射用来使物体表面产生凹凸不平的效果 一般地讲 利用纹理映射可以在不增加场景描述复杂度 不显著增加计算量的前提下 大幅度地提高图形的真实感 颜色纹理映射技术 颜色纹理映射的三个主要步骤 1 纹理函数定义 2 映射函数定义 3 纹理映射的实施 映射 图6 11纹理图案 a 纹理定义域 b 物体表面图6 12映射函数的建立 几何纹理映射技术 粗糙表面的法矢量具有一个比较小的随机分量 这使得其上的光线反射方向也具有一定的随机分量 Blinn用表面法矢量的扰动产生凹凸不平的真实感效果 6 4阴影的生成 阴影是现实生活中一个很常见的光照现象 在真实感图形学中 通过阴影可以反映出物体之间的相互位置关系 增加图形图像的立体效果 极大地增强真实感 阴影可以分为本影和半影 本影是指物体表面上那些没有被任何光源直接照射到的部分 半影是指物体表面上那些被某些特定光源或特定光源的一部分直接照射到 但不是被所有光源直接照射到的部分 场景绘制时 先利用消隐技术确定物体表面的可见部分或者是像素所对应的物体表面上的可见点 然后应用光照模型计算物体表面上可见点的亮度 这时如果根据光源是否可以直接照射到物体表面上当前可见点来取舍光源的照明效果 则绘制出来的图像具有阴影的效果 线投射算法和光线追踪算法可以用于阴影的生成 对光线投射算法而言 如果光源不能直接照射到像素所对应的物体表面上的可见点 则物体表面上当前可见点的亮度只包含环境光反射项 对光线追踪算法而言 如果光源不能直接照射到当前追踪到的物体表面上的点 则该点反射的光亮度只包括简单光照模型中的环境光反射项 来自其它物体经当前表面镜面反射的光亮度 来自其他物体经当前表面规则透射的光亮度 6 5图形反走样技术 图6 14点采样的图形走样 在光栅显示器上显示直线段或曲线段时或多或少地呈现锯齿状 原因用这有限个像素表示连续的直线段 曲线段就必须对直线段 曲线段进行采样 最终在光栅显示器上表示直线段或曲线段的只是一个个离散的有一定面积的像素 这种用离散量表示连续量引起的失真现象称之为走样 aliasing 用于减少或消除这种失真现象的技术称为反走样 antialiasing 反走样的方法有两种 一种是提高采样率 以高于显示分辨率的精度对画面进行计算 然后以某种方式取平均获得低分辨率的显示图像 另一种方法是把像素看成一个区域 求出像素内各可见物体所占据的面积 然后对这些物体的光亮度进行面积加权平均 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 形式的函数调用来设置 OpenGL的光照环境设置方法 函数声明 voidglLight GLenumlight GLenumpname TYPEparam light表示光源标识 GL LIGHT0 GL LIGHT1 GL LIGHT7 pname表示对光源的哪个属性进行设置
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 玉树州农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(轻巧夺冠)
- 鄂州市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(研优卷)
- 陕西省农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及一套完整答案详解
- 江门市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(典型题)
- 吉安市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解
- 2026年宁波市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及一套参考答案详解
- 巫山县农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(考点梳理)
- 2026年珠海市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(综合题)
- 岳阳市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(a卷)
- 商丘市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(考试直接用)
- 茅盾读书分享名著导读《白杨礼赞》
- 设备外协加工维修单
- 《热辐射》(课件)苏教版五年级科学上册
- 釜类设备安装检验记录
- 桩基工程计量与计价-预制桩(建筑工程计量与计价)
- 思想政治教育学科发展历程与现状
- 《视听语言》习题模版
- 初中英语试卷考试双向细目表
- 渴望 原版 正谱 钢琴谱 五线谱 乐谱
- 绿色工厂自评价报告及第三方评价报告
- 《材料分析测试技术》全套教学课件
评论
0/150
提交评论