李秀莉,张树仁
(长春理工大学,长春130022)
在虚拟装配环境中,碰撞检测用于判定一对或多对物体在给定时间域内的同一时刻是否占有相同区域。它是虚拟装配的关键技术之一。在虚拟的环境中零部件的装配必须能够针对碰撞检测的结果如实、快速做出合理的响应,反映真实动态效果[1]。目前,机电系统越来越复杂,由三维几何模型构成的虚拟场景规模越来越大,对虚拟装配实时性和真实性要求越来越高,故快速碰撞检测技术成为研究热点。
碰撞检测方法总体上可分为两类:静态干涉检测算法和动态碰撞检测算法,动态碰撞检测算法又分为离散碰撞检测算法和连续碰撞检测算法。其基本原理是基于图形和基于图像的碰撞检测。这两类算法的主要区别在于是利用物体三维几何特性进行求交计算,还是利用物体二维投影的图像及深度信息来进行相交分析[2]。其中在基于图形的碰撞检测上,研究人员已经做了大量的工作,形成了层次包围盒法和空间分割法等成熟算法[3-5]。
在三维环境中寻找碰撞是非常苛刻的任务。寻找碰撞时间占总运行时间的50%。对于复杂机电系统,三维虚拟原型是非常复杂的,含有成千上万的元素。为此,本文提出了一种能够快速、准确检测碰撞的交迭轴包围盒碰撞检测算法。
交迭轴包围盒是包围盒碰撞检测方法的扩展和延伸,该方法中将一个三维的模型定义为一种表面的集合,每个表面又被单独描绘成一个三角形的合集,采用每个面的轴对齐包围盒和重叠轴对齐,即交迭轴包围盒的方法,筛选出相交的表面。表面碰撞检测算法的体系结构如图1所示。
图1 表面碰撞检测算法体系结构Fig.1 Surface collision detection architecture for solving the narrow phase
两个实体A和B,定义MAB为实体B与实体A的交迭处的变换矩阵。
图2中每个实体被定义为AABB,判断两个实体A和B是否相交,如果这对轴对齐包围盒不重叠,则A与B不相交;如果相应的轴对齐包围盒重叠,则A和B是两个碰撞的候选对象。在这种情况下,重叠轴对齐包围盒OAABB(A,B)被确定,如图2所示。
图2 二维中OAABB概念Fig.2 The OAABB concept shown in 2D
为了提高表面碰撞检测算法的性能和检测速度,使用每个面的轴对齐包围盒和重叠轴对齐包围盒,即交迭轴包围盒方法,筛选碰撞表面,如图3所示。
图3 交迭轴包围盒碰撞表面筛选Fig.3 The surface filter process shown
考虑OAABB(A,B)由两个相交候选对象,与AABBs表面不相交的OAABB被筛选掉。对每个对象的剩余m表面,分别判定与表面AABBs是否相交。这一步复杂度为O(m2)。实施这一步骤程序结构如下:
确定了可能碰撞的表面,需要从这一对表面找出需要检查的每一对多边形碰撞。两个多边形相交是一个费时的运算操作。应该放弃AABBS不能重叠相交的多边形,在这一点上,该算法采用重迭轴对齐包围盒,如图4所示。
图4 重迭轴对齐包围盒筛选过程Fig.4 Polygon filtering using AABBs and OAABB
当且仅当AABBS与OAABBA相交,两个多边形才可能碰撞。如果没有相交,那么相应的多边形过滤出来。循环的最后,筛选出相交的多边形,即得到了最终的碰撞检测结果,实施这一步骤程序结构如下:
对如图5所示的结构,采用传统包围盒算法和交迭轴包围盒算法进行比较分析。
从图5所示的信息化模型中提取表面信息和细化相互独立的表面,将独立的表面和与它们相对应的多边形数据存储在一个结构环境中。
图5 典型实例Fig.5 The key case study scenario
表1是在执行实例的装配过程中,通过程序反馈给出的各项监测数据。表1表明交迭轴包围盒算法比传统包围盒算法更快速,相差一个数量级。其根本原因在于交迭轴包围盒算法比传统包围盒算法减少轴对齐包围盒和三角形测试的数目。
表1 交迭轴包围盒算法与传统包围盒算法结果对比Tab.1 Results for the surface collision detection algorithm supported by the OAABBs compared to the“Brute Force” approach
交迭轴包围盒算法是一种快速碰撞检测算法,确定在虚拟装配环境中三维装配模型表面的精确碰撞。该方法OAABBs过滤掉那些不会相交的元素,具有高度的并行性、快捷性,提高了虚拟装配的仿真性能。尤其对复杂机电系统而言,提高其仿真运行的速度,具有非常重要的意义。
[1]潘振宽,崔树娟.基于层次包围盒的碰撞检测方法[J].青岛大学学报,2005,18(1):71-76.
[2]邹益胜,丁国富.实时碰撞检测算法综述[J].计算机应用研究,2008,25(1):8-12.
[3]王志强,洪嘉振,杨辉.碰撞检测问题研究综述[J].软件学报,1999,10(5):545-551.
[4]陈学文,丑武胜,刘静华,等.基于包围盒的碰撞检测算法研究[J].计算机工程与应用,2005,41(5):46-50.
[5]李芙玲,张瑾.碰撞检测技术研究[J].华北科技学院学报,2006,2(1):71-73.