虚拟装配程序可视化生成平台的设计与实现
2015-12-23杜宝江余冬平程建建
杜宝江,余冬平,程建建
(上海理工大学 虚拟制造技术研究院,上海200093)
0 引 言
目前针对大型机械设备虚拟装配系统构建环节主要存在以下3个缺陷[1]:①产品的虚拟装配系统的开发周期长;②每个阶段的构建环节对操作人员的技术水平要求高;③装配系统是针对指定产品进行设计的,其它产品因与之培训内容不同,程序则需重新编写,这样装配系统不具有扩展性和重用性。针对上述在虚拟装配系统构建环节中存在的缺陷,本文设计了虚拟装配程序可视化平台VRMLPlat-Form,该平台实现了虚拟装配动作可视化及对应虚拟装配程序的快速自动生成。
1 虚拟装配程序生成方法的探讨
1.1 手工编写虚拟装配动作VRML脚本
在机械设备装配体模型构建完成的基础上,从三维CAD 软件中将待装配的零部件数字模型导入到VRML 中,运用VRML语言,手工编写动画脚本。简单的VRML 模型装配运动利用基于事件的交互原理[3],主要依靠方位插补器 节 点 (OrientationInterpolator)、时 间 传 感 器 节 点(TimeSensor)、位置插补器节点 (PositionInterpolator)等和ROUTE语句来实现关键帧动画。
1.2 三维CAD动画导出插件
这种方法是对三维CAD 软件进行二次开发,设计一个动画导出插件。在待装配零部件模型构建完成基础上,直接在三维CAD 软件中制作装配动画,最后通过动画导出插件将装配动画导出为VRML程序代码档。
其中,手工编写VRML动画脚本的方法,需要制作人员要有很深的VRML编程基础,而且代码的编写有很多重复性的工作,再者代码编写同动画演示并不同步,不能立即判定编写的动画代码是否正确。对于三维CAD 动画导出插件,就避免了代码编写的重复性工作,对应用人员的技术要求也不是很高。但是在三维CAD 软件中,因为模型构建时会有约束关系,机构的运行动画比较好做,而装配动画有时很难实现。基于上述问题,我们提出了可快速生成可视化虚拟装配程序平台-VRMLPlatform 的设计与实现。
2 VRMLPlatform 的总体架构
2.1 VRMLPlatform 的设计思想
本文设计的虚拟装配程序可视化生成平台也是建立在模型构建完成基础上,通过C#.NET 编写窗体应用程序,在此窗体中要求能够实时显示装配体的状态关系并可实现零件选择。当选中某个零件时,通过窗体中的参数设置模块,如零件的起始位置,作用时间等,就可以在后台VRML 程序代码档中添加对应的装配动作语句。这样便实现了虚拟装配动作的可视化以及对应程序的快速自动生成。见表1可看出本文提出的虚拟装配程序可视化平台对操作人员的技术要求不高、便于装配仿真动画的制作,并能够实现可视化编辑。
2.2 VRMLPlatform 的工作流程
VRMLPlatform 的工作流程如图1所示。
图1 VRMLPlatform 的工作流程
2.3 VRMLPlatform 技术基础-基于模板的代码自动生成技术
本文目的是实现虚拟装配动作VRML 程序档的快速生成,而VRML档是一种代码档,在实现快速生成的过程中主要用到代码自动生成技术[4]。
3 VRMLPlatform 功能实现
VRMLPlatform 平台操作流程同要实现的主要后台功能的对应关系见表2。
表2 工作流程与后台功能对应
3.1 节点分组功能实现
对于节点分组的后台运算是要操作VRML 代码,添加Transform 节点,将模型代码放入Children中,实现模型的按组分配。在VRMLPlatform 平台中,其它如节点重命名、删除和新建,其后台实现同节点分组是一致的,也是对VRML档中的Transform 节点进行操作。
3.2 模型拾取功能实现
VRMLPlatform 中对模型拾取的方式应该有两种:点击模型树节点和直接点击场景中的模型,在拾取完成后,模型显示区的对应模型会成高亮显示。
点击模型树节点来拾取模型的方式,其后台实现方式是:读取目录树被选择的节点名称,并找到VRML 代码中该模型材质节点的引用,同时修改其颜色属性为红色,即高亮显示;在场景中拾取模型[6]的方式,其后台运行方式是:通过函数computeRayHit(here,there)从点击点发送射线,读取射线相交的模型节点引用,从而找到其材质引用,修改其颜色属性。图2为齿轮被拾取时的状态。
图2 齿轮被拾取状态
3.3 动画信息生成功能实现
由VRMLPlatform 快速生成的装配动画从宏观意义上可以分为两类:运动动画和状态动画。运动动画又包括直线运动和旋转运动,状态动画包括闪烁、透明度变化和颜色变化动画。
在完成装配动画的参数设置后,需要将每步虚拟装配动作的定义参数和上述选择的模型储存在某个信息载体中。可以关系型数据库SQL Server作为记录装配动作参数的存储工具,设计参数表dbo.AnimationTable,存储每一步装配动作的所有参数数据[7]。
虚拟装配最重要的是对装配路径进行设置[9],在本文路径设置采用 “用户引导”的拆卸方式,即通过识别模型零部件之间的装配关系,引导模型进行对应的坐标变换,从整个装配体拆卸开来,并记录拆卸的关键位置信息,其逆过程就是装配过程。以下重点介绍平移和旋转运动路径的参数设置方法:
(1)直接输入法:对于平移运动,只需手动输入平移方向和起始位置就定义好其运动路径,对于旋转运动手动输入旋转中心Center和方向Normal就可定义好旋转运动的旋转轴。
(2)场景中获取法:通过场景中获取的方法来设置平移动作的运动路径,采取两点式和法矢量式。两点式是通过从场景中拾取两点来确定运动路径,法矢量式是通过拾取场景中的一个零件表面,此表面的法矢量即为运动路径。
通过场景中获取的方法来设置旋转动作的旋转轴。通过在场景中拾取3个点,那么旋转运动的模型将沿过这三点的外接圆的圆心切垂直于过这三点的平面的轴进行旋转。
3.4 VRML代码生成功能的实现
虚拟装配仿真动作档是一段VRML 程序代码,所以记录装配的VRML 程序的生成是VRMLPlatform 的最终目标。VRML代码的生成即将对应数据库中记录虚拟装配参数转换为相应的VRML代码,实现步骤如下。
3.4.1 分析VRML代码的结构
要生成的VRML代码包括4部分:模型节点代码、动画原型节点PROTO、动画代码和动画连续播放脚本代码。模型节点代码中包含了分组信息,动画原型节点是一个自定义的节点AnimationFrame,此自定义节点相当于面向编程中的函数定义,AnimationFrame中定义了动画的参数和内部的逻辑运算关系。
3.4.2 生成动画代码
生成动画代码即是根据数据库SQL Server中各行数据生成实例化的PROTO 节点代码。每一步动作都对应一个AnimationFrame节点的实例化即该步装配动作的VRML程序代码。
3.4.3 生成虚拟装配动作连贯展示程序代码
通过VRMLPlatform 制作虚拟装配仿真动画时,动画是按照装配步骤来制作的,每一步的装配动作对应着一步动画,在每步动作之间需要实现连贯展示,这就需要生成动作连贯展示程序,动作连贯展示程序代码是根据每一步装配动作引用的节点以及每步装配动作的持续时间来生成的,实现方法是基于模板驱动的代码自动生成技术,其具体脚本程序代码模板如下所示。
上述程序代码中time1、Time1和Node9_STEP 为可变参数,其它的程序段都是固定的。在每两步动画之间添加此段程序代码,就可以实现这两步虚拟装配动作的连贯展示。
3.4.4 VRML程序代码整合
将模型节点代码、动画原型节点PROTO、动画代码、动画连续播放脚本代码整合到一个VRML 档中。具体的整合方法是:通过函数creatVRML ()新建一个VRML文档,然后通过参数赋值的方式将模型节点代码、动画原型节点PROTO、动画代码、动画连续播放脚本代码分别赋给4个文本参数,将这4个文本参数内容写入新建的VRML文档。
4 VRMLPlatform 界面的设计与实现
根据图1 本平台界面规划流程图。首先需对VRMLPlatform 平台要实现的功能进行枚举,找出每个功能的界面触发方式,根据功能和界面触发方式相似的原则,确定同一功能模块区,依据上述原则,见表3。
表3 VRMLPlatForm 功能统计分类
根据表3中对VRMLPlatform 界面规划的研究,本文设计了如图3所示的用户界面。
图3 VRMLPlatform 用户界面
图4 模型导入VRMLPlatForm
5 示例验证
本文列举两个矩形联结器的移动装配动作仿真制作,演示虚拟装配程序可视化平台-VRMLPlatform 的操作方法。选择 “文 件”下 的 “新 建VRML 动 画”,然 后 “导 入VRML文件”,然后点击屏幕左下方的按钮 “将场景树更新至浏览器”,则在系统中场景树和模型展示区都已有模型信息,如图4所示。
在场景树中选择做虚拟装配动作的模型,右键 “新建动画”,则可在参数设置模块设置相关参数,本例要求模型沿Y 轴做直线运动。其参数设置界面如图5所示。
图5 参数设置界面
在模型动画参数设置时,包括平移、旋转、闪烁、透明度和颜色等动画的参数设置,每设置完一次的参数,需要保存该步的动画设置,如图6所示。
图6 动画设置保存界面
点击VRMLPlatform 界面左下方 “生成代码”,则在后台对应的VRML 文件中生成了该步装配动作代码。用BS Contact打开此VRML 文件,则可浏览装配动画。图7 为平移装配的最终生成。
图7 平移装配的最终生成
以上便演示实现了VRMLPlatForm 虚拟装配程序可视化的过程。若手动编写该平移装配动作程序,过程较繁琐。该平台应用于柴油机泵组虚拟装配培训系统开发中 (图8),运行稳定,交互培训能力强,数据处理速度快,大大缩短了开发周期、避免了技术人力的浪费,验证了本文所设计平台的正确性和必要性。
图8 柴油机泵组虚拟装配培训系统开发界面
6 结束语
在虚拟制造领域,VRMLPlatform 实现了虚拟装配可视化及程序的自动快速生成,提高了虚拟装配制作效率,尤其对复杂的装配过程更凸显其高效性和便捷性。很大程度上解决了虚拟装配培训系统开发周期长的问题。实现了装配动作可视化编辑,操作简单,对操作人员的技术水平要求低,设置参数的同时,观看装配动作演示效果,避免了手工汇编程序的繁琐。由于VRMLPlatform 是基于模板的代码自动生成技术,可将装配动作设计为包含所有运动改变和状态改变的模板,而且其扩展性强,只需要更改后台数据库中定义的装配参数和所选择模型引用,就可制作其它机械产品的虚拟装配动作仿真并快速生成其程序代码。因此,VRMLPlatform 平台在开发虚拟装配培训领域具有普遍适用性。
[1]DU Baojiang.The virtual manufacturing technology [M].Shanghai:Science and Technology Press,2007:22-26 (in Chinese).[杜宝江.虚拟制造技术 [M].上海:科学技术出版社,2007:22-26.]
[2]YU Weiling,WAN Jun.Development and applied research of virtual manufacturing technology(VMT)[J].Manufacturing Automation,2008,30 (2):1-4 (in Chinese).[于卫灵,万军.虚拟制造技术 (VMT)的发展与应用研究 [J].制造业自动化,2008,30 (2):1-4.]
[3]HE Xinhua,WANG Xiaoning.The research of mechanical product virtual assembly technology based on VRML [J].Journal of Mechanical Engineering & Automation,2011,40(5):31-33 (in Chinese).[何新华,王孝宁.基于VRML的机械产品虚拟装配技术研究 [J].机械工程与自动化,2011,40 (5):31-33.]
[4]GUAN Taiyang.Reaseach of automatic code generation technology based on the template [D].Chengdu:Institute of Computer,University of Electronic Science and Technology of China,2007 (in Chinese).[管太阳.基于模板的自动代码生成技术的研究 [D].成都:电子科技大学计算机学院,2007.]
[5]TAN Fei.Design and implementation of automatic testing tools based on code generation technology [D].Wuhan:Institute of Computer,Huazhong University of Science and Technology,2010 (in Chinese).[谈飞.基于代码生成技术的自动化测试工具的设计与实现 [D].武汉:华中科技大学计算机学院,2010.]
[6]GUO Yanxia,HOU Tongpu,DU Yuanyuan.Picking up the entities in the three-dimensional scene based on DirectX technology [J].Journal of Liaoning University of Petroleum Chemical Industry,2009,29 (3):77-81 (in Chinese). [郭艳霞,候彤璞,杜园园.基于DirectX 的三维场景实体的拾取[J].辽宁石油化工大学学报,2009,29 (3):77-81.]
[7]BAI Yang.Exploration about the stored procedure of SQL SERVER [J].Knowledge and Technology of Computer,2011 (12):8769-8776 (in Chinese). [白 杨.探 究SQL SERVER 存 储 过 程 [J].电 脑 知 识 与 技 术2011 (12):8769-8776.]
[8]CHEN Yanchun,LIANG Li.The method and realization of importing large data into database[J].Skills and Maintenance for Computer Programming,2012,11 (1):20-23 (in Chinese). [陈严纯,梁立.大数据导入数据库的方法与实现[J].电脑编程技巧与维护,2012,11 (1):20-23.]
[9]LI Mimi.The visualized technological research of product assembly sequence based on WEB [D].Xi’an:Institute of Aviation,Northwestern Polytechnical University,2007 (in Chinese).[李咪咪.基于WEB的产品装配序列可视化技术研究 [D].西安:西北工业大学航空学院,2007.]
[10]HU Qili.The automatic generating technological research of virtual training system for machinery equipment[D].Shanghai:College of Mechanical, University of Shanghai for Science and Technology,2012 (in Chinese).[胡其立.机械装备虚拟培训系统自动生成技术研究 [D].上海:上海理工大学机械学院,2012.]
[11]HUANG Qiguang,HAN Xie.The research and development of the VRML visual editor [J].Computer Engineering and Design,2008,29 (5):1296-1298 (in Chinese). [黄柒光,韩燮.VRML可视化编辑器的研究与开发 [J].计算机工程与设计,2008,29 (5):1296-1298.]
[12]SHAO Xiaoliang,NIE Li.The implementating method of the assembly simulation based on Division Mockup software [J].Mechanical Design and Manufacturing,2007 (3):54-56 (in Chinese). [邵晓东,聂力.基于Division Mockup装配仿真的实现方法 [J].机械设计与制造,2007 (3):54-56.]
[13]PENG Gaoliang,CHEN Guangfeng,LIU Xinhua.modular fixture assembly model for virtual assembly design [J].Journal of Donghua University(English Edition),2009,26 (1):10-15.
[14]CHEN Jingping.Design and application of visualization of assembly process [C]//Proceedings of IEEE 9th International Conference on Computer-Aided Industrial Design &Conceptual Design,2008.