- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
表面分割算法
[小组成员]
严枭 2013310584 计研 133 班
杨涛 2013310587 计研 133 班
俞承驰 2013310xxx 计研 133 班
[问题背景]
在科研工作中,特别是在几何处理等领域,三维模型会经常接触到,事实上,
对三维模型的处理也是计算几何中的一个重要方向。对三维模型的处理,按照 目
的可以大致分为两类,其一是得到更加 “符合要求”的模型,这包括对模型进行
切割 、对面片进行 正规化操作等等;其二则是得到新的模型 ,其中 的
Constructive Solid Geometry(CSG)就是利用多个三维模型进行布尔操作从而
得到所需要的复杂模型。在实际的科研中,我们遇到了对模型进行切边操作的问
题,为了解决这一问题,我们提出了自己的表面分割算法,并在实际中得到很好
的应用,求得了满意的效果。
[问题提出]
三维模型的复杂是难以想象的,由于精力和时间的限制,我们缩小了研究的
方向,将问题定位于通过一个封闭的模型 (water tight)来对另一个模型进行
分割。这里的分割本质上属于模型的布尔操作,但我们的目的并不在于获得更加
复杂的组合模型,而是通过分割模型将被分割模型切割为独立的几个部分。
传统的面片分割可以通过 Marching Cubes 算法实现,但是如图 1 所示的那
样,如此得到的表面存在比较严重的锯齿状边缘,我们希望能够实现较为平滑的
切割。
图 1
另外,我们强调了只针对封闭模型(water tight)进行处理,其中的原因在
于,如果模型不封闭,可能会存在被分割模型无法被分割开的缘故,如图2 所示,
可以显见,红色的模型没有被完全的切割。
图2
[算法概括]
我们的主要算法流程可以分为以下几步:
1、碰撞检测;
2、确定交点;
3、连接交线;
4、三角划分;
5、Flood Fill 分解模型。
其中碰撞检测顾名思义,主要为了检测两个输入模型(分割模型和被分割型)
彼此之间相交的面片对,确定交点则是为了确定得到的面片对相交的位置,得到
相交点的位置之后,可以把这些点连接成线,实际上这些连线也就实现了对被分
割模型表面的分割,但是这样简单连线之后,会出现连线所在面片不再规整,为
此,我们需要进行下一步的三角划分操作,以重新三角化面片,最后则采用简单
的Flood Fill 方向,确定各个分割开的部分。以上简单陈述了一下基本过程,
下面将分别进行详细介绍。
[碰撞检测]
碰撞检测是计算机学科特别是图形学领域中的一个常用概念,针对三维模型
的面片,存在不少碰撞检测的方法。主要的算法包括蛮力的对所有面片两两检测、
AABB、OBB 以及相对应的 AABB 树和 OBB 树,其中的蛮力算法虽然实现简单,但
是显然在效率上不能令人满意,所以果断放弃。下面首先简单介绍一下所谓的
AABB、OBB 以及相应的树。
所谓的 AABB 实际上就是对模型中的每一个面片设置一个与 x,y,z 坐标都相
互平行的包围盒,通过检测包围盒是否相交来确定相对应的面片是否相交。其包
围盒的基本形式如图 3 所示。
图 3
可以看出,如果单纯的采用 AABB,与蛮力算法相比并没有什么本质上的提升,
但是其优势在于可以优化,为此,出现了AABB 树的概念。所谓的AABB 树就是将
每个面片得到的 AABB 包围盒结合起来,从上到下构建出一棵树。其一般的结构
形式如图 4 所示。
图4
其中的红色包围盒和绿色包围盒分别是对应的三角面片的AABB,而黑色的框
则是包含红色框和绿色框在内的一个更大的包围盒,可以认为是一个父包围盒,
其树状结构如图 4 右边所示。如此这般,便可将整个模型的 AABB 包围盒构成一
棵完整的树。两个模型分别对应于一棵独立的树,通过两棵 AABB 树相交的情况
进行判断,非相交的 AABB 树节点就不用再继续递归的判断下去了,从而实现了
效率的大提升。
与 AABB 模型中的“正规”包围盒不同,OBB 模型提出了一种有方向的包围盒,
其中的 “O”就是“oriented”的缩写。OBB 的核心思路在于寻找沿着面片方向的
的包围盒,从而使得包围盒
文档评论(0)