Java3D中运动物体间碰撞检测的研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.这些算法

不仅可以检测凸多面体.还可以检测凹多面体.对凹多面体不

需要做特殊的处理.处理凹多面体和处理凸多面体方法一样.

即包围盒法检测的对象不区分被检测物体是凸的还是凹的.采

相关文档
最新文档