华佗养生网
您的当前位置:首页一种应用于离散时间碰撞检测的加速算法

一种应用于离散时间碰撞检测的加速算法

来源:华佗养生网
第14卷第3期 2Ol5年3月 软件导刊 Software Guide Vo1.14No.3 Mar.2015 一种应用于离散时间碰撞检测的加速算法 赵静 ,叶军涛 (1.国家知识产权局专利局专利审查协作广东中心,广东广州510535;2.中国科学院自动化研究所,北京100190) 摘 要:在布料仿真中,离散时间碰撞检测(Discrete Collision Detection,DCD)中的邻接三角形对与非邻接三角形对 之间的相交检测在实际执行中存在大量的重复边一面(Edge-Face,E_F)检测。通过引入“边一面代表三角形”的概念, 可以剔除非邻接对之间约5O 的重复E-F检测;通过定义“边一面孤立集”,可以建立起邻接对之间需要实际执行的 边一面检测。在网格拓扑结构不变的情形下,上述过程可以在数据的预处理阶段提前完成,从而实现DCD加速。 关键词:布料仿真;碰撞检测;边一面代表三角形;边一面孤立集;加速算法 DOI:10.11907/rjdk.143942 中图分类号:TP312 文献标识码:A 文章编号:1672-7800(2015)003—0049—03 0 引言 在当前布料仿真过程中,模型之间的碰撞检测方法可 以分为连续时间碰撞检测El-z](Continuous Collision Detec- tion,CCD)和离散时间碰撞检测Is-4](Discrete Collision De— tection,DCD)两种。在以基本单元为三角形的多边形网 格模拟布料的场景中,CCD归结为三角形对(Face—Face, F_F)之间的6次顶点一面(Vertex-Face,V-F)检测和9次 边一边(Edge-Edge,E—E)检测;DCD的F-F检测可归结为 状态;而非邻接对可以同时出现在不同网格的三角形之间 和相同网格的不相邻的三角形之间。 Moller_g 提出了一种快速判断两个三角形是否相交 的方法,Tropp等_1。。也给出了一种执行速度更快的算法, 这两种算法都不需要进行特征元之间的相交检测,能够快 速判断两个三角形是否相交。然而,布料仿真中的碰撞检 测不仅要判断出两个三角形是否相交,还需要确定交点位 置 ,因此布料仿真中的碰撞检测必须通过执行基本的特 征元检测来实现,即进行E—F检测。 在当前算法中,采用BVH技术可以剔除明显不会发 生碰撞的非邻接对 ,因此可以实现非邻接对之间的加 速,从而建立起“潜在碰撞”的非邻接对,进入特征元检测 阶段;而对于邻接对,BVH技术无法使用,为保证不遗漏, 所有邻接对均需要进入特征元检测检测阶段。在特征元 检测阶段,每一次F-F检测均需要执行6次E—F检测。 6次边一面(Edge—Face,E—F)检测。 碰撞检测加速算法大多应用于碰撞检测前的碰撞剔 除检测 ,主要采用层次包围体 (Bounding Volume Hi- erarchy,BVH)技术来剔除明显不会发生的F-F检测,从 而降低算法的时间复杂度。针对CCD过程,Tang_7 和 Curtis等 提出了相应的加速算法,用于提高CCD过程 的重复特征元检测效率。 DCD过程的时间复杂度虽然相比CCD较低,但现有 DCD算法在F-F检测阶段同样存在大量的重复特征元检 2 DCD特征元检测阶段存在的问题 虽然在一次的F-F检测当中执行所有6次E-F 检测都是有意义的,但当在两个由许多三角形组成的网格 之间执行DCD时,如果每次F—F检测检测都执行6次E— F检测,就会出现重复或者无意义的检测。前者会同时出 现在非邻接对和邻接对的F—F检测过程中,而后者则是邻 接对的F—F检测过程的特殊现象。 2.1 非邻接对中重复特征元检测的出现 测,如何剔除这些重复检测对DCD加速十分重要。 1 DCD研究现状 DCD中的F-F检测是判断某一时刻静止的两个三角 形是否相交。如果两个三角形相邻,即存在共享的边或者 顶点,则称之为邻接对;否则,称为非邻接对。DCD过程 图1描述了非邻接对之间产生重复特征元检测的原 包括邻接对和非邻接对之间的相交检测。邻接对只会出 现在同一网格中的相邻三角形之间,即网格出现了自相交 基金项目:国家自然科学基金项目(61070105) 因。边e和E分别由三角形t。、t 和 、T 共享。t。同时 和丁0、T1相交,丁1同时和t。、t 相交。在对非邻接对(t。, 作者简介:赵静(1985一),男,湖北黄冈人,硕士,国家知识产权局专利局专利审查协作广东中心专利审查员,研究方向为计算机图形 学与应用;叶军涛(1972一),男,博士,中国科学院自动化研究所副研究员、硕士生导师,研究方向为计算机图形学、虚拟现 实技术、科学计算。 

因篇幅问题不能全部显示,请点此查看更多更全内容