三维物体消隐算法

合集下载

第7章 三维几何02—消隐算法

第7章 三维几何02—消隐算法

2002年10月24日
上海交通大学计算机系 何援军
16
7.7.2 面对棱的遮挡(1)
r令 D1= Ax1+By1+Cz1+D D2= Ax2+By2+Cz2+D r 当 D1(D2)<0 D1(D2)=0 D1(D2)>0 r 且 N=N1+N2
2002年10月24日 上海交通大学计算机系 何援军 17
7.6 一般多面体的隐藏线消除
r 棱分类──一般多面体的自消隐 r 面对棱的遮挡 r 深度测试 r 重叠测试 r 隐藏线的表示和一维交集算法 r 消隐算法的数据结构 r 消隐算法的实施
2002年10月24日
上海交通大学计算机系 何援军
13
7.7.1 棱分类— — 一般多面体的自消隐(1)
r E1:由两个前向面相交而成( 3-4, 5-8) r E2:由两个后向面相交而成( 1-10, 10-7, 9-10, 6-2) r E3:由一个前向面和一个后向面相交而成,但前 向面更靠近视点( 1-2, 2-3, 4-1, 9-4 , 8-9 , 3-5, 7-8 , 6-7 )
令 N1(N2)=
-2 0 1
7.7.2 面对棱的遮挡(2)
r 则当 N≤-2,棱在面的后面( N=-2 ); qN=0,棱在面上; qN=-1,棱贯穿面; qN>0,棱在面之前。( N=1 和 N=2 )
2002年10月24日
上海交通大学计算机系 何援军
18
7.7.2 面对棱的遮挡(3)
r 一条棱被一平面遮挡的判别原则如下:
2002年10月24日
上海交通大学计算机系 何援军
20
7.7.2 面对棱的遮挡(5)

利用OpenGL进行CAD三维图形消隐处理

利用OpenGL进行CAD三维图形消隐处理

利用OpenGL进行CAD三维图形消隐处理利用OpenGL进行CAD三维图形消隐处理三维图形消隐算法已比较成熟,但要普通编程人员对复杂三维图形进行消隐编程,却不是容易的事。

OpenGL图形库中提供了消隐处理函数,但消隐却不知因何原因而质量不高,如消隐时直线断断续续。

为此笔者进行了一定改进和精细消隐处理,下面介绍两种办法。

一、一般消隐这种方法为首先设置消隐使能,初始化深度缓存,设置消隐比较,直接进行绘图即可。

但此种结果是直线断断续续,时有时无,效果差。

改进只需将直线线宽加粗,若需多边形边框一同绘出,则要GL_LINES方式将边框线段重绘。

具体方法如下:glEnable(GL_DEPTH_TEST);//设置消隐使能glClearDepth(1.0);//设置初始化深度缓存值glClear(GL_DEPTH_BUFFER_BIT);//深度缓存消除gldephFunc(GL_LEQUAL);//设置消隐比较glLineWidth(2.0);//直线线宽应比多连形线宽多一倍下述设置后,即可开始绘图。

消隐能正常显示,只是直线线宽均比多边形宽一倍,图形变得粗糙,效果不十理想。

二、精细消隐处理精细消隐设计分三步:1、首先在消隐方式下对所有多边形面进行绘图,其目的是在深度缓存中写入消隐后的多边形面的Z值,并比较后再写入深度缓存,即大大简化了多边形面的Z缓存计算。

2、将直线及多边形边框直线由目标坐标转换成窗口坐标下的值,并将线段离散化为窗口坐标下的象素点,再比较象素点的窗口坐标下Z值与深度缓存值,从而将隐藏直线段消除,记录显示线段,并窗口坐标由三维换为二维。

3、消除显示缓存,重新显示二维窗口坐标下的可视线段。

这样处理,一方面极大地简化了Z缓存计算,使普通编程人员能胜任高级三维CAD软件设计,消隐显示质量高;另一方面获得的可视线段,便于纯Windows图形打印,大大地增强了OpenGL图形打印能力;此处还可便于三维图形标注。

三维线框模型物体的隐藏线消除算法与实现

三维线框模型物体的隐藏线消除算法与实现

三维线框模型物体的隐藏线消除算法与实现李军民;袁青【摘要】目的研究计算机图形学中隐藏面和隐藏线的消除,以便更直观、更形象地获取地理、工程信息.方法剔除指定视点下明显不可见的面和线,获取可见线之后对,对有线子段用中点判断法.结果正确地得到了三维物体的投影图.结论该算法能成功地应用在仿真模拟和几何造型系统中,减少了二步消隐过程中直线直交计算的工作量,具有较好的消隐效率.%Aim In order to get a direct and vivid geographic or engineering information, in this article the elimination of hidden surface and hidden line in computer graphics is studied. Methods To clear obvious hidden lines and surface at the assigned view point at first, then get the visible lines, and a the Middle-Point algorithm to the fragments of the line. Results The correct projection of three-dimensional objects is obtained. Conclusion This algorithm can be well applyed in the area of analogue simulation and geometric model system.【期刊名称】《西北大学学报(自然科学版)》【年(卷),期】2012(042)006【总页数】4页(P931-934)【关键词】三维线框模型;平行投影;隐藏线;潜在可见面【作者】李军民;袁青【作者单位】西安科技大学计算机科学与技术学院,陕西西安710054;西安科技大学计算机科学与技术学院,陕西西安710054【正文语种】中文【中图分类】TP391用计算机生成三维形体的仿真图形,是计算机图形学研究的重要内容之一,有助于人们更加直观、形象地认识和了解地理、工程信息。

三维物体消隐算法

三维物体消隐算法

----本文将分析当前在CAD三维图形处理中最主要的12中消隐算法,其中8种属于物体空间法,4种属于图象空间法。在实际处理中,由于物体表面形态的复杂性和提高消隐处理的效率,通常都是结合使用多种消隐算法来完成物体的消隐处理的。
----一、物体空间法
----物体空间法是在三维坐标系中,通过分析物体模型间的几何关系,如物体的几何位置、与观察点的相对位置等,来进行隐藏面判断的消隐算法。世界坐标系是描述物体的原始坐标系,物体的世界坐标描述了物体的基本形状。为了更好地观察和描述物体,经常需要对其世界坐标进行平移和旋转,而得到物体的观察坐标。物体的观察坐标能得到描述物体的更好视角,所以物体空间法通常都是在观察坐标系中进行的。观察坐标系的原点一般即是观察点。
[x*y*z*1]=[xyz][cosβ0-sinβ0
0100
sinβ0cosβ0
0001]
物体绕X轴旋转的角度γ的三维旋转变换公式为
[x*y*z*1]=[xyz][1000
0corγsinγ0
0-sinγcosγ0
0001]
将上述表达式展开后可得如下公式
{x&#39;=cosα×x-sinα×z;
三维坐标变换
透视投影变换
基本图形元素间的求交计算
两个区域重叠判断
点与区域的包含测试
面的朝向测试
----S为消隐策略,即规定P中各基本操作过程被采用的先后次序。
----因此,设计消隐算法时应考虑上述五个要素及它们之间的相互关系。
----在计算机图形学中,为了简化算法,一般是利用多面体去逼近曲面体,因此多面体的消隐算法是曲面体的基础。本文的消隐算法讨论主要是基于多面体的消隐问题,对曲面体进行多次多面体近似,对每一多面体运用多面体消隐算法就能实现曲面体的消隐。

06-消隐

06-消隐

点与多边形的包含性检测: (1)射线法
P P1 P2 P3 P P1 P2
由被测点P处向 y = - 方向作射线 交点个数是奇数,则被测点在多边形内部。否则,偶数 表示在多边形外部。
若射线正好经过多边形的顶点 ,则采用“左开右闭”的原则来 实现。即:当射线与某条边的顶 点相交时,若边在射线的左侧, 交点有效,计数;若边在射线的 右侧,交点无效,不计数。 用射线法来判断一个点是否 在多边形内一是计算量大,二 是不稳定。原因是射线在经过 多边形顶点时,由于计算机本 身的误差(也许多了0.00001), 把本该无效的交点变成有效的 交点了。所以这种算法是不稳 定的。
上图所画的仅仅是一个简单的立方体,如果一个物体是由多 个形体所组成的,或者整个三维场景是由多个物体构成的,情 况就更为复杂了。 因此,要绘制出意义明确的、富有真实感的立体图形,首 先必须消去形体中的不可见部分,而只在图形中表现可见部 分。这就要去寻求解决显示三维物体的图形中消去不可见部 分的方法,也就是所谓的“消隐”问题。消隐包括消除“隐 藏线”和“隐藏面”两个问题。
消 隐
三维物体的显示和真实感图形是当今计算机图形学研究的 一个焦点。在二维显示设备上显示三维图像, 必须对三维图像 进行消隐处理, 通过消隐处理的物体才能很好的表现三维立体 效果, 但是这种物体明显缺乏真实感, 还需要对物体进行真实 感的处理, 这样才能逼真的显示物体。
主要讲述的内容:
消隐的分类,如何消除隐藏线、隐藏面,主要介绍以 下几个算法:
Z-Buffer算法() { 帧缓存全臵为背景色
深度缓存全臵为最小Z值(比如赋一个10-8次方)
for(每一个多边形)
{扫描转换该多边形
for(该多边形所覆盖的每个象素(x,y) )

图像空间的消隐算法Zbuffer扫描线warnock

图像空间的消隐算法Zbuffer扫描线warnock

第九章:真实感图形学 • 线消隐中最基本的运算 判断面对线的遮挡关系。体也要分解为面,再判断面与线的遮挡关系。在遮挡判断中,要反复 地进行线线、线面之间的求交运算。
图9.5 遮挡关系
第九章:真实感图形学
• 平面对直线段的遮挡判断算法 不失一般性,取视点在Z轴正无穷远,视线为Z轴负方向,物体投影 到XOY平面上。
for(Fj的每一条边Ei) 将二元组< Ei ,j>压入堆栈 While(栈不空) { < Ei ,j0> = 栈顶;
for(j!= j0的每一个面Fj) { if( Ei 被Fj 全部遮挡) { 将Ei 清空; break; } if( Ei 被Fj 部分遮挡) { 从Ei 中将被遮挡的部分裁掉;
5. 以上所求得的各交点将线段的投影分成若干段,求出第一段中点。 6. 若第一段中点在平面的投影内,则相应的段被遮挡,否则不被遮挡;其他段的遮挡关
系可依次交替取值进行判断。 7. 结束。第九章:真实感ຫໍສະໝຸດ 形学图9.6 视点与线段同侧
图9.7 包围盒不交
图9.8 分段交替取值
第九章:真实感图形学
• 线消隐算法 基本数据结构: 面表(存放参与消隐的面) + 线表(存放待显示的线) HiddenLineRemove() { 坐标变换; for(对每个面Fj)
第九章:真实感图形学
③ P在Q之前 如果P的所有顶点在Q所在平面的可见一侧,则Q不会遮挡P的任何部分。完成这一测试需把P的 各顶点坐标代入Q的平面方程,如果所得式子的符号与视点代入方程的符号相同,则P在Q的可见 一侧。面的数据表需包含方程系数。 ④ Q在P之前 如果“P在Q之前”测试失败,应该进行“Q在P之前”的逆测试,即把所有Q的顶点代入P的方程 检验与代入视点得到的符号是否相同,如果测试通过应该把P,Q在深度优先级表中的顺序颠倒过 来。

第八章 三维消隐

第八章 三维消隐
2016/3/10 35
8.1.6 深度检验
深度检验的目的是为了判别线段与多边形沿 着视线方向的前后遮挡关系。在同一投影点上, 离视点近的对象会挡住离视点远的对象。为了减 少比较和计算的工作量,检验分两步进行:粗略 检验和精确检验。 1.粗略检验 粗略检验是将那些对某条线段不构成遮挡的 多边形排除,不再进行下面的精确检验。 设视点在z轴正向无穷远处。如果线段两端点 的z坐标均大于多边形每一顶点的z坐标,则线段 在该多边形之前,那么线段不可能被多边形遮挡。
2016/3/10 23
8.1.3 包含性检验
x=x0+u (u≥0) y=y0 求出射线与多边形投影(一般仍为多边 形)各边的交点个数: 1、当交点数为奇数时,点在多边形投影 内; 2、若交点数为偶数时,点在多边形投影 外。
2016/3/10 248Fra bibliotek1.3 包含性检验
包含性检验
2016/3/10
第八章 三维消隐
for(场景中的每一个物体) { 将该物体与场景中的其它物体进 行比较,确定其表面的可见部分; 显示该物体表面的可见部分; } 此类算法通常用于线框图的消隐。 如果场景中有k个物体,这类算法的 计算量正比于k2。
2016/3/10 11
第八章 三维消隐
2、图像空间消隐算法 以窗口内的每个像素为处理单元。确定在每 一个像素处,场景中的k个物体哪一个距离观察点 最近,从而用它的颜色来显示该像素。 算法描述如下: for(窗口中的每一个像素) { 确定距视点最近的物体,以该物体表面的颜 色来显示像素; } 如果场景中有k个物体,屏幕分辨率为m×n, 则这类算法的计算量为:mnk。
2016/3/10
17
8.1.2 平面多边形的外法矢量

消隐算法——精选推荐

消隐算法——精选推荐

消隐算法消隐算法⼀、消隐当我们观察空间任何⼀个不透明的物体时,只能看到该物体朝向我们的那些表⾯,其余的表⾯由于被物体所遮挡我们看不到。

若把可见的和不可见的线都画出来,对视觉会造成多义性。

会有后边两种情况要消除⼆义性,就必须在绘制时消除被遮挡的不可见的线或⾯,习惯上称作消除隐藏线和隐藏⾯,简称为消隐。

消隐不仅与消隐对象有关,还与观察者的位置有关。

⼆、消隐的分类1>按消隐对象分类线消隐:消隐对象是物体的边⾯消隐:消隐对象是物体上的⾯2>按消隐空间分类物体空间的消隐算法:以场景中的物体为处理单位。

假设场景中有k个物体,将其中⼀个物体与其余k-1个物体逐⼀⽐较,仅显⽰它可见表⾯已达到消隐的⽬的。

(此类算法通常⽤于线框图的消隐!)图像空间的消隐算法:以屏幕窗⼝内的每个像素为处理单元。

对屏幕上每个像素进⾏判断,决定哪个多边形在该像素可见(这类算法是消隐算法的主流)三、图像空间的消隐算法:1>Z-buffer算法2>扫描线算法3>Warnock消隐算法画家算法:去除隐藏⾯最简单的算法原理:若场景中有许多物体,就是先画远的物体,再画近的物体。

这样⼀来,近的物体⾃然就会盖住远的物体。

但实际情况并不理想,在三维场景中,⼀个物体可能有些部分远,有些部分近,所以不管⽤什么顺序画,都⽆法得到正确的结果,所以画家算法只能解决简单场景的消隐问题。

Z-buffer算法1、也称Z缓冲区算法和深度缓冲器算法(能跟踪屏幕上每个像素深度的算法),让计算机⽣成复杂图形成为可能。

2、该算法有帧缓冲器和深度缓冲器,对应两个数组:Intensity(x,y)-属性数组(帧缓冲器),存储图像空间每个可见像素的光强或颜⾊Depth(x,y)-深度数组(Z-buffer),存放图像空间每个可见像素的Z坐标。

Z-buffer保存的是经过投影变换后的z坐标,距离眼睛近的地⽅z坐标的分辨率⽐较⼤,远处的分辨率⼩。

3、Z-buffer算法思想(开⼀个和帧缓存⼀样⼤⼩的存储空间,利⽤空间上的牺牲换区算法上的简洁)(1)先将z缓冲器中各单元的初始值置为最⼩值(2)当要改变某个像素的颜⾊值时,⾸先检查当前多边形的深度值是否⼤于该像素原来的深度值(3)如果⼤于原来的z值,说明当前多边形更靠近观察点,⽤它的颜⾊替换像素原来的颜⾊。

三维消隐算法研究

三维消隐算法研究

三 维 消 隐 算 法 酮 究
夏小玲
( 东华 大学信息科学与技术学院, 上海 , 05 ) 2 01 0
摘要
就 目前计算机 图彤 学研究的重要 内客之一—— 消隐算法展 开分析讨论 。主要培 出了消隐算法 的定义厦相 关概惫 。

阐述 了 目前 已存 在 的几种 消隐 算 法厦 其 特 点 。井就 其 中的三 种 运用 较广 的消 隐算 法 : 面套 式 法 、 平 罗伯 嚣 算 法 、 滓葡 水 平 消
维普资讯
第 2卷 第 2 8 期 20 02年 4月
东华大学学报 c 自然科学版 )
J UR AL O ON HU NI R IY O N F D G A U VE ST
Vo .2 .No. 1 8 2 Ap .2 0 t 02
如图 1 所示是一个典型 的立方体线 画图, 通过各 条棱边表现一个三维物体 。如果仔 细观察 , 不难发现 这个立方体有两种解释 : 其一是观察点位于立方体 的 上方 . 即从立方体 的上方往下看 , 时候应该看到 的 这 是图 1b 的图形 ; () 其二是观察 点位 于立方体 的下方 ,
1 消隐算 法 的提 出
对于一个三维物体 , 当沿 着投 影视 线观察它时 , 由于物体中各种表面或其他物体 的遮挡 , 使某些线段 或面成为不可见 , 这些不可见 的线段或面就称为隐藏 线或隐藏面。为 了使计算机 显示 图像有 一定 的逼 真
感 , 确定 了观 察 点 及 观 察 方 向 后 , 先 要 解 决 的 问 在 首 题, 就是决 定 显 示 对 象 的 哪 些部 分 是可 见 的 , 些 部 哪
空 间点组成 的 空 间线 甚 至 空 间 面 都 可 以 由二 维 坐标

消隐

消隐

剔除依据:背面总是被前向面所遮挡,从而不可见.不会 由于后向面的遮挡,而使别的棱成为不可见的.因此计算 时,可以把这些后向面全部去掉,这并不影响消隐结果.
16
1. 消除自隐线,面
图中的JEAF,HCBG和 DEABC所在的面均为后 向面.其它为前向面.
F J n G H I A E D
17
B
C
2. 深度测试
12
9.1.2 线消隐
线段和一个多边形进行隐藏性判断时, 涉及到的运算包括 投影变换 平面上线段和多边形的求交 判断点是否在多边形内 空间中射线和平面求交. 如果将多面体的每条棱与每个多边形 都按上面的方法消除隐藏线,那么计 算量将非常大. 如何提高算法效率? 减少计算的对象. E D I A K B C
关键:如何对场景中的物体表面按深度(远近)排序,建立 深度优先级表? 根据每个多边形的Zmin对它们预排序; 深度重叠测试: Zmin(P)<Zmin(Q),若Zmax(P)<Zmin(Q),则P肯定不 能遮挡Q; 若Zmax(P)>Zmin(Q),则进一步检查; z Q P x z P Q x
27
所以,在进行消隐算法的设计时,应在计算速度和 图形细节之间进行权衡,任何一种算法都不能兼顾 两者.
7
9.1 消隐
9.1.1 概述 9.1.2 线消隐 9.1.3 提高消隐算法的效率 9.1.4 面消隐
8
9.1.2 线消隐
隐藏线的产生是因为在给定的观察方向下,某些棱(或棱的一部 分)被表面多边形遮挡,因此多面体隐藏线消除可以归结为一个 根本问题: 在给定的观察方向下,给定一条空间线段和一个多边形,判 断线段是否被多边形遮挡.如果遮挡,求出遮挡部分. 对造型的要求: 要求造型系统中有面的信息,最好有体的信息; 如果存在多个实体,它们互不相交; 求交的线段和面(多边形)在空间不相交; 采用B-Rep的多边形网格模型可以满足要求. 线 面 相 交

计算机图形学消隐算法

计算机图形学消隐算法
早期图形显示器是用线条表示图形,消隐主要是消隐线 问题。使用光栅显示器后,物体可用连续变化的色调来描 述,消隐算法的研究渐渐转向消隐面的问题。
隐藏线(面)的消除的两种基本算法
第一种是物空间算法。 • 它以三维场景中的物体对像作为处理单元的,在所
有的对像之间进行比较,除去完全不可见的的物体 和物体上不可见的部分。常用于线框表示立体的线 隐藏,也用于面隐藏。
• 特点是:算法精度低,只能达到屏幕精度为止,但速度往
往更高。 其算法是对每一个像素:
在和投影点到像素的连线相交的表面中找到离观察点最近 的表面
用该表面上交点处的颜色填充该像素。
for (窗口内的每一个像素) { 确定距视点最近的物体,以该物体表 面的颜色来显示像素}
算法复杂度
假设场景中有k个物体,平均每个物体表面 由h个多边形构成,显示区域中有m x n个像素, 则:

2
<=

<=

N . V时<0 不可见
、空间分割技术
依据:场景中的物体,它们的投影在投影平面上 是否有相互遮挡的重叠部分? 对于根本不存在相互遮挡关系的物体,应 避免这种不必要的测试。
9
象空间消隐算法: 这类算法对屏幕上的每个象素进行判断,以决有 m×n个象素点,每个物体表面上有h个多边形,则该 类消隐算法计算量正比于mnh。
则: k个物体的算法复杂度为: O(mnkh) 。
10
算法排序
各种消隐算法均采用一定形式的几何排序。通过排序 ,可搜查出位置上靠近观察者的几何元素,确定几何元 素之间在位置上的遮挡关系,解决消隐计算的主要问题 。各种算法都有各自的排序方法和排序次序。排序次序 影响算法的效率。
二、 消隐基本技术

(计算机图形学)建模与消隐

(计算机图形学)建模与消隐
6
9.1.1 物体的几何信息和拓扑信息
几何信息:描述几何元素空间位置的信息。 拓扑信息:描述几何元素之间相互连接关系的信息。 描述一个物体不仅需要几何信息的描述而且需要拓扑信息的描述。 因为只有几何信息的描述,在表示上存在不惟一性。图9-1所示的5个 顶点,其几何信息已经确定,如果拓扑信息不同,则可产生图9-2和93所示的两种不同图形。
图9-5所示为立方体线框模型。
优点:可以产生任意方向视图,视图间保持正确的投影关系,常用 于绘制三视图或斜轴测图等。
缺点:所有棱边全部绘制出来,容易产生二义性,如图9-6所示
12
图9-5立方体线框模型
图9-6线框模型二义性
13
2.
表面模型(物体的皮肤)
表面模型(surface model)是利用物体的外表面来构造模 型,就如同在线框模型上蒙上了一层外皮,使物体具有了一层
图9-14 读入立方体的顶点表
22
4.读入立方体的面表 在程序中定义ReadFace()函数读入物体的面表,如图9-15
void CTestView::ReadFace() { //面的顶点数和面的顶点索引号 F[0].SetNum(4);F[0].vI[0]=4;F[0].vI[1]=5;F[0].vI[2]=6;F[0].vI[3]=7;//前面 F[1].SetNum(4);F[1].vI[0]=0;F[1].vI[1]=3;F[1].vI[2]=2;F[1].vI[3]=1;//后面 F[2].SetNum(4);F[2].vI[0]=0;F[2].vI[1]=4;F[2].vI[2]=7;F[2].vI[3]=3;//左面 F[3].SetNum(4);F[3].vI[0]=1;F[3].vI[1]=2;F[3].vI[2]=6;F[3].vI[3]=5;//右面 F[4].SetNum(4);F[4].vI[0]=2;F[4].vI[1]=3;F[4].vI[2]=7;F[4].vI[3]=6;//顶面 F[5].SetNum(4);F[5].vI[0]=0;F[5].vI[1]=1;F[5].vI[2]=5;F[5].vI[3]=4;//底面 }

第10讲 图形消隐

第10讲 图形消隐

1 0 T2 0 0
21
10.3 画家算法

多边形的排序算法
在观察坐标系 uvn 中,观察方向是 n 轴的负方向,因而 n 坐 标大者距观察者更近。nmin(P)和 nmax(P) 分别为 P 各顶点 n 坐标的最小和最大值。[投影为正平行投影]
1)将场景中所有多边形存入一个线性表,记为L; 2)如果L中仅有一个多边形,算法结束;否则根据每个多边形的nmin 对它们预排序。不妨假定多边形P落在L的表首,即nmin(P) 为最小 再记 Q 为 L – {P} (表中其余多边形)中任意一个; 3)判别P, Q之间的关系,有如下二种: (1)对所有的Q,有nmax(P) < nmin (Q), 则多边形 P 的确距观察点 最远,它不可能遮挡别的多边形。令L = L – {P}, 返回第二步; (2)存在某一个多边形Q,使 nmax(P) > nmin (Q),需进一步判别:
27
10.4 Z缓冲器算法

{
算法伪码
帧缓存全置为背景色; 深度缓存全置为最小 Z 值; for(每一个多边形) { for(该多边形所覆盖的每个像素(x, y) ) { 计算该多边形在该像素的深度值 Z(x, y); if ( Z(x, y)大于Z缓存在(x, y)的值) { 把 Z(x, y)存入 Z 缓存中(x, y)处; 把多边形在(x, y)处的颜色值存入帧缓存的(x, y)处; } } }

关键

如何对场景中的物体按深度(远近)排序,建立深度优先 级表?
19
10.3 画家算法

世界坐标系
用户用来定义图形的坐标系,主要用于计算机图形场 景中所有图形对象的空间定位和定义。

观察坐标系

图形学实验五 消隐算法实例实现

图形学实验五 消隐算法实例实现

中国民航大学计算机与技术学院图形学实验报告课程名称:计算机图形学*名:***系:计算机科学与技术专业:计算机科学与技术年级:2010级学号:*********指导教师:***2012年12 月17 日实验项目:消隐算法实例实现一、实验目的与要求了解各种消隐算法,初步掌握消隐算法的实现。

了解真实感图形的基本原理,掌握真实感图形绘制的基本方法,为进一步掌握计算机图形学中图形处理技术奠定基础。

二、实验内容给定一个长方体8个顶点坐标,编程实现正投影变换和轴侧投影变换。

自给定长方体个顶点坐标,编程实现一点透视绘图。

修改上面程序,实现两点透视变换图形。

给定一个三维几何体坐标,实现它的轴侧变换和一点透视变换。

三、重要算法分析Z-Buffer算法的基本思想是:将Z缓冲器中各单元的初始值设为-1。

当要改变某像素的颜色值时,首先检查当前多边形的深度值是否大于该像素原来的深度值(保存在该像素所对应的Z缓冲器的单元中),如果大于,说明当前多边形更靠近观察点,用它的颜色替换像素原来的颜色;否则,说明在当前像素处,当前多边形被前面所绘制的多边形遮挡了,是不可见的,像素的颜色值不改变。

Z-Buffer算法流程如下:帧缓冲区置背景色;Z缓冲区置最小值(离观察点最远);for(场景中的每个多边形){扫描转换该多边形;for(多边形所覆盖的每一像素点(x,y)){计算多边形在该像素点的深度值z(x,y);if(z(x,y)>Z-buf中对应此像素点(x,y)的z值){把多边形在(x,y)处的深度值z(x,y)存入Z-buf中(x,y)处;把多边形在(x,y)处的亮度值存入F-buf中的(x,y)处;}}}四、程序运行截图程序运行结果分别如以下各图所示:其中图1至图5是按键盘中“上”箭头时凸多面体的变化过程:图1图2图3 图4图5图6图6至图9是按键盘中“下”箭头时凸多面体的变化过程:图7图8图9 图10五、总结与调试经验最后一次实验,竟有些窃喜,额,似乎不太认真~~~不过好歹还是调试出来了~~~不敢说收获,但是很开心!!希望考试取得好成绩!!加油!!GO GO~。

一种3D图形背面消隐算法及其硬件加速实现

一种3D图形背面消隐算法及其硬件加速实现

一种3D图形背面消隐算法及其硬件加速实现
随着科技的不断发展,3D图形渲染技术也在不断进步,其中背面消隐算法是其中一个重要的技术。

在3D图像中,如果不进行背面消隐处理,会造成图像混乱,影响视觉效果。

因此,背面消隐算法是实现高质量3D图像的重要一环。

一种常用的背面消隐算法是Z-Buffer算法,它的实现原理是将所有像素点按照深度值进行排序,把深度值最小的像素点输出到屏幕上。

这个算法的优点是简单易懂,但缺点是需要大量的内存来存储深度缓存区,会消耗大量的计算资源。

为了提高背面消隐算法的效率,硬件加速实现是一种有效的途径。

硬件加速可以通过专门的加速卡来实现Z-Buffer算法的处理,大大提高了图像处理的速度。

例如,NVIDIA的GeForce专业显卡中就内置了Z-Buffer处理器,可以实现高性能的背面消隐算法。

另一个硬件加速实现的途径是在图形处理器(GPU)中实现背面消隐算法。

在GPU中,背面消隐算法可以通过着色器来实现。

在顶点着色器中,将顶点的坐标与视图矩阵相乘,得到其在相机坐标系中的坐标;在片元着色器中,将片元的深度值与深度缓存区中的值进行比较,找出最前面的像素点输出到屏幕上。

这种方法的优点是可以获得更高的性能,缺点是需要GPU的支持。

总之,背面消隐算法是实现高质量3D图像的必需技术之一。

通过硬件加速的方式,可以大大提高算法的处理速度,实现更好的视觉效果。

消隐

消隐

深度缓存算法 ( Z—Buffer算法)
Z—Buffer ---- 用于存放与屏幕上像素点对应的物体上点的深度值。
y
投影面
z
视线方向
视点位置
x
屏幕像素
F — Buffer
Z—Buffer
Z-buffer算法的步骤如下:
⑴ 初始化ZB和CB,使得ZB(i, j)=Zmax,CB(i, j)=背景色。其中, i=1, 2, …, m,j=1, 2, …, n。 ⑵ 对多边形,计算它在点(i, j)处的深度值zi, j。 ⑶ 若zijZB(i, j),则ZB(i, j)=zij,CB(i, j)=多边形的颜色。 ⑷ 对每个多边形重复⑵、⑶两步。最后,在CB中存放的就是 消隐后的图形。
背面剔除算法
• 背面剔除算法
法向向量N
<90°
cos N V
视线向量V
可见
>90°
法向向量N
<90°
可见
不可见
法向向量N
8.1 消隐基础
8.1.1 消隐的分类
• 线消隐 (Hidden-line)-景物空间消隐 对象:线框模型
•面消隐 (Hidden-surface)-图像空间消隐
对象:填色图
问题: ① 对于线画图形会出现多义性,要增强图形的真实感必须进 行消隐处理。 ②对于光栅扫描着色的面图形则会导致图形错误。
基本概念
二.消隐涉及的算法:
• 排序 • 连贯性
是指所考察的物体或画面的性质在局部区域内保持不变的一种 倾向。
例如:
棱边的连贯性是指:棱边的可见性在它与其他棱边相交时才发生
变换;
for (场景中的每一个物体)
{ 将该物体与场景中的其它物体进行比较,确定其表面的 可见部分;

由表面模型表达的三维形体的一种消隐算法

由表面模型表达的三维形体的一种消隐算法

由表面模型表达的三维形体的一种消隐算法
朱仁芝;刘磊;江涌;陶涛;卢继军
【期刊名称】《计算机工程与设计》
【年(卷),期】1999(20)1
【摘要】提出基于知识规则的隐线消除新思路:依据该思路和8条结论,设计和实现了一种直接对表面模型进行的消隐算法。

该算法对所需处理物体的数目、形状和位置均无限制;并通过考虑空间点和线的可视性的关系,使效率在一般情况下较传统方法提高了3倍。

【总页数】5页(P56-60)
【关键词】表面模型;几何造型;消隐算法;三维形体;CAD;CAM
【作者】朱仁芝;刘磊;江涌;陶涛;卢继军
【作者单位】中国科技大学精密机械与精密仪器系
【正文语种】中文
【中图分类】TP391.7
【相关文献】
1.图形、消隐的一种实现--深度消隐算法的一种实现 [J], 张世海;梁晓梅
2.一种三维有限元网格的快速消隐算法 [J], 杨小辉;方宗德;杨青
3.基于三维消隐算法的装配视图消隐方法研究 [J], 薛文彦;李言;杨征瑞
4.三维形体消隐和相贯线的一种新算法 [J], 朱仁芝;太美花
5.一种面向三维地质剖面的形体表面重构算法 [J], 黄继先;毛先成;邓浩
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
y'=cosβ×y-sinβ×x';
z'=sinα×x+cosα×z;
x*=cosβ×x'+sinβ×y;
y*=sinγ×z'+cosγ×y';
z*=cosγ×z'-sinγ×y';
----其中,x'、y'和z'是运算中间变量。
----2.平移变换
----三维平移变换公式如下
Ax+By+Cz+D<0,则观察点(x,y,z)位于平面正面一侧,平面是可见面,应被画出。
----通过对物体进行适当旋转和平移后,可将物体变换到以观察点为原点得观察坐标系中,如果在观察坐标系中求得了平面得方程Ax+By+Cz+D=0,将观察点坐标(0,0,0)代入上面得判断准则,则可得出如下得简单判据:
----基于B-rep模型(BoundaryRepresentativeModel)和CSG模型(ConstructiveSolidGeometryModel)的三维造型消隐算法可以分为两大类,即物体空间法和图象空间法。物体空间法利用三维环境信息或三维视图(主要使用三维观察坐标,有时也使用三维世界坐标)来消除隐藏面,即根据空间中各物体三维模型的几何关系,来判断哪些表面可见,哪些表面不可见。图象空间法基于物体三维模型的二维显示图形(使用二维显示坐标)来确定物体或表面与观察点的远近关系,从而判断哪些表面遮挡了其它表面。
----本文将分析当前在CAD三维图形处理中最主要的12中消隐算法,其中8种属于物体空间法,4种属于图象空间法。在实际处理中,由于物体表面形态的复杂性和提高消隐处理的效率,通常都是结合使用多种消隐算法来完成物体的消隐处理的。
----一、物体空间法
----物体空间法是在三维坐标系中,通过分析物体模型间的几何关系,如物体的几何位置、与观察点的相对位置等,来进行隐藏面判断的消隐算法。世界坐标系是描述物体的原始坐标系,物体的世界坐标描述了物体的基本形状。为了更好地观察和描述物体,经常需要对其世界坐标进行平移和旋转,而得到物体的观察坐标。物体的观察坐标能得到描述物体的更好视角,所以物体空间法通常都是在观察坐标系中进行的。观察坐标系的原点一般即是观察点。
C=x1(y2-y3)+x2(y3-y1)+x3(y1-y2);
D=-x1(y2z3-y3z2)-x2(y3z1-y1z3)-x3(y1z2-y2z1);
----设观察点坐标为(x,y,z),如果
Ax+By+Cz+D=0,则观察点(x,y,z)位于平面上;
Ax+By+Cz+D>0,则观察点(x,y,z)位于平面背面一侧,平面不可见,应被隐藏;
----根据平面法向量的定义可知,在平面上按逆时针方向选取P1(x1,y1,z1)、P2(x2,y2,z2)、P3(x3,y3,z3)三点,则
----(公式略)
----其中:
----(公式略)
----经过投影变化后,视向量与Z轴是平行的,因此向量和之间的夹角θ即为Z轴与向量的夹角,所以
----设物体顶点的原始坐标为(x,y,z),变化后的观察坐标为(x*,y*,z*),则
----1.旋转变换
物体绕Y轴旋转的角度α的三维旋转变换公式为
[x*y*z*1]=[xyz][cosαsinα00
-sinαcosα00
0010
0001]
物体绕Z轴旋转的角度β的三维旋转变换公式为
D>0,则平面不可见,应被隐藏;
D<0,则平面是可见面,应被画出。
----平面公式法算法简便,是在实际中使用最频繁得消隐算法。但它只能用于凸面体得消隐,而不适用于凹面体消隐。
----2.背面消除法
----背面消除法是直接运用背面消隐原理的消隐算法。在数学上,物体表面的法向量即是表面的朝向,因此,法向量方向背向观察点的物体表面都应被消隐。
Ax+By+Cz+D=0;
----其中A、B、C、D为决定平面得常数。如果(x1,y1,z1)、(x2,y2,z2)、(x3,y3,z3)为平面上已知得三点坐标,则可求得A、B、C、D如下:
{A=y1(x2-x3)+y2(z3-z1)+y3(z1-z2);
B=z1(x2-x3)+z2(x3-x1)+z3(x1-x2);
----5.隔离平面法
----隔离平面法主要用于多个物体之间的消隐处理,其基础是平面公式法。其基本原理是,在需要进行消隐处理的两个物体之间建立一个虚拟平面,并根据平面公式法判断出两个物体分别位于该平面的哪一侧,以及该平面的哪一侧朝向观察点,则可以推论得到位于平面朝向观察点一侧的物体离观察点较近,将遮挡位于平面背向观察点一侧的物体。即位于平面背向观察点一侧的物体应被首先画出,且应进行消隐。
----深度排序法需要用到深度信息和绘图顺序,通常用于模型数据中包含深度信息和绘图顺序的物体造型。
----7.光线跟踪法
----光线跟踪法的基本原理是,人能看见物体是因为物体能反射光,因此,跟踪从光源发出的光线,光线投射到物体上,再从物体反射到观察点,在光线轨迹中离观察点最近的物体表面将遮挡其它物体表面。
[x*y*z*1]=[xyz1][1000
0100
0010
ΔxΔyΔz1]
----展开后即得
[x*=x+Δx
y*=y+Δy
z*=z+Δz
----其中Δx、Δy、Δz分别为物体沿X、Y、Z轴的平移量。
----二)消隐算法
----常用的物体空间消隐算法包括平面公式法、背面消除法、径向预排序法、径向排序法、隔离平面法、深度排序法、光线跟踪法和分解法。其中前四种算法最常用,它们的基础都是背面消隐原理。所谓背面消隐原理,即是相对观察点来说朝向后面的物体表面是不可见的,应被隐藏。
----设θ为向量和之间的夹角,视向量的长度为线段OP的长度|OP|,则根据向量点积的定义可知=|OP|||cosθ。如果>0,则cosθ>0(即>θ>0);反之,如果,则cosθ0(即θ)。
----因此,背面消除法的判据简化为:
cosθ0,则物体表面不可见,应被消隐;
cosθ>0,则物体表面可见,应被画出。
两个区域重叠判断
点与区域的包含测试
面的朝向测试
----S为消隐策略,即规定P中各基本操作过程被采用的先后次序。
----因此,设计消隐算法时应考虑上述五个要素及它们之间的相互关系。
----在计算机图形学中,为了简化算法,一般是利用多面体去逼近曲面体,因此多面体的消隐算法是曲面体的基础。本文的消隐算法讨论主要是基于多面体的消隐问题,对曲面体进行多次多面体近似,对每一多面体运用多面体消隐算法就能实现曲面体的消隐。
HA=(I,O,D,P,S)
----其中,I为要进行消隐处理的三维对象的集合;
----O为经过消隐处理的二维对象的集合;
----D为进行消隐处理时所采用的数据结构;
----P为进行消隐处理所需基本操作过程的集合,主要包括
分类、形元素间的求交计算
----物体空间法消隐包括两个基本步骤,即三维坐标变换和选取适当的隐藏面判断算法。
----一)三维坐标变换
----选择合适的观察坐标系不但可以更好地描述物体,而且可以大大简化和降低消隐算法的运算。因此,利用物体空间法进行消隐的第一步往往是将物体所处的坐标系转换为适当的观察坐标系。这需要对物体进行三维旋转和平移变换。
三维物体消隐算法
----造型(modeling)是计算机三维图形处理的基础,而消除隐藏面(hiddensurface,简称消隐)则是三维造型的关键。所谓消隐就是不画出即隐藏从当前观察点看不见的三维模型表面。消隐算法的核心就是判断三维模型的表面是否可见。
----抽象来看,一种消隐算法可以看作一个五元组,即
----光线跟踪法需要分析物体表面的每一点的光反射状态,因此需要的内存空间较大,运算速度也较慢。但这种方法可同时生成物体的光照模型,产生的消隐效果和真实感都很好。
----8.分解法
----分解法是对CSG模型的一种消隐算法,首先将复杂物体分解为一系列的立方体,离观察点近的立方体将遮挡远的立方体,从而实现消隐。分解法算法复杂,需要的内存空间大,速度也满,近仅用于一些特殊的场合。
----径向预排序法可以对任意形状的物体进行消隐处理。但需要预先知道观察角度,并根据角位置对物体的画图顺序预先排序。而且构造模型的编码受到这种排序的限制,模型不能进行旋转变换。
----4.径向排序法
----径向排序法是对径向预排序法的改进算法,使得构造模型的编码能根据观察角度的变化,来自动调整物体或表面的远近顺序即画图顺序,以实现对模型的旋转变换,以便能从不同的角度来观察物体。算法需要检测旋转变换的角度,并随角度的变化而调整物体或表面的远近顺序。
图2径向预排序法示例
----径向预排序法消隐的要点是先对物体及物体的表面进行由远及近的排序,对具有相同角位置的物体或表面,先画较远的,后画较近的,这样如果较近的物体或表面挡住了较远的物体或表面,则被遮挡的部分被覆盖而实现消隐。但对具有不同角位置的物体或表面,先画哪一个可根据需要来决定。如果存在凹面物体的消隐,一般应先画物体中心部分,再画物体的两侧,以正确地表现互相重叠的凹面模型。
----二、图象空间法
----图象空间法基于物体三维模型的二维显示图形来确定物体或表面上的每一点与观察点的远近关系,从而判断哪些表面遮挡了其它表面。为了获得三维物体的二维显示图形,在对物体进行旋转和平移变化后,还需对物体进行透视投影变换。
相关文档
最新文档