基于SAABB算法的VAEAS的探究

2013-07-05 03:37王家骐于海霞曲卫平
淮阴工学院学报 2013年1期
关键词:碰撞检测模块算法

王家骐,于海霞,曲卫平,吴 焱

(1.安徽工贸职业技术学院 动漫学院,安徽 淮南 232007;2.安徽工贸职业技术学院计算机技术系,安徽 淮南 232007;3.安徽理工大学计算机科学与工程学院,安徽 淮南 232001;4.安徽工贸职业技术学院机械系,安徽 淮南 232007)

1 基础技术概述

在本系统中,主要使用了JAVA和VRML技术。JAVA是一种非常适合网络应用环境且具备“一次编译随处运行”特点的编程语言,它使用基于JAVA APPLET技术的WEB应用程序,既能实现各种功能的扩展,又能够实现在多个应用程序之间进行数据的交换。VRML(Virtual Reality Modeling Language,虚拟现实建模语言)是一种3D场景建模语言,其特性是渲染实时及与平台无关等,可利用支持WRL文件的浏览器浏览3D虚拟场景,但其缺点是不能实现实时交互功能。新的VRML版本更是加强了3D虚拟场景的真实性,能让访问者有“身临其境”的体验。

VRML的优点是3D场景的建模,JAVA具备了良好的网络数据传输能力及方便的编程功能,二者有很强的互补性,即通过VRML的EAI(External Authoring Interface,外部程序接口)与 JAVA APPLE程序的数据交换,从而实现VRML与JAVA的完美结合,前者负责3D场景建模及EAI接口的定义,后者负责用户交互功能及业务逻辑功能的开发。

2 系统架构实现

系统总体架构为基于MVC技术的三层 B/S结构,采用 VRML和 JAVA(包括 JAVA APPLE、JSP)技术,实现用户界面与应用服务之间的低耦合开发,数据存储采用的是SQLServer数据库。系统架构如图1所示。

图1 系统架构图

在图1中,用户界面是使用者实施操作的唯一平台,其利用支持VRML的网页浏览器进行零配件模型的三维浏览、对零配件模型实施管理以及实现人机间的交互;应用服务层的任务是实现用户控制信息及上传数据的处理,以及处理WEB服务器提交的数据并传递给SQL数据库,再将反向接收处理后的结果显示在用户界面层;数据层的作用是利用JSP和数据库技术处理WEB服务器发出的数据请求,为应用服务层提供数据处理服务。

3 系统模块设置

系统功能模块如图2所示。在图2中列举了系统的主要功能模块:用户信息管理模块、零部件信息管理模块、零部件装配组管理模块、模型装配及用户交互等模块。这些功能模块分别实现了用户的登录/注销、用户权限的控制、零部件信息的管理、零部件装配组的管理、模型装配控制及用户交互等功能。

图2 系统功能模块图

用户信息管理:包括用户管理和用户权限管 理两大部分,前者包括用户的注册/注销、个人信息维护等功能,后者用来实现用户权限的分配功能。本系统利用角色权限分派的方式实现了用户的权限控制。

零部件信息管理模块:采用逐层分类管理法实现对繁杂零部件信息的优化组织及高效管理。

零部件装配组管理模块:采用了能够实时反映装配层次及装配关系的树形结构,即以装配组为树根,分类地进行划分,最终到叶子节点——元零件,每个节点都存储了与之对应的信息,诸如:三维模型数据、零件位置数据、设计文档和材质工艺文档等。

模型装配模块:其主要功能有五项,分别是装配组导入功能、信息加载功能、运动控制功能、碰撞检测功能和结果输出功能。为了能够快速和实时地进行碰撞检测,项目组通过以AABB(轴向包围盒)算法为基础,并增加重叠轴判定算法,形成了重叠轴向包围盒(SAABB)算法。

用户交互模块的功能主要是为同时在线的用户发起针对某一装配问题的讨论和分析,及是否保存讨论相关的内容。

4 系统数据库设计

在系统中,面对众多的数据信息,为便于管理将数据分为两大类:一是为保存与零部件相关信息设计了包含 partinfo、featureinfo和 procedureinfo等十余张数据表;二是为存储系统的自身基本信息设计了sysuserinfo、toolinfo和GBLibsinfo等数据表,其中,partinfo表中主要包含了 partid(编号)、partname(名称)、parttype(类型)、parentpartid(装配组编号)、parentpartname(装配组名称)和assemblypathid(装配路径编号)等字段,用来描述零部件的基本属性及其装配路径;procedureinfo表中主要包含了procedureid(编号)、procedurename(名称)、proceduredesc(工序内容描述)、toolid(装配工具编号)等字段,用来描述与装配工序相关的信息关联到装配工艺和装配工具等内容;toolinfo表中主要包含了 toolid(编号)、toolname(名称)、tooltype(工具类型)、toolfeature(工具特征)和tooldesc(工具描述)等字段,用来实现对装配工具的存储和管理;GBLibsinfo表中主要包含了GBpartid(国标工具编号)、GBname(名称)、GBtype(类型)、GBpara(工具参数)、GBdetail(工具具体描述)等字段,用来实现对标准零件的管理。

5 关键技术研究

5.1 压缩WRL文件

利用VRMLPad等编辑软件可以直接创建VRML文件,利用3DS MAX等建模软件也可以创建VRML文件。面对汽车发动机的众多零部件,显然直接创建VRML文件是一件不可能完成的任务,那么使用建模软件创建就是必然的选择了。在项目实施过程中,利用AutoCAD建立零部件三维模型,再使用3DS MAX将其转换后输出为WRL的模型文件。此方法的缺点是WRL文件体积较大,在当前的计算机及网络环境下,不能实现流畅使用的基本目标,因此必须对WRL文件进行压缩。

WRL文件的压缩有两种方法,一是利用VRMLPad编辑器自带的压缩功能;二是使用Internet Model Optimizer软件。经验证,压缩后的文件在保留原文件细节的情况下比未压缩的文件减小约80%的体积。这样,就保证了在大批量WRL文件导入VRML场景的情况下,仍能够流畅地正常运转。

5.2 监听EventOut事件

在设计中,EventOut事件监听机制是通过EventOutObserver接口类来实现的,从而达到动态监控事件状态变换的目的。具体的应用就是实现了“点击零部件即操作”的功能。实现代码见图3。

当操作者单击零部件模型时,内嵌的Touch-Sensor节点就会触发,完成callback()方法的调用及节点名称的发送,页面中的JAVA APPLET捕获了相关的信息,并完成对选中零部件的控制操作。

图3 事件监听的实现代码

5.3 实现碰撞检测

在虚拟装配系统中,碰撞检测是一项非常关键的技术,其作用是判断多个零部件在同一时间、同一空间中是否可能发生碰撞。高效率的碰撞检测技术研究在三维场景规模不断增加的虚拟装配系统中越来越受到重视,其直接影响到装配系统的实时动态效果和用户体验。

项目组通过以AABB(轴向包围盒)算法为基础,并增加重叠轴判定算法,形成了重叠轴向包围盒(SAABB)算法。该算法的核心思想是将待检测的零部件三维模型表面定义成为包含若干个单独表面(由多边形集构成)的表面集,利用轴向包围盒结合重叠轴对齐判定的算法,剔除多余的表面部分,再实施多边形相交判定,因而能够实时、高效地进行碰撞检测。

SAABB算法的工作原理如图4所示。

图4 SAABB算法工作原理图

具体的算法流程是:第一步,确定重叠轴向包围盒;第二步,碰撞表面选择;第三步,多边形相交判定。其中,第二步的算法流程和第三步的算法流程分别如图5和图6所示。

图5 碰撞表面筛选流程图

图6 多边形判定流程图

5.4 确定装配方法

装配方法是指完成某个装配过程的实施方法。大体上要经过选择装配任务、导入零部件、移动零部件、操作装配等一系列操作。具体来说,在选择装配任务步骤中要完成任务标识和装配序列等工序,在操作装配步骤中要完成装配路径和时间等工序,装配方法的描述见图7。

任务标识是用来明确装配任务的,通过任务ID标识该任务的唯一性并确定此任务的名称和任务描述;装配序列采用了链的形式描述零部件在装配任务中的装配顺序,使用装配序列ID标识,链中的节点使用如下结构数据来描述:

图7 装配方法描述

任务对象包括了在任务中所有涉及的装配零部件,装配工具和辅助工装等,对应信息保存在零部件信息模型中;装配路径反映了在虚拟装配中零部件或装配工具的移动路径,可通过路径ID来标识,路径是由多个节点构成的,每个节点包含了位置信息、方向信息和后续节点信息,可用如下结构数据来描述:

而装配时间则包含了开始时间与结束时间两个部分,用来记录装配动作的起止时间。

6 结束语

以VRML和JAVA技术(含JAVA APPLET和JSP)为基础,结合实际应用,设计了基于SAABB算法的VAEAS及相关的功能模块,在系统设计开发的过程中着重研究了WRL文件压缩、“点击零部件即操作”功能实现、SAABB碰撞检测算法以及装配方法等四个问题。该系统的实现对提高工作效率、降低设计成本具有重要的意义。

[1]杨润党,武殿梁,邓华林,等.虚拟环境下产品装配技术的研究与实现[J].计算机集成制造系统,2004(10):1220-1224.

[2]行开新,田凌.支持异地协同设计的异构CAD虚拟装配系统[J].清华大学学报:自然科学版,2009(2):226-231.

[3]王德洪,涂玉芬.柴油机虚拟装配的研究[J].新技术新工艺,2009(10):35-37.

[4]唐为奇,范秀敏,武殿梁,等.多用户协同虚拟装配网格系统研究[J].计算机工程与设计,2009(13):3163-3166.

[5]郭丹阳.基于虚拟环境的典型机械产品装配运动仿真研究[D].长春:长春理工大学,2009.

[6]陈旻.虚拟技术在机械装配工序中的应用[J].现代制造工程,2010(2):115-117.

[7]戴杰.虚拟装配系统中碰撞检测技术的研究与应用[D].大连:大连交通大学,2010.

[8]孙月,杨家富.基于Pro/E与ADAMS自动打孔装订机联合仿真实现[J].淮阴工学院学报,2011(3):29-33.

[9]赵瑛峰,郑澎.基于混合模型的虚拟装配关键技术研究[J].计算机工程与设计,2012(8):3262-3267.

猜你喜欢
碰撞检测模块算法
28通道收发处理模块设计
“选修3—3”模块的复习备考
全新预测碰撞检测系统
基于BIM的铁路信号室外设备布置与碰撞检测方法
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
进位加法的两种算法
空间遥操作预测仿真快速图形碰撞检测算法
一种改进的整周模糊度去相关算法
BIM技术下的某办公楼项目管线碰撞检测