基于Unity3D的动车转向架虚拟拆装培训系统研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Unity3D的动车转向架虚拟拆装培训系统研究
马思群;王开顺;李健;张琪;陶然
【摘要】This article took the EMU bogie as the object of study, created a 3D virtual interactive environment based on Unity3D engine development platform, used the database technology to store and manage system data, implemented virtual disassembly and assembly process of bogie with the iTween class method in the NGUI plug-in, designed and developed the virtual disassembling and assembly training system of EMU bogie. The system had the characteristics in real training scene and operation instructions, not limited by time and place, interactive and obvious training effect. The system also made up for the shortcomings of the traditional teaching and training, it is of great significance to reduce teaching costs and improve learning efficiency.%以某动车转向架为研究对象,基于Unity3D引擎开发平台,创建三维虚拟交互环境,运用数据库技术对系统数据存储与管理,使用NGUI插件中iTween类方法实现转向架虚拟拆卸与装配,设计开发动车转向架虚拟拆装培训系统.该系统具有真实的培训场景及操作说明、不受时间和场所的限制、交互性强、培训效果明显等特点,弥补了传统教学培训的不足,对于降低教学成本、提高学习效率具有重要意义.
【期刊名称】《铁路计算机应用》
【年(卷),期】2017(026)008
【总页数】5页(P33-37)
【关键词】动车转向架;虚拟拆装;Unity3D;NGUI
【作者】马思群;王开顺;李健;张琪;陶然
【作者单位】大连交通大学交通运输工程学院,大连 116028;大连交通大学交通运输工程学院,大连 116028;大连交通大学艺术学院,大连 116028;大连交通大学艺
术学院,大连 116028;大连交通大学艺术学院,大连 116028
【正文语种】中文
【中图分类】U270.331;TP39
虚拟现实技术(VR,Virtual Reality)是一种可以创建和体验虚拟世界的计算机仿真系统,它利用计算机生成一种模拟环境,利用多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中[1]。

虚拟现实技术的快速
发展使得虚拟培训变成了现实,在某些重大安全行业,例如:航空航天、石油化工、轨道交通等领域,工作人员在上岗之前的培训工作变得异常重要[2]。

但传统的培
训方式主要通过理论学习、动画演示、实际操作等方式进行培训,使得受训人员未能理论与实践相结合,培训效果不明显。

无法很好地实现受训人员对设备的全面培训。

虚拟培训是通过计算机生成三维虚拟环境,受训人员可以身临其境地沉浸在虚拟环境中完成所要培训的知识和技能的学习任务,从而解决传统教学培训中一些难题。

如在轨道交通领域中,动车转向架是一种复杂的机械装备,在转向架的拆装及检修操作培训过程中,如果操作不当,会造成转向架零件的损坏,甚至发生安全事故,导致受训人员受伤等情况发生。

虚拟培训能够为受训人员提供虚拟现实的培训场景及操作说明,使学员能够较快速地掌握设备操作流程和规范,避免操作不当导致人员受伤或设备损坏,而且可以反复学习使用、不受时间地域限制、实际交互性强,
受到越来越多企业的青睐[3]。

Unity3D是一种应用较为广泛的三维虚拟现实开发软件,是一个对编辑器、跨平
台发布、地形编辑、着色器、脚本、网络、物理、版本控制等特性全面整合的专业游戏引擎[4]。

其不仅对Di-rect X和Open GL拥有高度优化的图形渲染通道,而且内置NVIDIA的PhysX物理引擎,使操作具有较强的逼真感。

同时Unity3D可以支持多种脚本语言(C#、Java Script、Boo Script等),兼容各类操作系统,Unity3D越来越多地被应用到三维场景的开发工作中[5-6]。

动车转向架虚拟拆装培训系统采用基于Unity3D为开发平台,结合三维建模软件
3Ds Max创建模型,采用C#语言编写控制脚本实现转向架各部分系统零件拆装演示。

利用数据库技术完成转向架的基本信息、转向架结构、工作原理、拆装练习、评价考核等功能模块,实现培训练习,使得受训人员对转向架拆装操作进行全面的培训。

系统整体层次框架图,如图1所示。

动车转向架虚拟拆装培训系统按照需求的不同设计不同的功能模块,从而实现全面的转向架拆装的培训任务。

具体开发流程:
(1)参考动车转向架图纸及相关场景的三维模型的建立,将模型导入Unity3D平台,进行场景建立。

另外,同时整理转向架各部分系统的零件信息并录入数据库;(2)通过编写C#脚本实现系统界面交互、系统三维场景交互、系统与数据库的
通信;
(3)通过Unity3D平台将系统发布到PC桌面展示。

系统开发流程,如图2所示。

2.1 模型建立及导入
动车组转向架虚拟拆装培训系统对模型的要求较高,通常采取依据CAD图纸和物体实际图片进行建模。

Unity3D作为虚拟现实软件其建模功能较弱只能构建基础
的模型物体,对于转向架设备之类的复杂精细模型并不合适,因此,本系统采用
3Ds Max进行模型制作,3Ds Max具有强大的建模工具和材质贴图调整功能,其
制作出的模型逼真,表现力好[7]。

下面以制动系统为例介绍模型的导入过程。

转向架制动系统其整体包含了许多形状复杂的零件,因此,在制作模型的过程中确保真实性的前提下,对模型进行合理优化,避免模型数据量过大导致数据溢出影响转向架虚拟拆装系统的运行效率,导致体验效果不理想等问题。

本文利用3Ds Max对模型的面数进行优化,将模型中看不到的点、线、面进行删除等操作,精简模型,最后导出为Unity3D支持的FBX
格式文件导入相关场景。

导入成功的转向架,如图3所示。

2.2 交互脚本设计
采用C#进行交互脚本进行相关开发和设计。

为了实现对转向架模型的多角度展示,编写C#的MouseView.cs脚本进行鼠标滚轮缩放和旋转拖动的功能。

为了实现转向架拆装演示和操作功能,利用Unity3D引擎NGUI的Tween类方法实现零件
的位置变化、高亮显示、透明度调节的功能[8]。

为了模拟真实的拆装效果,本研
究中转向架零件的运动采用Tween Position方法实现,在脚本中设置零件运动前后的位置坐标,利用Rigidbody方法添加零件的重力效果,实现转向架拆装过程
中真实的运动轨迹。

为了实现零件运动结束后消失的效果,通过编写C#的Gameobject.active方法实现零件在运动到地面之后零件自动消失,此时可以模
拟出转向架零件在拆卸过程中的交互。

将转向架各部分系统零件制作成预制物体分类存储到Profab文件,利用C#的Instatiate方法结合碰撞器完成在指定的位置
添加指定的零件,实现转向架装配的交互。

2.3 信息数据库设计
动车转向架虚拟拆装培训系统中,信息数据库存储转向架各零件拆装顺序,转向架各部分系统基本信息、结构工作原理及参加培训人员的个人信息和评价考核结果等数据。

本文利用SQL Serves 2010为数据的管理和开发基础,以C#脚本实现与Unity3D中数据通信。

例如:Unity3D引擎中的转向架装配体零件模型及其基本
信息在数据库中都有对应的ID,并按照一定的分组形式在数据库中以数组的形式存储与读取,方便系统快速读取并将模型或显示信息通过数据通信在Unity3D交互界面实时显示。

3.1 转向架拆卸功能
转向架的零件众多,拆卸过程复杂。

为了能够较为真实表现零件的拆装过程,需要采用动画表现能力强的方法来控制零件,使其能平滑地显示零件的平移、旋转、放缩等动画过程。

本文利用Unity3D中iTween插件实现这些效果。

该插件是一种功能强大的动画效果编辑插件,使零件从一种状态变换成另一种状态时过渡平滑,可以通过不同的动画曲线表现出不同的物体运动速度的变化。

将iTween插件导入Unity3D中可以较好地完成零件的平移、旋转、放缩以及零件的高亮显示等动画过程。

3.1.1 零件的运动功能
零件运动包括平移、旋转、放缩等运动效果。

通过利用iTween.MoveTo(),iTween.RotateTo()和iTween.ScaleTo()分别可以实现对零件的平移、旋转、放缩的运动视觉效果。

另外,摄像机的过渡转场也需要用iTween.RotateTo()将摄像机旋转到正确的角度。

这些代码的使用方法类似。

本文以零件的平移为例详细介绍代码。

平移功能关键代码显示如下:
//要移动的目标零件
iTween.MoveTo(TargetGameObject,
//零件要移动的目标位置
iTween.Hash("position",TargetPosition,//动画过程持续的时间"time",2f,"easetype",
//动画曲线设置
iTween.EaseType.linear));
利用该段代码可以实现转向架的零件从当前位置移动到所需的目标位置,可以完成虚拟拆解过程的交互。

该方法通用性极强可以重复使用该方法用来拆卸转向架其他系统的零件。

零件运动过程,如图4所示。

3.1.2 零件的表面材质变化功能
在转向架虚拟拆装过程中,零件颜色的变化代表拆解顺序的过程。

所以零件表面材质变化也是相当重要的。

为实现该功能可以使用iTween.ValueTo()方法,当鼠标
放置某零件上方触发该出碰撞器响应使该零件表面材质发生渐变动画。

部分代码如下:
//目标零件
iTween.ValueTo(TargetGameObject,
/
/变化前的起始值
iTween.Hash ("from",valueA,
//变化后的目标值
"to",valueB,
//动画过程持续的时间
"time",1f,
//iTween.ValueTo()方法会每一帧调用一次目标零件上的UpdateFunction方法,并将监听到的变化值传递到UpdateFunction方法中并将变化值实时显示出来。

"onupdate","UpdateFunction"))
void UpdateFunction(color updateValue){
//将变化的值传递给零件的材质颜色,实现了零件表面材质颜色的变化TargetGameObject.renderer.material.color = updateValue;
}
3.2 转向架装配功能
转向架虚拟装配过程是通过使用鼠标选择相应的零件拖放到相应的安装位置,并且实时监测零件是否到达正确安装位置,只有在正确的安装位置才能将零件从鼠标中释放并摆放到正确位置,在装配过程中会实时有零件的装配信息提示。

若选错零件或安装位置不正确,零件会一直随鼠标一起运动,直至按照提示将零件正确地安装在所在位置[9]。

在此过程中鼠标的拖动功能、识别安装位置及信息提示功能是该部分的关键技术。

3.2.1 鼠标拖动功能
在转向架虚拟装配过程中,每一步的装配过程都会利用鼠标拖动零件到对应位置完成安装工作。

为实现该功能需要通过监听鼠标的点击事件和拖拽事件,并将鼠标的移动数据记录下来,使所要拖动的零件根据当前位置坐标和鼠标的移动数据进行计算,即可得到零件的目标位置坐标,最后将目标位置坐标赋予当前零件即可实现鼠标对零件的拖动。

核心代码如下:
//监听鼠标左键按下事件
void OnMouseDown(){
//将零件的当前坐标转换为相对摄像机视角坐标并存储在ScreenSpace1变量中ScreenSpace1 = Camera.main.WorldToScreen-Point(transform.position); //计算零件当前位置坐标与鼠标当前位置坐标的差值,得出零件与鼠标的相对位置关系
offSet = transform.position -Camera.main. ScreenToWorldPoint(new Vector3(Input.
mousePosition.x,Input.mousePosition.y,screen-Space.z)); }
// 监听鼠标拖动事件void OnMouseDrag(){
//存储移动后鼠标位置坐标信息
Vector3 ScreenSpace2=new Vector3(Input.mouse-Position.x,
Input.mousePosition.y,screenSpace.z);
//将相对摄像机视角坐标转换成三维场景坐标后再加上零件与鼠标位置之间的差值Vector3 currentPosition = Camera.main.ScreenTo
WorldPoint(ScreenSpace2)+offset;
//将目标位置的坐标信息赋予该零件
transform.position = currentPosition;
}
3.2.2 识别安装位置功能
当零件被拖动时,系统会实时监测零件与目标位置的距离,当该距离小于设定的数值时,零件表面材质颜色会发生改变,并提示相关装配信息。

识别安装位置原理图,如图5所示。

利用该方法实现对轮对轴承端盖安装过程作为示例。

编写C#脚本使用iTween.ValueTo()方法,当端盖接近正确位置,端盖的表面材质颜色由红色变
为绿色提示安装位置正确,核心代码如下。

端盖安装过程,如图6所示。

//判断零件是否已经接近正确的安装位置
If(Vector3.Distance(Target.transfrom.localPosition,TheRightPositon ) ){ iTween.ValueTo(Target,iTween.Hash(
//设置起始颜色为红色
"from",new color(1,0,0,0),
//设置提示颜色为绿色
"to",new color(0,0,1,0),
//实时监听变化值并传递到UpdateFunction
"time",1f,"onupdate","UpdateFunction"));
}
void UpdateFunction(color updateValue){
//实时改变零件的颜色值,实现颜色变化
TargetGameObject.renderer.material.color = updateValue;
}
将虚拟现实技术运用在轨道交通中动车组转向架的复杂装备中,运用Unity3D引
擎开发具有交互性强、操作方便、培训全面等特点的动车转向架虚拟拆装培训系统,突破了传统的理论学习、动画演示、实际操作等的培训方式。

利用射线碰撞检测算法解决碰撞检测问题;使用NGUI插件中iTween类方法实现转向架的拆装过程;利用数据库技术对系统交互数据进行管理等方面进行研究,将系统开发成界面简洁、动态操作效果好、上手容易的培训系统。

通过对基本信息、设备结构、工作原理、拆装操作4个模块的操作学习,可以使培训人员理论学习与操作实践相结合,实
现对转向架拆装的全面培训。

该系统的研究为轨道交通制造生产、维修检修的培训开辟了新的方向,给传统培训方式带来新的思路。

【相关文献】
[1]李治军.基于Unity3D的船舶舵机虚拟现实设计与研究[D].大连:大连海事大学,2014.
[2]朱乐浩,卫刚.基于Unity3D的柴油机部件虚拟培训系统研究与实现[J].机械设计与制造工程,2016(10):92-93.
[3]相茂英.基于Unity3D的化工设备虚拟培训系统研究用[J].计算机技术与发展,2014(24):196-200.
[4]星捷,李春花.基于Unity3D平台的三维虚拟城市研究与应用用[J].计算机技术与发展,2013,
23(4):241-244.
[5] HONGWT,LEEPS.Mesh based construction of flat-top par-tition of unity function用[J].Applied Mathematics and Computa-tion, 2013,219(16)∶ 8687-8704.
[6]倪乐波,戚鹏,遇丽娜,等.Unity3d产品虚拟展示技术的研究与应用用[J].数字技术与应用,2010(9):54-55.
[7]邱建松.基于Unity3D的实时虚拟仿真系统的研究与实现用[J].电子制作,2012(12): 11-12.
[8] XIE J. Research on key technologies base Unity3D game engine用[C]. 2012 7th International Conference on Computer Science&Education. Melbourne∶ ICCSE, 2012∶ 695-699.
[9]成军,赵欢,张桂香.碰撞检测在虚拟拆装仿真平台中的应用[J].微计算机信息,2010,26(31):76-78.。

相关文档
最新文档