三维虚拟列车的建模及在故障训练中的应用与研究

2016-02-16 02:59倪晨杰郎诚廉
铁路计算机应用 2016年7期
关键词:列车建模状态

倪晨杰,郎诚廉

(同济大学 电气与信息工程学院,上海 201804)

三维虚拟列车的建模及在故障训练中的应用与研究

倪晨杰,郎诚廉

(同济大学 电气与信息工程学院,上海 201804)

本文将虚拟现实技术引入城市轨道交通培训领域,着重从列车设备建模、列车设备状态监控、列车故障现象模拟等方面对三维虚拟列车故障训练平台进行研究。利用3ds MAX建模软件设计了三维虚拟列车模型,以Unity3D为应用平台,VC# 2010为编译器实现对三维模型的驱动控制和人机互动。

三维建模;Unity3D;轨道交通;故障模拟;交互设计

轨道交通设备的维护工作顺利开展是保证城市轨道列车运行的安全、稳定及可靠的前提,因此采用科学合理的方法培训轨道列车维修方面的专业人才尤为重要。在轨道交通系统中,由于专业设备多,且体积大、结构复杂,检测难度增加,传统的培训方式因其成本大、效率低等缺点在当前市场需求下已经显得力不从心。利用虚拟现实技术协助整个维修培训过程,构建一个能够准确模拟复现列车运行故障情况的开放性培训平台,使学员更好地掌握设备维修技术方面的知识并提升突发情况下处理问题的能力。

本文目标是将虚拟现实技术引入轨道交通安全维护方向,以Visual Studio C# 2010作为程序编译器,利用Unity3D应用开发引擎来构建一个具有教学意义的虚拟列车故障维修平台,学员通过平台能够了解轨道交通列车设备的相关知识和列车运行中发生的故障类型及相应的故障排除方法,直观准确地复现列车运行中的故障并模拟了从故障发生到故障排除的整个过程。

1 虚拟列车场景的建模

本文选用3ds MAX为建模软件。3ds MAX是基于PC系统的三维动画渲染和制作软件,相比其他建模软件,它拥有强大的角色动画制作能力。FBX是一个用于跨平台的免费三维数据交换格式,目前被众多的标准建模软件支持,由3ds MAX导出的FBX文件作为Unity3D的标准格式拥有多记录支持,能够准确地继承骨骼及动画效果,并能够良好地记录模型的网格和材质。

1.1 数据采集及素材收集

数据采集内容包括整个列车的轮廓、列车设备尺寸、设备结构和设备安装位置等。贴图素材通过使用Photoshop进行裁剪修正、格式转换及亮度调节等,纹理图像的尺寸规格需满足 。

1.2 元件建模

基于已处理的贴图,利用3ds MAX以列车设备零部件为单位,分别对车钩、转向架、受电弓等设备及列车整体进行建模,并对列车设备零部件进行模拟动画制作,目的是通过动画模拟设备运行过程。值得注意的是,3ds MAX采用的是右手坐标系,而Unity3D采用的是左手坐标系,因此模型导入Unity3D中X轴会自动偏转-90°,影响程序对物体的控制。同时,在建模过程中合理确定各个模型的局部坐标系及世界坐标系,在导入Unity3D中将模型坐标归零后确保不会出现位置上的偏移误差。

1.3 虚拟场景搭建

将3ds MAX建立的三维模型导入Unity3D后,在层级视图中按名称对模型归类、确定父对象和子对象关系、添加碰撞组件、动画组建等,并将列车零部件模型制作成预设体。

预设体类似一个组件模板,将预设体拖入场景中就会创建一个实例,当对预设体进行更改,实例会同步修改。制作预设体的目的是使模型对象及资源能够被重复使用,三维虚拟列车场景中需重复调用设备模型,例如:电池、转向架、受电弓、车钩等,预设体的应用不仅能够方便地动态调用三维模型,并且能有效地节省内存及提高资源利用率。如图1所示,为预处理后的列车制动器模型。

图1 制动器预设体实例模型

2 Unity3D虚拟场景驱动

Unity3D是一款跨平台应用开发引擎,可以轻松创建诸如虚拟现实场景、建筑可视化、实时三维动画等类型互动内容的多平台综合型开发工具。其内置的NVIDIA PhysX物理引擎,可以逼真的模拟刚体碰撞、外力作用等效果。Unity3D平台可以使用内置MonoDevelop编译器,并支持Visual Studio C# 2010作为外部编译器对代码进行调试。同时Unity3D对跨平台开发提供了最佳支持,支持各种编译语言,包括C#,JavaScript,boo等,并能够对驱动程序进行多平台的封装。本虚拟场景主要模拟了列车运行状态中故障的前后现象,并进行了列车设备知识的讲解,同时实现了设备运行状态之间的数据交互及三维虚拟列车中的人机互动。

2.1 Unity3D的事件响应

Unity3D的事件响应包括图形用户界面组件(NGUI)的响应及三维模型驱动场景的响应两方面。

2.1.1 图形用户界面的事件响应

在NGUI的事件响应中,处理事件的是UIEvent Listener类,其中,UIEvent Listener类是使用底层C#编译中的Delegate机制实现的一种类似观察者模式的系统,可以将事件的产生与事件的处理相分离,使得系统可以尽量的解耦合。系统在捕捉到用户发出的点击、双击、拖动、滑动等消息后进行事件的处理。挂载UIEvent Listener脚本的界面按钮响应流程如图2所示。

图2 图形用户界面响应流程图

2.1.2 三维模型驱动场景的事件响应

驱动程序中三维模型的响应则是利用射线原理。射线检测碰撞原理如图3所示,本文中规定射线的起点是摄像机视角位置即视点位置,并由该位置向一个方向发射一条无终点的线,在发射轨迹中与其他物体发生碰撞时,触发该物体上的逻辑响应。射线碰撞的优势是可以使用C#中out关键词来传入碰撞后物体的各类属性,同时可以批量地对模型进行LayerMask属性的设定,从而可以用来区分不同的物体并进行选择性过滤。

图3 场景对象响应流程图

2.2 设备模型之间的状态关联

本文主要构建了三维虚拟列车设备中一些主要的设备故障逻辑关系,包括电器柜、车门、操作台逻辑等。根据列车设备电气逻辑图,考虑列车设备的状态参数并进行数据的实时监测,由数据监测器接收并传输数据。

2.2.1 模型数据结构体的定义

列车控制系统主要由控制台、电器柜、逆变器、断路器、信号灯等设备构成,根据列车设备所在车厢、设备名称定义结构体类型,以Console、CEC、Break、Switch、Light、Ohters定义了6个结构体,并根据列车设备实际情况确定结构体的成员。考虑到大多数设备按钮只有两个状态,因此定义0为关(故障)状态,1为开(运行)状态,少数设备如车门、受电弓高度等具有多状态的根据实际情况进行定义。

2.2.2 设备数据的实时监测

Unity3D中,由于驱动程序延拓性的需要,需合理地将模型对象分配在不同场景中用来实现不同的功能。由于场景的切换会默认对原场景进行数据清理和资源回收,原先场景内的对象或者其拥有的属性全部变为空值,导致监测列车设备状态的脚本被销毁后造成数据丢失。为了保留各个场景中的设备状态数据,需创建一个随着场景切换而不被销毁的脚本用来实时监测数据,直到程序终止运行。

设计步骤如下:

(1)在程序运行初始场景中创建一个空物体对象,挂载用于监测整个列车数据的脚本文件。

(2)使用DontDestroyOnLoad()方法,当场景切换释放所有GameObject时保留该空物体进入下一个场景,其实现代码如下所示。GameObject为模型对象。

2.2.3 列车故障现象的模拟

以列车车厢为单位,每一个车厢场景中都有独立的脚本用于实时发送及接收当前场景中的数据,封装为一个以MonoBehaviour为基类的类对象。数据监测器读取场景中该脚本接收到的列车设备状态,当切换场景时由于场景内资源被释放,此时列车设备状态数据由监测器保留,当进入下一场景后,场景中的脚本读取监测器中的数据,根据电气逻辑作出相应的响应。如图4,以电器柜中操作台显示屏电路断路器(DDUCB)过流状态为例。

图4 电器柜DDUCB过流故障状态显示图

当电器柜DDUCB过流跳下,监测器接收到其数据状态从1变为0,根据列车电气逻辑进行处理后,显示故障现象为:列车合钥匙工作正常,按列车唤醒按钮后其他灯显示均正常,但DDU不能显示。

2.3 设备模型的人机交互

在虚拟场景中的设备模型与用户进行流畅的人机交互是构建三维虚拟列车必不可少的组成部分。Unity3D场景中每个物体都拥有Transform类,用来存储并处理物体的位移、旋转及缩放。通过鼠标及按钮发出的事件,实时改变物体Transform类中的属性以达到对模型进行操控的效果。控制模型旋转公式为:

其中,R(x)及R(y)表示当前x,y方向上鼠标拖动物体形成的偏移量,Quaternion.Euler是以欧拉角作为旋转体系,是Unity3D中用于控制物体旋转角度的方法。φ为控制旋转的灵敏度系数,根据对模型操作流畅度的测试,一般取φ=0.5。

模型是通过存放在Rresources文件夹下的预设体进行动态调用,在场景中首先确定摄像机Main Camera对应模型视角的位置节点,当摄像机接收事件消息后位移至对应节点位置,达到实时转换视角的效果。并利用函数ClickGameObject(GameObject obj)和ShowText(string inputTexts)来控制当前显示模块的状态。以列车车钩操作界面为显示界面,如图5所示。红色加深部分为车钩当前被选中零部件,上方提示性文字为该零部件的介绍内容。

图5 列车车钩操作界面

3 虚拟列车场景界面设计

虚拟列车模型以上海轨道交通3号线为原型,列车编组为6节,因此场景由TC1、MP1、M1、M2、MP2、TC2,6节车厢构成。当前以TC1车厢作为初始场景界面,根据软件界面的美观性及操作的便捷性设计了虚拟列车操作界面。列车TC1车厢设备零部件可由右侧长条形滑块上下拖动,选中不同的图标可将主视点切换至对应设备零部件;长滑块下方上、下、左、右按键可辅助控制视角的位移变换;界面正下方的按钮可以切换列车车厢场景,实现不同场景中对列车设备的操作;右下角左侧的初始状态按钮可将模型位置复位至初始位置便于用户重新操作模型,右侧的退出按钮提供了有效退出客户端的方法。

4 结束语

本文主要介绍了三维虚拟列车的建模与驱动,利用3ds MAX建模软件完成对三维虚拟列车场景的建立,并着重对列车零部件设备进行建模,以C#为底层编码,使用Unity3D三维驱动程序实现对场景的驱动控制。此三维虚拟列车有很强的延拓性和综合性,能够接近现实情况模拟列车的运行状况进行模拟故障的演练,解决了传统培训方式资源占用大的情况。它能够反映列车故障情况,包括列车电器柜断路器故障、空气与制动系统故障、车门故障、牵引系统故障等,在地铁维修培训过程中具有积极的作用。

[1]吴 芳.城市轨道交通设备[M].北京:人民交通出版社,2012.

[2]张金钊.Unity3D游戏开发与设计案例教程[M].北京:清华大学出版社,2015.

[3]高 楠,张 强.虚拟现实技术在电力机车设计中的应用[J].电力机车与城轨车辆,2010(2).

[4]彭国安.3ds Max 建模与动画[M].北京:人民邮电出版社,2012.

[5]孙志辉.C#程序设计[M].北京:人民邮电出版社,2015.

[6]刘梦成,孔繁虹.城轨列车故障仿真培训系统的研究[J].铁路计算机应用,2015,24(10).

责任编辑 徐侃春

Modeling of three-dimensional virtual train and its application in fault training

NI Chenjie ,LANG Chenglian
( School of Electronics and Information Engineering,Tongji University,Shanghai 201804,China)

Based on the technology of virtual reality,which was applied in the feld of Urban Transit training,the article studied on the fault training platform of three-dimensional virtual train from the train equipment modeling,train equipment status monitoring and the fault phenomenon simulation.The design of three-dimensional virtual train model was based on 3ds MAX.Unity3D was taken as a platform,VC# 2010 was used as a compiler to drive and control 3D models,implement the human-machine interaction.

3D modeling;Unity3D;Urban Transit;fault simulation;interaction design

U260.42∶TP39

A

1005-8451(2016)07-0004-04

2015-12-18

倪晨杰,在读硕士研究生;郎诚廉,高级工程师。

猜你喜欢
列车建模状态
登上末日列车
关爱向列车下延伸
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
状态联想
穿越时空的列车
基于PSS/E的风电场建模与动态分析
不对称半桥变换器的建模与仿真
生命的另一种状态
坚持是成功前的状态
西去的列车