表面分割算法.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档