第六章 三维真实感物体显示技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.2.1 画家ቤተ መጻሕፍቲ ባይዱ法
多边形的画家算法如下: ①对每个多边形顶点求Zmin。以Zmin为排序关键码,建立 相应的深度排序表。 表中第一个多边形是最小的Zmin,记这多边形为P,同时, 设视点位于Z轴方向的无穷远处,于是根据坐标系规定, P是离视点最远的多边形。 ②取第二个多边形为Q ③检查Q与P的关系 如果Zmax(P)<Zmin(Q),则P不遮挡Q,将P写入帧缓存。 如果满足上述五个条件之一,则P不遮挡Q,于是P写入帧 缓存。
6.1.3 曲面隐藏线消除
•
• • •
而对于z=zi平面上的曲线y=f(x,zi),在区 间x∈[a,b]上只有两种情况是可见的。 f(x,zi)>max f(x,zj) x∈[a,b] f(x, zi)<min f(x, zj) x∈[a,b] 其余线段上应当消隐,如图5.5。
6.1.3 曲面隐藏线消除
6.1.2 凹多面体的隐藏线消除
这样,线段AB投影多边形有两种可能: 1、线段与多边形的任何边都不相交; 2、线段AB与投影多边形有交点。 下面分别讨论:
6.1.2 凹多面体的隐藏线消除
1、线段与多边形的任何边都不相交 此时又有两种可能值,即线段AB与投影多 边形分离;或线段AB在投影多边形之中。 前一种情况,线段完全可见。后一种,空 间线段完全可见或完全隐藏。可以通过空 间线段中点与视点连线,判断此连线段与 空间多边形是否有交点,若没有交点,则 空间线可见,若有交点,则空间线段被空 间多边形隐藏。
6.2.1 画家算法
• 按下面五种情况进行讨论
6.2.1 画家算法
•P和Q在xoy平面上投影的包围盒在x方向上不相交。 •P和Q在xoy平面上投影的包围盒在y方向上不相交。 •P和Q在xoy平面上投影不相交。 •P的各顶点均在Q的远离视点的一侧。 •Q的各顶点均在P的靠近视点的一侧。 五项中有一项成立,则P就不遮挡Q。如果上述五项都 不成立,则说Q有部分被P遮挡了。
6.1.3 曲面隐藏线消除
由方程
y f ( x, z ) (5.2)
表示则曲面经常出现在实际应用和科学计算 中,在表示这个曲面的线框式立体图中。一 般用x=xi和z=zi两簇曲线表示,曲面隐藏线 的消除就是对这两簇曲线进行检测判断曲线 哪些部分要被遮挡而隐藏的。
6.1.3 曲面隐藏线消除
• 为此先讨论z=zi的一簇曲线的消隐算法。 设 zi z0 ih i=1,2……n (5.3) • • 平面z=zn是最靠近视点,于是平面Z=zn上 曲线 y f ( x, z n ) • (5.4) • 都是可见的。
6.1.2 凹多面体的隐藏线消除
2、线段AB与投影多边形有交点 • 此时投影多边形的边把投影线段分割成若干段, 如图所示
6.1.2 凹多面体的隐藏线消除
每条线段上所有点具有相同的隐藏性,究竟 是隐藏的还是可见的需进一步判断是否落在 投影多边形内部。若在内部则需要隐藏。 根据上述方法,依次把多边形的边进行对比 便得到所有隐藏线 。
6.2.2 Z缓冲算法
• 深度缓冲器算法的优点是 ①方法简单,在象素级上由近物代替远物,从面达到消除隐藏面的要求, 对于复杂形状也可以实现; ②计算量为线性复杂度O(n),其中n场景中景物表面采样点的树目,所以, 对于复杂画面,此方法能较有效的显示出来; ③由于景物表面上的可见点可按任意次序写入Z缓冲器和帧缓存,所以不 必首先把多项式面进行排序,省了画家算法中的排序时间。 ④容易推广至空间的自由曲面。事实上只需在上述算法中把多边形面改 为自由曲面便可,故对描述一般场景是个有效方法; ⑤由于目前涉及的三维显示都存在运行速度慢的问题,许多实时显示需 要硬件实现算法来加速,固而能否易于硬件实现也是衡量一个算法的 指标之一,Z缓冲器算法只涉及比较小而易于硬件实现,所以,Z缓冲 算法已在计算机图形学中成了一个标准。
6.2.2 Z缓冲算法
• • • • • • • • • • • • • • • • • • Z-buffer算法() { 帧缓存置背景色; Z缓存置为-1;//表示取为最小值 for(每个多边形面) { 扫描转换多边形; for(多边形所覆盖的每个象素(x,y)) { 计算深度值Z(x,y); if(Z(x,y)>Z缓冲器中(x,y)的值) { 把Z(x,y)替换Z缓冲器(x,y)的值; 把多边形在(x,y)处的颜色值存入帧缓存的(x,y)处; } } } }
6.2.2 Z缓冲算法
• Z缓冲算法又称为深度缓冲算法,这是一种简单而 且有效的图像空间隐藏面消除的算法,是由 Catual于1975年提出的。这主要针对画家算法中, 深度排序计算量大,而且排序后还需检查相邻的 面,以确保在深度优先级表中前者在前,后者在 后,若遇到多边形相交或循环无序时还必须分割 多边形等复杂运算而求出的一种新方法,在这个 算法中,需要两张表存放相应数据,一张表叫帧 缓存,用来存放对应象素的颜色值,另一张叫Z缓 存存储器,用来存放对应象素的深度值。如图所 示。
线框架结构模型 它是将立体对象用轮廓线和小的元素面描 述的模型,这种模型的对象立体数据输入 方式简单,容易操作,可以实现描述的快 速性,经常被人们使用。但是由于线推表 示会出现错误理解。如下图所示。
6.1 隐藏面和隐藏线的消除
ai x bi y ci z d i 0
6.1.1 凸多面体的隐藏线消除
6.2.3 扫描线z-buffer算法
• • • • • • • • • • • • • • • • • • • • 扫描线z缓冲器算法如下: For(各条扫描线) { 将扫描线桢缓存置为背景色; 将扫描线z缓冲器置最大值; For(各个多边形) { 求出该多边形与当前扫描线的相交区间; For(相交区间内各个象素点) { 计算多边形在该处的深度值Z; If(多边形在该处深度值z<Z缓冲器在该处的值) { 用多边形在该处的深度值z取代Z缓冲在该处的值; 用多边形的颜色替代帧缓存中相应值; } } } 用帧缓存显示当前扫描线; }
凸多面体是由若干个平面围成的物体,这些平面 的方程设为:
6.1.1 凸多面体的隐藏线消除
平面的法向量n为(ai,bi,ci) 或(-ai,-bi,-ci) 即 -aix-bix-cix=0 也是平面方程。 为了下面讨论方便,规定n的取法满足下列条件: 对物体内一点P0(x0,y0,z0)使得 n· (x0, y0,z0)T+di<0, 这样规定的法向量n指向了物体外部。
6.2.2 Z缓冲算法
屏幕 帧缓存 Z缓冲器
每个单元存放对
每个单元存放对
6.2.2 Z缓冲算法
• Z缓存器中每个单元的值是对应像素点所反映对象 的Z坐标值,Z缓冲器中每个单元初值先完成Z的 极小值,而帧缓存中对应单元的初值取为背景色, 图形消隐的过程实际上就是根据Z缓冲器的情况给 帧缓存对应单元填充相应的颜色值。具体讲,Z缓 冲器的值与空间一点的Z值进行比较,若Z缓冲器 的值大,则不变,即Z缓冲器的值不变,帧缓存的 值也不变;若Z缓冲器的值小,则Z缓冲器的值用 此Z值表示,同时帧缓存的对应值用空间点对应的 多边形的颜色填。 • 对显示对象的每个面上的每个点都作了上述处理 后,便又得到清除了隐藏面的图。
6.2.2 Z缓冲算法
• Z缓冲算法也有许多缺点 ①该算法并没有考虑物体固有的拓扑几何结构 事实上,物体固有的几何结构在空间 构成一种 空间构架,在这构架中有一些面本身不可见,无 须再拿来判断。因而,z缓冲算法的运算或没有必 要,计算量还是挺大的。 ②有一些处理相对而言实现不了,如对透明半透明 效果无法实现。
6.1.2 凹多面体的隐藏线消除
注意到凹多面体的表面也都是多边形,因此, 一条边是否为隐藏线的判断实质上是这样一 个问题:空间一段线段P1P2和一个多边形π, 判断线段是否被多边形遮挡。如果全被遮挡 则是隐藏线,若部分遮挡,则求出隐藏部分, 以视点为投影中心,把线段与多边形顶点投 影到屏幕,将各对应投影点连线的方程与直 线联立求解,即可求得线段与多边形投影得 交点。
第六章 三维真实感物体显示技术
• 虚拟现实(Virtual Reality,简称VR)技术 是一种逼真的模拟人在自然环境中视觉、 听觉、运动等行为的人机界面技术。其目 的是:不仅能够在多维空间仿真建模,而 且能够帮助人们获取知识和形成新的概念, Mark Green给出了一个简明的虚拟现实应 用系统模型,如图6.1所示。
6.2.2 Z缓冲算法
• • • • • • • • • • • • • • • • • • • • • • • • 多面体消隐的改进z缓存算法: Z_Buffer() { //帧缓存置为背景色; //扫描整个屏幕 For(屏幕上的每个象素(i,j)) { 深度缓存变量zb=-1;//置最小值 For(多面体上的每一个多边形) { If(象素点i,j在p的投影多边形内P) { If(像素点(i,j)在P的投影多边形内) 计算P在i,j点的深度值depth; If(depth>zb) { zb=depth; 帧缓存相应位置置p的颜色; } } } } 按帧缓存进行显示; }
6.1.1 凸多面体的隐藏线消除
视觉与第i个面上一点连线方向为(li,mi,ni) 则第i个面为自隐藏面的判断方法是:
(ai , bi , ci ) (li , mi , ni ) 0
6.1.1 凸多面体的隐藏线消除
对于任意凸对面体,可先求出所有隐藏面, 然后检查每条边,若此边为两隐藏面的交线, 则此边是隐藏线,用虚线表示或消除。
6.2.1 画家算法
• 这里涉及了一个问题,即多边形究竟如何 排序呢? • 下面给出一种建立深度优先级表的方法。
6.2.1 画家算法
每个多边形有一些顶点,这些顶点有一个Z坐标,取 其中Z坐标最小的记为Zmin,于是这个多边形都有 这么个Zmin,按Zmin的大小把多边形作为初步排序。 设Zmin最小的多边形为P,它暂时成为优先级最低 的一个多边形。对其他任意一个多边形Q,研究P与 Q的关系。 (1)若Zmax(P)<Zmin(Q),则P不为遮挡Q。 (2)若Zmax(P)>Zmin(Q)而又有Zmin(P)<Zmin(Q), 则需要作进一步检查。
6.2 消除隐藏面
• 为了让曲面在图形显示器上显示,需要把 对应的曲面某点在屏幕某位置决定出来, 即把曲面点变换成图像中点,这过程就是 光栅化过程,于是有些曲面或曲面一部分 会被遮挡住,因此需要解决消除隐藏面的 问题。
6.2.1 画家算法
• 画家算法是把对象空间方法与图像空间方法结合 在一起来消除隐藏面的方法,其原理是,先把显 示窗口设置成背景色,再把物体各个面按其离视 点的远近进行排序,离视点远的多边形平面放在 表头,离视点近的在表尾,这样得到一个存放深 度优先的表,然后按表头到表尾的顺序逐个绘制 各个面。由于后显示的面取代先显示的面,而后 显示的面离视点更近一些,因此由远及近的绘制 各个面,就相当于消除隐藏面。因为这方法与画 家作画过程类似,故取名为画家算法。
第六章 三维真实感物体显示技术
第六章 三维真实感物体显示技术
• 计算包括所有应用中非图形的计算,几何 模型包括一个计算中的数据的高级图形表 示或者叫科学计算可视化,观察指用户查 看应用数据 。行为体是指以同样方式仿真 用户的系统中的交互对象,用户对象的仿 真有三个方面的研究:几何仿真、物理仿 真和行为仿真。其中几何仿真是核心技术, 是三维图形学研究热点,也是立体虚拟现 实的基础。
6.1 隐藏面和隐藏线的消除
三维计算机图形学方法中,利用计算机处理立体 对象,所使用的表示立体对象的模型称为立体模 型。 主要模型有: (1)线框架结构模型(wire frame model); (2)表面模型(surface model); (3)实体模型(solid model)
6.1 隐藏面和隐藏线的消除
第六章 三维真实感物体显示技术
• 本章主题是 :
三维计算机图形学(CG),介绍三维计算 机图形学中一些基本方法,基本概念以及 基本技巧 。 • 本章主要内容是: 立体多面体的消隐算法,基本光照模型以 及纹理贴图方法等。
第六章 三维真实感物体显示技术
• 要求: 在模仿现实基础上,自己编程实现相应的 程序,达到举一反三,从而熟练掌握这些 基本方法和基本技巧以及基本概念。