Java3D中运动物体间碰撞检测的研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java 3D中运动物体间碰撞检测的研究
Java3D中运动物体间碰撞检测的研究
郭景峰闰立华王建朝
(燕山大学信息科学与工程学院,河北秦皇岛066004)
E—mail:snowbird_
***********
摘要碰撞检测是虚拟制造中重要的课题之一,文章针对Java3D对三维物体碰撞检测支持的局限性,通过扩展Java
3D的功能.构造了一种碰撞检测系统.采用了二叉树层次球模型来表示实体,对运动物体间进行碰撞检测,满足了可靠
性和时间的连续性.较好地适应复杂环境的碰撞检测的需求:
关键词碰撞检测Java3D虚拟制造二叉树层次球模型
文章编号1002—8331一(2006)27—0023—03文献标识码A中图分类号TP311.13 ResearchofCollisionDetectionbetweenObjectsinJava3D
GUOJing—fengY ANLi-huaW ANGJian-chao (DepartmentofInformationScienceandEngineering,Y anshanUniversity,Qinhuangdao,H ebei066004)
Abstract:Collisiondetectionisoneoftheimportanttopicsinvirtualmanufacturing.Thispape raimsatovercomingthe
limitationofJava3Dinthesupportofcollisiondetectiononthree—dimensionalobjectsandthroughexpandingthe
functionofJava3D,buildinganewcollisiondetectionsystemwhichbyadoptingBSPhierarc hicalspheremodelto represententryandexaminecollisionbetweenobjects,satisfingthecredibilityandtimeconti nuity,andbettermeetingthe demandsofcollisiondetectionincomplexenvironment.
Keywords:collisiondetection,Java3D,virtualmanufacturing,BSP
1引言
随着计算机软硬件技术的不断发展.虚拟制造已成为计算
机科学的一个重要研究领域.碰撞检测是虚拟制造中必不可少的一部分,例如在数控加工过程仿真中对于刀具与工作台,夹
具的碰撞检测可以验证NC代码的正确性.避免在实际加工中造成零件的报废.设备的损坏.在大部分的实际应用中不仅要
求实时碰撞检测.而且还要与用户进行交互.这就需要实时进行碰撞检测.并且要实时绘制来表现碰撞后的变化.这样碰撞检测处理的算法复杂度就会大大提高.因此碰撞检测系统不仅需要准确地判断物体是否发生碰撞,而且要具有很高的实时性. Java3D是Java语言在三维领域的扩展,它包含一系列标
准的类库,编程者可方便地利用该类库对三维形体的造型,渲染,旋转平移及交互等方面进行控制.Java3D本身提供的两
个类WakeupOnCollisionEntry和WakeuD0nCollisi0nExit具有碰撞检测功能.但由于虚拟制造环境的复杂性.其精度和准确性
是远远不够的,这就需要我们对它进行扩展.本文提出了一种
用于Java3D的碰撞检测系统的结构.使其能够在具有大量的
运动物体的环境中进行较为准确的碰撞检测.满足实时性和精度的要求
2三维空间物体的碰撞检测
2.1碰撞检测的定义
假设三维空间中有Ⅳ个运动模型.随着时间改变位置和
姿态.一般地讲碰撞检测就是判断模型之同是否发生了碰撞.
从计算几何的角度可以这样理解碰撞检测:设三维几何空间为R.用三维几何坐标系统表示.在中用表示模型
所占的集合.显然是的子集.那么随着时间的变化
构成了一个四维空间坐标系统Cw.模型沿着一定轨迹运动就
形成了Cw的子集表示为C0.碰撞检测就是判断C.nC,n…n
C≠中是否成立.
这种定义在理论上给出碰撞检测的精确方法.但是它的实
现代价非常高.其瓶颈问题就是四维集合Co的计算.这种计算
的复杂度在实际中往往是不能接受的.所以必须用一些折中的
方法,即牺牲计算的精度来提高计算的速度.
2.2碰撞检测算法概述
现有的算法大致可以分为两类:一类是针对几何形状规则
且简单空间物体的基于几何元素特征对的检测算法.如Lin—
Canny最近特征算法Ilj与基于层次数据结构的层次算法ILin—
Canny最近特征算法是基于特征(点,线,面)的增量算法.它从
上次得到的最近特征对开始,沿着多面体的表面移动直到找
到最近特征.显然这种算法依赖于相邻两次最近特征的距离.
即模型的相关性.随着物体的复杂程度增高,物体的点,边,面
的数目的增加,其对应的碰撞检测数目也就相应地增加.因而
计算时间加长.效率降低.基于层次数据结构的层次算法是建
立在层次数据结构基础上的,是对物体本身按照一定的几何形
体(经典的是包围盒)逐步细分成层次结构层次结构的表达有
二叉树(BSP)和八叉树(OSP).根据划分包围盒的方向不同分
为:沿坐标轴的包围盒AABB(Axis—AlignedBoundingBoxes),
包围球(Sphere),沿任意方向的包围盒OBB(OrientedBounding
Box),固定方向包围盒FDH(FixedDirectionsHulls).还有具有
作者简介:郭景峰(1953一),男,教授,硕士生导师,主要研究方向:移动对象数据库,虚拟仿真.闫立华(1977一),男,硕士研究生,主要研究方向:移
动对象数据库,虚拟仿真.王建朝,男,硕士研究生,主要研究方向:移动对象数据库. 计算机工程与应用2006.2723
广泛意思的称为离散方向的多胞体K—DOP包围盒f3J.这些算法
不仅可以检测凸多面体.还可以检测凹多面体.对凹多面体不
需要做特殊的处理.处理凹多面体和处理凸多面体方法一样.
即包围盒法检测的对象不区分被检测物体是凸的还是凹的.采