武筱菲 申荣卫
(天津职业技术师范大学)
虚拟现实技术是通过使用计算机,运用一定的技术手段建造一个仿真的三维虚拟环境[1]。虚拟现实技术发源于20世纪80年代的美国,在机械方面,利用虚拟现实技术对机械零部件加工和装配过程进行仿真,可以降低生产成本和时间。近几年我国虚拟现实技术取得不错成果,国内高校和科研机构积极投入虚拟现实领域的研究。北京航空航天大学在虚拟现实与可视化实验室方面实现了分布式虚拟环境网络设计,建立网上虚拟现实研究论坛,提供实时三维动态数据库,还可以提供用于飞行员训练的虚拟现实系统,以及开发虚拟现实应用系统的开发平台,最终实现与相关单位的远程连接[2]。文献[3]在基于CAD系统中提出了基于“可拆即可装”的原理,将拆卸顺序和拆卸路径进行反演,即可得到产品的装配顺序和装配路径。文章以虚拟装配技术为理论指导,发电机的拆装演示基于“可拆即可装”的原理,提出了一种基于unity3D的发电机虚拟拆装实训系统的平台,利用虚拟拆装代替实物拆装,研究虚拟故障检修以及碰撞检测技术,以解决发电机拆装训练中设备、零件的损耗大、训练成本高及场地受限等问题。
基于unity 3D的发电机虚拟实训平台设计流程:1)需要三维扫描仪获取零件模型,结合3D max软件对模型进行重新编辑、法线贴图及UVW处理;2)在unity 3D里编辑导入的模型,添加场景元素,设定元素关系,完成虚拟场景的构建;3)在相应GameObject(物体对象)上加载脚本,编写代码实现发电机的结构展示、自动拆装及用万用表检测发电机的虚拟故障检修等功能;4)最终以生成的.exe可执行文件或是网络浏览文件的方式发布。发电机虚拟实训平台设计流程,如图1所示。
对于发电机内部的结构具有不规则特性的零部件,在使用其他建模软件时很难获得逼真的效果,另外其他软件与unity引擎结合时没有很好的兼容性,因此采用3D max进行真实感建模。为获得更好的仿真效果,系统采用3D max对模型进行贴图渲染,配合使用Photoshop软件对材质贴图进行处理,提升3Dmax的渲染效果[4]。3D max重建好的模型在导入unity 3D中时,x轴会偏转-90°,所以为了避免模型变动,需要保存为.3ds的文件格式[5]。
2.2.1 虚拟场景设计
将模型添加到虚拟场景中,并对发电机整个模型进行旋转、缩放、移动及拖拽等相关属性的设置,进行编辑组合。具体步骤:1)运行unity 3D,建立一个New Project(新的工程项目),在Layers(层级)选择合适的窗口模式进行设计;2)创建虚拟环境的必要元素灯光Directional Light(平行光),编辑其属性,设置相应效果。添加Main camera(主摄像机),调整运行视图的远近及角度。SettingRenter(设置中心)设置天空盒,添加场景所需要的材质贴图;3)将通过3D max导出的.3ds格式的发电机前后端盖、定子及转子等各零部件放入到unity 3D的资源文件夹Assets中,用鼠标拖动到场景中进行正确的位置摆放;4)重新指定模型中丢失的材质和贴图;5)对场景中的所有模型添加Physics(物理)菜单下的Mesh Collider(网格碰撞)组件,避免在模型拆装时出现从内部穿插的错误效果;6)调节光线,达到所需要的亮度和色彩效果,使场景更加真实逼真。
2.2.2 虚拟交互脚本设计
unity 3D中支持3种程序语言编写脚本,分别是Java Script,C#及Boo,其中C#语言更加符合unity 3D的编程思想,功能也最为强大,所以本平台中采用C#语言进行脚本编写。每个编写好的脚本与其他组件用法相同,必须绑定在GameObject(物体对象)中才能执行它的生命周期[6]。
为了能够对发电机内部构造进行360°展示,编写了generator view.cs脚本实现鼠标右键旋转和滚轮缩放的功能。同时将GUI(图形用户界面)脚本赋予主摄像机,调整摄像机角度,使运行时模型处于界面的中央,在GUI脚本中编写代码,赋予该场景的名称为结构展示。
在发电机拆装演示场景中,采用Animation(动画)制作发电机内部结构的拆解过程,本平台建模为发电机的主要零部件,所有引线、垫圈、螺母及螺栓均不在场景内。拆解顺序为:前端盖、转子、定子、后端盖、二极管及散热板。安装顺序则为拆解动画的倒序。
2.2.3 虚拟故障检修设计
2.2.3.1 转子检查
1)检查激磁绕组的短路或断路。平台采用万用表测量线圈的电阻,两表针分别接触在两滑环上,如图2所示。
正常阻值为2.6~6 Ω(不同型号发电机略有差别)。如果阻值小于正常值则为短路,若阻值为无限大,则为线头脱焊或者断路。
2)激磁绕组和滑环搭铁检验。将万用表电阻挡置于R*10 k挡,两表针分别接触轴和滑环,如图3所示。表针若指在无限大则表示良好;若有一定阻值说明存在搭铁故障,应当检修。
2.2.3.2 定子检查
如图4所示,将万用表2只表笔分别触在定子绕组三相的其中两相端,检查定子绕组是否断路,若没有阻值说明存在断路故障。
如图5所示,将万用表1只表笔触在定子绕组铁芯,另外1只表笔触在三相绕组中的其中一项,检查定子绕组是否搭铁。若有一定阻值,说明定子绕组接触良好。
虚拟世界中的物体之间之所以需要进行碰撞检测,是因为在现实世界中同一个空间区域内不能同时存在2个或者多个不可穿透的物体[7]。在unity 3D中,能够检测碰撞发生的方式有2种,一种是利用碰撞器,另一种则是利用触发器。碰撞器是一群组件,它包含很多种类,比如:Box Collider(盒碰撞器)、CapsuleCollider(胶囊碰撞器)、Mesh Collider(网格碰撞器)及Sphere Collider(球形碰撞器)等,应用场合不同,但必须加载到GameObject身上。工业类模型复杂,在使用3D max软件进行重新建模导入unity引擎后,添加Mesh Collider组件,根据模型的形状选择多边形网格(Polygonal Mesh),以发电机定子绕组模型为例,如图6所示,添加碰撞器,当用户在虚拟场景中进行交互时,需要添加相应的碰撞器才能实现拖拽交互功能。
在实训平台的虚拟场景结构展示中,通过鼠标的左键实现模型的拖拽移动,右键实现模型的旋转,通过滚轮滚动实现模型的缩放。当点击“自动拆装”按钮时可用播放发电机的拆解动画,随后会自动安装,增进用户对发电机内部构造的学习和工作原理的理解。动画展示效果,如图7所示。
虚拟现实技术在汽车发电机的虚拟拆装和故障检修等功能领域还是空白。在设计虚拟实训平台时,发电机内部构造中的每一个零部件都需要三维扫描和软件建模,并且绑定脚本程序,设置动画效果,完成整体的旋转和缩放功能。但是由于这是在虚拟环境下的实训,碰撞检测问题需要设置,避免出现部件拆装时的交叉。发电机实训平台模拟了真实装配和检修过程,解决了院校场地和设备紧缺问题,同时对于理实一体化的建设有重要的现实意义。