ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:21.66KB ,
资源ID:4785596      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4785596.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(3D图像生成算法原理.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

3D图像生成算法原理.docx

1、3D图像生成算法原理3D 图像生成算法原理一、建齐次坐标二、着色模型三、 Z缓存四、 纹理映射在这些步骤中,显示部分(GPU只负责完成第三、四步,而前两个步骤主 要就是依靠CPU来完成。而且,这还仅仅只就是3D图象的生成,还没 有包括游戏中复杂的AI运算。场景切换运算等等无疑,这些元素还需要 CPU去完成,这就就是为 什么在运行大型3D的时候,当场景切换时再强劲的显卡都会出现停顿 的现象。3D 芯片的处理对象就是多边形表示的物体。用多边形表示物体有两 个优点:首先就是直接 (尽管繁琐 ), 多边形表示的物体其表面的分段线性特征除轮廓外可以通过明暗处 理(shading技术消除;其次就是仅存储多

2、边形顶点的几何信息, 多边形内部每个象素的明暗颜色计算所需的信息由这些顶点信息插 值而来 ,这正就是易于用图形硬件支持的快速明暗处理技术。 支持多边形绘制的图形硬件同样也可以绘制由双三次曲面片表示的 物体,通过对这种物体的表面进行三角剖分 , 用逼近的三角形网格代替原物体的曲面表示就可以做到这一点。 当然 ,用多边形表示物体也有其缺点 ,如增加了纹理映射与阴影生成的 难度 ,当需要详细表示复杂物体时所需的三角形数量将变得非常庞 大。将多边形表示的物体显示到计算机屏幕上 ,这一过程涉及物体在计算 机内部的表示方式即物体的数据结构 , 由物体组成的场景的组织结构 ,物体从场景到屏幕空间要经过的一系

3、 列变换 ,以及产生最终屏幕图象要经过的一系列光栅化处理。 这些方面都涉及到特定的处理算法 ,相应的算法又有许多不同的变种。下面仅就3D芯片涉及的图形处理过程及相关算法做一简单分析介绍 , 这些就是理解 3D 图形处理及图形硬件的基础。一、3D物体的表示法具有复杂外形的物体其表面可以由多边形面片来近似表示。 以图 1 的 圆柱为例 ,其柱面可以由 2N 个三角形近似 ,其两端可以由两个 N 边形 来近似。多边形模型在其轮廓上的分段线性特征就是这一表示法主要的视觉 缺陷,改进的唯一途径就是增加多边形的分辨率。对于一个复杂形体来说 ,为了充分表示其细节 ,常常要用到十万个以上 的多边形。这将耗费许

4、多数据库访问时间与绘制时间。当将多边形模型进行放大处理时 ,会产生连接问题。这就就是所谓的 “几何走样 ”。物体的多边形表示既可以通过交互设计人工提取 ,也可以通过激光扫描设备得到。总之 ,多边形表示的物体并不特别适合于交互操作或做 自由的形状改变。当改变物体的形状时很难保证多边形表示的完整性得到保持。对多边形明暗着色所需要的信息存储在一个分层的数据结构中 ,每一个物体表面由指向多边形表的指针定义 ,该多边形表包含了近似该表面的一组多边形 ,每一个多边形由指向顶点表的指针定义 ,顶点表包含 了每个多边形的所有顶点。具体来说需要为每个多边形存储以下信息 :1)多边形的顶点表 ,每一个顶点就是一个

5、三维坐标 ,该坐标定义在创建 该物体时的局部坐标系中。2)顶点的法向量表 ,这就是明暗处理算法所要求的信息。 向量由同一局 部坐标系中的三分量表示。3)多边形的法向量 ,它就是包含该多边形的平面的真正的几何法向量。 这就是背面删除操作所需要的信息。绘制多边形物体的传统方法就是将多边形作为独立的绘制实体 ,这样多边形之间的共享边就要被处理两次。为避免这种情况 ,可采用基于边的绘制方法 ,这时多边形的表示就是基 于多边形的边而不就是多边形本身。基于边的方法意味着绘制过程的组织要采用基于扫描线的算法 ,基于扫描线的算法将同时处理与当前扫描线相交的所有多边形。这时存储器中能存储的可被同时处理的多边形的

6、最大数目将成为可 绘制的场景复杂度的上限。使用全屏 Z-buffer 并将扫描线算法局限在物体所包含的多边形上就可 以解决这一问题。3D 芯片的处理对象就是多边形表示的物体。用多边形表示物体有两 个优点:首先就是直接 (尽管繁琐 ),多边形表示的物体其表面的分段线 性特征除轮廓外可以通过明暗处理(shading技术消除; 其次就是仅存储多边形顶点的几何信息 ,多边形内部每个象素的明暗 颜色计算所需的信息由这些顶点信息插值而来 ,这正就是易于用图形 硬件支持的快速明暗处理技术。支持多边形绘制的图形硬件同样也可以绘制由双三次曲面片表示的 物体 ,通过对这种物体的表面进行三角剖分 , 用逼近的三角形

7、网格代替原物体的曲面表示就可以做到这一点。 当然 , 用多边形表示物体也有其缺点 , 如增加了纹理映射与阴影生成的难度 ,当需要详细表示复杂物体时所 需的三角形数量将变得非常庞大。将多边形表示的物体显示到计算机屏幕上 ,这一过程涉及物体在计算 机内部的表示方式即物体的数据结构 , 由物体组成的场景的组织结构 ,物体从场景到屏幕空间要经过的一系 列变换 ,以及产生最终屏幕图象要经过的一系列光栅化处理。 这些方面都涉及到特定的处理算法 ,相应的算法又有许多不同的变 种。下面仅就3D芯片涉及的图形处理过程及相关算法做一简单分析介绍 , 这些就是理解 3D 图形处理及图形硬件的基础。二、坐标系统 绘制

8、过程的几何处理部分可被瞧成应用一系列的坐标变换将物体数 据库变换到一系列的坐标系下 ,这些坐标系对所有绘制系统都就是公 用的,就是理解3D图形学的基础。用计算机生成图象的一系列基本操 作与绘制过程要经历的一系列空间即坐标系有关。 随着绘制过程的进 行处理将从一个空间进入下一个空间。 已完整地建立起描述这些变换 的方法。在对物体实施变换时希望对顶点与顶点的法向量使用相同的 变换矩阵。事实上 ,当变换在所有方向并不相同时 ,顶点法向量必须采 用不同的变换矩阵。 由于单位法向量经过变换之后其长度不一定仍保 持不变 ,因而必须对其进行重新单位化处理 (单位法向量就是光照计算 所要求的 )。1、局部坐标

9、系 (局部空间 ) 为了建模与进行局部变换的方便可选择被建模物体之内或附近的某 一点作为局部坐标系的原点。 例如可选择一个立方体的某一顶点作为 坐标原点 ,三个坐标轴即就是与该顶点相连的立方体的三条边。在局 部坐标系选定之后 ,物体各顶点的局部坐标以及相对于该局部坐标系 的各顶点的法向量与物体上多边形的法向量就可以被提取并存储起 来。2、世界坐标系 (世界空间 ) 当每一个物体在其局部坐标系中被建立起来之后 ,就需要将其放置到 将要绘制的场景之中。 组成场景的每个物体都有自己独立的局部坐标 系。整个场景的坐标系就就是所谓的世界坐标系。 场景中的所有物体 都必须从自己的局部坐标系中变换到世界坐标

10、系中以定义场景中物 体之间的空间相对关系。如果一个物体在场景中被定义为运动的 ,则必须为该物体定义一个随时间变化的变换序列以便在每一帧将该物 体变换到世界坐标系中的不同位置。 场景中的光源也在世界坐标系中 定义。如果光照计算就是在世界空间中进行 ,则对物体法向量的变换 到此为止。 对物体表面属性如纹理、 颜色等的定义与调整也在世界空 间中进行。3、眼睛坐标系、相机坐标系或观察坐标系 (眼睛空间 )眼睛坐标系统就是用来建立对世界空间进行观察时的观察参数与观 察范围的。在图形学中通常用假想的相机来辅助对观察系统的理解。 一个假想的相机可以以任意方向放置在世界空间的任何位置 ,胶片平面在图形学中就就

11、是观察平面 ,也就就是场景将投影到其上的平面。 建立一个普遍适用的观察空间相当繁琐 ,在多数情况下就是对眼睛坐 标空间做许多限制。一个最小的实用系统可以这样建立 ,首先要求眼 睛坐标系的原点与投影中心就是世界坐标系中的同一个坐标点 ;其次要求观察平面的法向量与观察方向在眼睛空间中与 Z 坐标轴重合 ;最后,观察方向必须就是这样的 ,当相机朝着 Z 轴的正向时 Z 值的增加将 远离眼睛的位置 ,同时在左手坐标系的前提下 ,X 轴指向右 ,Y 轴向上。 满足这一要求的系统就可以使假想的相机以任何观察方向放置在世 界坐标空间中的任何位置。图 2 就是有关坐标系之间的关系。 眼睛坐标系就是最适宜做背面

12、删除的空间。 背面删除操作就是将背对 观察者的多边形全部剔除 ,在场景中这些多边形对于观察者来说就是 不可见的。如果对一个凸物体做背面删除 ,则可以完全解决其隐藏面 问题。对于具有凹面的物体而言这一操作并不能解决隐藏面问题。 背 面删除操作就是通过计算多边形所在平面的法向量与视线向量之间 的夹角来决定该平面就是否可见。 如果这两个向量的点积大于 0,意味 着其夹角小于 90o 即该多边形就是可见的 ,否则为不可见。视线向量 就是从多边形指向视点的向量。 多边形平面的法向量可通过其不共线 的三个顶点计算而得。多边形的法向量必须指向物体的外部 ,为保证这一点 ,多边形的顶点必须以反时针方向 (从多

13、边形外部瞧时 )顺序存 储。如图 3 所示。4、屏幕坐标系 (屏幕空间 ) 屏幕空间就是比较难于靠直觉理解的一种空间概念。 它就是描述如何观察场景的方法的过程 ,与透视几何有关 ,也可以理解为怎样定义场景 中能够到达眼睛 (或相机 )的光线的过程。将场景中的一个点投影到距 离视点为 D 的观察平面或屏幕要用到的基本变换就是透视变换 ,屏幕 或观察平面的法向与观察方向一致。从图 4 可以瞧到 ,运用相似三角形原理,点P在屏幕上的投影 P (Xs二Dxe/Ze, ys二Dye/Z屏幕与观察平 面略有不同 ,屏幕就是观察平面上的一块矩形区域 ,在经过一个与设备 有关的变换之后 ,可以从观察平面坐标求

14、得屏幕坐标。屏幕空间的定 义使得其只对一个封闭空间中所包围的场景进行绘制处理 ,这个封闭 的空间称作视锥台。它可以这样来描述 :设想在距离视点 D 处的观察 平面上有一尺寸为2h的正方形窗口,且该窗口关于观察方向就是对称 的 ,则平面xe= hze/D ye= hze/Dze=D ze=F将构成一个封闭的锥台。其中xe、ye、ze就是指眼睛坐标系中 的坐标,而平面ze=D与平面ze=F分别称作近处与远处的裁剪平面,它 们垂直于观察方向 ,在此我们假设观察平面与近处的裁剪平面重合。 如图 4 所示。对于透视投影而言 ,通过连接窗口角与投影中心就形成 所谓的视锥体。有了这个视锥体 ,就可以用它对已

15、变换到眼睛坐标系下的场景进 行选择。这不外有三种情况 ,对于那些完全落在视椎台之内的物体 ,直 接通过透视变换将其变换到屏幕坐标系下 ;对于那些完全落在视椎台 之外的物体不作进一步的处理而直接抛弃 ;对于那些与视椎台的面相 交的物体则应作裁剪处理 ,裁取其位于锥台内的部分并用透视变换将 它们变换到屏幕坐标系下。在屏幕坐标系下,Z坐标将作为判断物体面 之间相互遮挡的唯一判据。注意,场景中的每个物体的每个三角形都要经过以上处理过程。三、象素处理经过以上一系列的变换之后 ,一个多边形已变换到屏幕坐标系 下。将一个屏幕多边形在屏幕上绘制出来就就是多边形的象素处理过 程,它包括光栅化、隐藏面消除、明暗处

16、理。光栅化、隐藏面消除、 明暗处理就是整个 3D 图形生成过程中最内层的处理。她们就是三个 二维插值过程。光栅化就是用屏幕空间三角形的顶点坐标插值 ,以求得三角形的边所截取的三角形内扫描线段的端点坐标 ,并进而求得所截扫描线段上的象素坐标。 隐藏面消除则就是通过对屏幕空间三角形 顶点的深度值(Z坐标)进行插值,从而获得三角形内扫描线段上每个象 素的深度值。明暗处理就是用同样的方法由顶点光强求得三角形内扫 描段上每个象素的光强。 这三种处理的算法具有相同的数学表示形式 只需将坐标、深度或光强代入该方程就可以得到相应的结果。总之 , 场景的绘制过程可概括为 :对场景中的每个物体的每个多边形做几何变

17、换将其变换到屏幕 空间;对多边形内的每一个扫描段求出其端点及其上每个象素的坐标 ; 对扫描段上的每个象素做隐藏面消除处理及明暗处理。1、光栅化光栅化处理通过插值求得三角形内扫描段的 x 坐标的起点与终 点。问题就是何处就是终点与起点?当使用实数坐标时在象素之内的 何处进行采样 ,屏幕坐标就是取整数还就是保留小数精度?这些问题 如果处理得不好 ,就会在多边形之间产生孔洞 ,产生重叠的多边形 ,这 会在透明效果处理时产生严重问题。如果反走样处理不精确 ,则会在带有纹理的表面上产生纹理不连续现象。例如 ,如果对屏幕坐标取整 ,则屏幕多边形的顶点将延伸或缩回到离它最近的象素 ,这样多边形的大小将发生微

18、小的变化 ,而且不能用密集采样进行反走样处理 ,动画中 的“颤抖 ”现象便就是由此而引起的。 在象素内何处采样并不重要 ,重要 的就是对象素采样的处理必须一致。2、隐藏面消除全屏幕Z-Buffer深度缓存器)算法已成为图形学事实上的标准隐藏面 消除算法,她虽然简单但存储要求很高。Z-Buffer算法可瞧作就是工作 在三维屏幕空间。每一个象素有一个二维屏幕空间坐标 ( xs , ys )与由 眼睛空间顶点的深度值插值而得到的 z深度值。深度缓存器开始时被 初始化为远处裁剪平面的深度 ,对每一个象素比较其插值得到的深度 值与已存储在深度缓存中 ( xs , ys )处的值,如果该值小于存储值 ,则

19、新 计算的象素更靠近观察者。 这时新计算的象素的明暗处理值将覆盖帧 缓存中的旧值 ,深度存储器中的值也换成新计算的值。深度缓存器算 法对场景数据库组织及场景复杂性没有限制。 在处理复杂场景或物体 时 ,应保证足够的深度精度。3、明暗处理 首先计算多边形顶点的明暗参数 ,然后在多边形平面上进行插值。这样绘制出的物体不但具有很强的三维立体感 ,而且消除了用于近似 曲面的多边形之间的公用边所形成的不连续特征。实现这一处理方式的算法有两种,一种称作Gouraud明暗处理,一 种称作Pho ng明暗处理(均以发明者的名字命名)。这也就是基于多边形的绘制日益受欢迎的一个重要原因。Gouraud 明暗处理的

20、速度快 ,但不能产生精确的高光效果 ,通常用在对 速度要求高的场合,如飞行模拟、交互式 CAD应用等。Pho ng明暗处 理可以生成高质量的图像 ,但将耗费庞大的硬件资源。Gouraud 明暗处理仅在多边形的顶点使用局部反射光照模型计 算光强 ,然后使用顶点处的光强通过插值求出多边形内各象素的光强 值。而 Phong 明暗处理则对顶点的法向量进行插值 ,并对多边形内的 每一个象素用局部反射光照模型计算其光强。一般说来 ,多边形顶点的光强就是顶点的法向量相对于光源与视 点的方向的函数 ,这就就是所谓的局部反射光照模型。顶点的法向量用来近似原物体表面在该点处的法向量 ,通过平均公用该顶点的所有多边

21、形的法向量求得。Gouraud 明暗处理仅与局部光照模型中的漫反射分量一起使用 , 这就是因为当高光点完全落在多边形之内时 ,其对多边形顶点处没有 任何影响。该方法就是目前 3D 图形硬件都支持的唯一的明暗处理方 法。4、特殊效果纹理映射、透明以及雾化 (大气效应 )等真实感效果都就是在象素 处理阶段实现的。物体表面纹理的定义就是在世界坐标系中进行的 ,通过预处理 ,每个带有纹理的多边形在其顶点数据中建立了与相应纹理图的映射关 系。在绘制带有纹理的多边形时 ,其相应的纹理图也同时被加载到纹 理存储器中 ,在求出物体上象素坐标的同时其相应的纹理坐标也被计算出来。用该纹理坐标从纹理存储器中读出相应纹理象素的值 ,将其与明暗处理的结果进行混合就得到要显示的象素值。雾化(大气效应 )则就是在计算出的象素值上乘上一个与深度有关 的衰减因子。对落在同一屏幕位置的象素点的象素值按其所属物体的透明系 数进行加权融合就可以产生透明效果。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1