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