3D图像生成算法原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3D图像生成算法原理
一、建齐次坐标
二、着色模型
三、Z缓存
四、纹理映射
在这些步骤中,显示部分(GPU)只负责完成第三、四步,而前两个步骤主要是依靠 CPU 来完成。而且,这还仅仅只是3D图象的生成,还没有包括游戏中复杂的AI运算。
场景切换运算等等……无疑,这些元素还需要CPU去完成,这就是为什么在运行大型3D的时候,当场景切换时再强劲的显卡都会出现停顿的现象。
3D芯片的处理对象是多边形表示的物体。用多边形表示物体有两个优点:首先是直接(尽管繁琐),
多边形表示的物体其表面的分段线性特征除轮廓外可以通过明暗处理(shading)技术消除;其次是仅存储多边形顶点的几何信息,
多边形部每个象素的明暗颜色计算所需的信息由这些顶点信息插值而来,这正是易于用图形硬件支持的快速明暗处理技术。
支持多边形绘制的图形硬件同样也可以绘制由双三次曲面片表示的物体,通过对这种物体的表面进行三角剖分,
用逼近的三角形网格代替原物体的曲面表示就可以做到这一点。
当然,用多边形表示物体也有其缺点,如增加了纹理映射和阴影生成的难度,当需要详细表示复杂物体时所需的三角形数量将变得非常庞大。
将多边形表示的物体显示到计算机屏幕上,这一过程涉及物体在计算机部的表示方式即物体的数据结构,
由物体组成的场景的组织结构,物体从场景到屏幕空间要经过的一系列变换,以及产生最终屏幕图象要经过的一系列光栅化处理。
这些方面都涉及到特定的处理算法,相应的算法又有许多不同的变种。下面仅就3D芯片涉及的图形处理过程及相关算法做一简单分析介绍,这些是理解3D图形处理及图形硬件的基础。
一、3D物体的表示法
具有复杂外形的物体其表面可以由多边形面片来近似表示。以图1的圆柱为例,其柱面可以由2N个三角形近似,其两端可以由两个N边形来近似。
多边形模型在其轮廓上的分段线性特征是这一表示法主要的视觉缺陷,改进的唯一途径是增加多边形的分辨率。
对于一个复杂形体来说,为了充分表示其细节,常常要用到十万个以上的多边形。这将耗费许多数据库访问时间和绘制时间。
当将多边形模型进行放大处理时,会产生连接问题。这就是所谓的“几何走样”。
物体的多边形表示既可以通过交互设计人工提取,也可以通过激光扫描设备得到。总之,多边形表示的物体并不特别适合于交互操作或做自由的形状改变。
当改变物体的形状时很难保证多边形表示的完整性得到保持。
对多边形明暗着色所需要的信息存储在一个分层的数据结构中,每一个物体表面由指向多边形表的指针定义,该多边形表包含了近似该表
面的一组多边形,每一个多边形由指向顶点表的指针定义,顶点表包含了每个多边形的所有顶点。
具体来说需要为每个多边形存储以下信息:
1)多边形的顶点表,每一个顶点是一个三维坐标,该坐标定义在创建该物体时的局部坐标系中。
2)顶点的法向量表,这是明暗处理算法所要求的信息。向量由同一局部坐标系中的三分量表示。
3)多边形的法向量,它是包含该多边形的平面的真正的几何法向量。这是背面删除操作所需要的信息。
绘制多边形物体的传统方法是将多边形作为独立的绘制实体,这样多边形之间的共享边就要被处理两次。
为避免这种情况,可采用基于边的绘制方法,这时多边形的表示是基于多边形的边而不是多边形本身。
基于边的方法意味着绘制过程的组织要采用基于扫描线的算法,基于扫描线的算法将同时处理与当前扫描线相交的所有多边形。
这时存储器中能存储的可被同时处理的多边形的最大数目将成为可绘制的场景复杂度的上限。
使用全屏Z-buffer并将扫描线算法局限在物体所包含的多边形上就可以解决这一问题。
3D芯片的处理对象是多边形表示的物体。用多边形表示物体有两个优点:首先是直接(尽管繁琐),多边形表示的物体其表面的分段线性特征除轮廓外可以通过明暗处理(shading)技术消除;
其次是仅存储多边形顶点的几何信息,多边形部每个象素的明暗颜色计算所需的信息由这些顶点信息插值而来,这正是易于用图形硬件支持的快速明暗处理技术。
支持多边形绘制的图形硬件同样也可以绘制由双三次曲面片表示的物体,通过对这种物体的表面进行三角剖分,
用逼近的三角形网格代替原物体的曲面表示就可以做到这一点。当然,用多边形表示物体也有其缺点,
如增加了纹理映射和阴影生成的难度,当需要详细表示复杂物体时所需的三角形数量将变得非常庞大。
将多边形表示的物体显示到计算机屏幕上,这一过程涉及物体在计算机部的表示方式即物体的数据结构,
由物体组成的场景的组织结构,物体从场景到屏幕空间要经过的一系列变换,以及产生最终屏幕图象要经过的一系列光栅化处理。
这些方面都涉及到特定的处理算法,相应的算法又有许多不同的变种。下面仅就3D芯片涉及的图形处理过程及相关算法做一简单分析介绍,这些是理解3D图形处理及图形硬件的基础。
二、坐标系统
绘制过程的几何处理部分可被看成应用一系列的坐标变换将物体数据库变换到一系列的坐标系下,这些坐标系对所有绘制系统都是公用的,是理解3D图形学的基础。用计算机生成图象的一系列基本操作与绘制过程要经历的一系列空间即坐标系有关。随着绘制过程的进行处理将从一个空间进入下一个空间。已完整地建立起描述这些变换的方法。在对物体实施变换时希望对顶点和顶点的法向量使用相同的变
换矩阵。事实上,当变换在所有方向并不相同时,顶点法向量必须采用不同的变换矩阵。由于单位法向量经过变换之后其长度不一定仍保持不变,因而必须对其进行重新单位化处理(单位法向量是光照计算所要求的)。
1.局部坐标系(局部空间)
为了建模和进行局部变换的方便可选择被建模物体之或附近的某一点作为局部坐标系的原点。例如可选择一个立方体的某一顶点作为坐标原点,三个坐标轴即是与该顶点相连的立方体的三条边。在局部坐标系选定之后,物体各顶点的局部坐标以及相对于该局部坐标系的各顶点的法向量和物体上多边形的法向量就可以被提取并存储起来。
2.世界坐标系(世界空间)
当每一个物体在其局部坐标系中被建立起来之后,就需要将其放置到将要绘制的场景之中。组成场景的每个物体都有自己独立的局部坐标系。整个场景的坐标系就是所谓的世界坐标系。场景中的所有物体都必须从自己的局部坐标系中变换到世界坐标系中以定义场景中物体之间的空间相对关系。如果一个物体在场景中被定义为运动的,则必须为该物体定义一个随时间变化的变换序列以便在每一帧将该物体变换到世界坐标系中的不同位置。场景中的光源也在世界坐标系中定义。如果光照计算是在世界空间中进行,则对物体法向量的变换到此为止。对物体表面属性如纹理、颜色等的定义和调整也在世界空间中进行。
3.眼睛坐标系、相机坐标系或观察坐标系(眼睛空间)
眼睛坐标系统是用来建立对世界空间进行观察时的观察参数和观察围的。在图形学常用假想的相机来辅助对观察系统的理解。一个假想