News Information

煤矿井下漫游系统的探索与实现

作者: 发布时间: 2023-08-18 点击数: 367

煤矿井下漫游3.jpg

摘 要:该文针对目前煤矿培训方面的现状,结合3D技术产品的特点,提出了煤矿井下安全培训的一种新思路,即煤矿井下漫游及交互式教学管理系统。文中分析比较了几种实现技术,同时介绍了系统实现的思路和方法,对Unity3D技术的使用要点也进行了阐述,并针对实现过程中用到的技术点进行了详细剖析。

关键词:井下漫游 交互式教学 安全培训 实操模拟 Unity3D

目前,我国煤矿生产安全问题仍不容乐观。在教育上,虽然加大了培训和管理力度,但由于我国井下作业人员基础文化素质整体偏低,生产任务较重且机械化程度不高,以至于为了完成生产任务而降低考核门槛,且院校式培训枯燥乏味、理论多于实践,许多新的专业知识涉及文化程度较高,且不具备趣味性,使很多学习者无法接受甚至厌学,所以取得的成效并不明显,还有很多仍停留在形式上,并不能很好地解决向工人传授新知识的问题,对于未下过井的新员工更是难以直观地理解所讲到的煤矿井下设备和专业知识。煤矿井下漫游系统可以让未下过井的人员以 人称或第三人称的形式参与到系统场景中,通过在虚拟的井下巷道内漫游,直观地了解井下巷道构建、设备管理、安全注意事项等知识;同时也可以模拟真实操作机械设备的动作,这种交互式的教学体验能让学习者有真实的在井下操作设备一样的体验。

1,三维交互的出现— VRML

1.1VRML简介

VRML是一种用于建立真实世界的场景模型或人们虚构的三维世界的场景建模语言,被广泛地应用于网页的基础交互。但用VRML建立复杂的三维模型是相当繁杂和困难的,而且毫无直观性可言,所以如果要实现三维的虚拟与交互功能,就需要在3D制作软件中制作三维场景模型。作为三维制作软件中的翘楚,3Ds Max早期所在的Discreet公司当然也认识到了其中巨大的商机,并在程序中提供了大量的技术支持。

1.2 VRML在3Ds Max中的基本运用

在3Ds Max中完成场景模型的建立后,在导出时选择VRML97格式便可导出后缀名为WRL的文件,在浏览器中安装相关插件后,便可在浏览器中进行了观察。在3Ds MaxCreate面板的次级面板Helpers中,选择下拉选项中VRML97选项,3Ds Max提供了12种几乎包含所有虚拟现实功能的特有造型。比如:Anchor用来创建虚拟空间中的一个锚点造型,它用于VRML世界之间的链接;TouchSensor用来创建虚拟空间中的一个接触传感器造型;Inline是一种虚拟空间构造技术,它允许其在分离的VRML文件中创建VRML世界中的每一个造型,然后其可以将这些造型组织起来构造出相当复杂的VRML世界。Inline类似于模块化的设计思想,它使得你不必进行某些重复性的工作,从而极大地减轻了开发负担。

2,强大的 3D 交互制作软件

虽然VRML已经具备了基本的虚拟与交互功能,但对于我们比较复杂的煤矿井下整体架构的表现,如复杂模型、灯光、材质、角色等都还很难表现得完整,如要实现更复杂的碰撞检测、GUI等更是有所欠缺。尤其对于开发者,其非交互式的开发更是难以操纵。目前三维虚拟现实制作软件种类繁多,但目前市场上最活跃的虚拟现实软件当应属Unity Technologies开发的unity3d,Unity是一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director、Blendergame engine、Virtools或Torque Game Builder等利用交互的图型化开发环境为首要方式的软件,其编辑器运行在Windows和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone和Android平台。也可以利用Unity webplayer插件发布网页游戏,支持Mac和Windows的网页浏览。unity3d作为后起之秀,完美总结了前辈们的开发经验,其强大的地形功能可以让其快速地创建完美的地形场景,虽然unity3D以做游戏著称,但如果用其制作我们所需要的煤矿井下漫游及设备教学等方面却是游刃有余,尤其对于懂编程的人员非常容易上手,其自带的MonoDevelop编程工具功能也是异常强大。目前可以完美地支持C#、javascript、Basic.NET、CIL、C与C++等。

3,井下漫游系统的实现

要实现在井下巷道内的动作事件,首先需要在三维制作软件中(3ds max、maya等)做出基本的巷道场景模型,通过导出后缀名为FBX格式的文件,再导入Unity3D场景中便可。(需要注意的是,Unity3D不支持中文名,所以,在三维软件中制作场景模时,其文件夹存放地址和贴图文件命名都必须要使用英文或字母,贴图可在三维制作软件中调整好UV后烘焙出来,在Unity3D中可以直接拖入模型使用。导出时也需要适当设置,如是否加载动画、导出后模型的朝向等。)

3.1 导入场景(模型)

在Unity3D中,导入模型有很多种方法,即可以通过Assets菜单的Import Package命令导入;也可以通过直接拖入Assets视口中导入;还可以将文件直接复制到Unity项目文件中的Assets目录的相关文件夹下,Unity3D会自动将其转换为自身的文件。

3.2 导入角色及动画

在导入Unity3D中含有动画角色时,不需要导入含有单个动作的多个模型,只需要在一个模型上建立完整的多个动作,便可在Unity3D中以帧为节点将每段动画保存为单独的一个动作片段。导入角色后,在Assets视口选择此模型,然后在Inspector视口中将Rig菜单项的Animation Type下拉选项卡选择为Legacy,点击Apply应用后动画模型才能生效。接着进入Animations菜单项设置动画片段 ,如果要应用动画 ,必须勾选“ Imp ortAnimation”)点击Clips选项下的“+”“-”按钮可添加或删除一个动画片段,并可在下面的字符框中更改动画名称,选择其中一个片段,设置其起始帧“( Star”“End”)便完成了一段动画的定义,点击Apply应用设置。

现在假设在我们需要在按下“W”键后这个模型会沿着自己轴向前运动,同时播放一段已经定义好的走路动画“walk”,按下“S”键后向后走,按下“A”和“D”键会向左或右旋转(定义其行走方向),那么我们只需要很简单的几行代码就可以实现。(在做代码之前,我们需要先在Assets面板新建一个javascript,将其命名为move,双击会自动打开Unity3D自带的编程工具Monodevelop,如果不能自动打开,需对其进行设置 :

Edit-Pr eferences[1]ExternalTools)//定义移动和旋转的速度

ar MoveSpeed:int=5;var RotateSpeed:int=2;

function Update(){//如果按下W键

if (Input.GetKey(KeyCode.W))

{//模型位置向前移动5

t h i s . t r a n s f o r m . T a n s l a t e ( V e c t o r 3 .

forward*MoveSpeed*Time.deltaTime);

//播放动画片段walk

this.animation.CrossFade“( walk”);}

if (Input.Getkey(KeyCode.S))

{ t h is. t r a n sf o r m. Tr a n sl a t e ( V e c t o r 3 . f o r w a r d * -

MoveSpeed*Time.deltaTime);

this.animation.CrossFade“( walk”);}

if (Input.Getkey(KeyCode.A))

{this.transform.Rotate(Vector3.up*RotateSpeed);}

if (Input.Getkey(KeyCode.A))

{this.transform.Rotate(Vector3.up*RotateSpeed);}}

要在Unity3D中运用这段代码,只需将代码文件move拖放到(人物)模型文件上即可。将模型(人物)拖进调试窗口,按下播放键。此时,当按下键盘上预先设定的A、D、W、S键时,(人物)模型便会按我们代码的设定进行动作。

3.3 Unity3d中的刚体

煤矿井下巷道空间封闭性相对较强,为了让我们的人物模型穿墙而过或掉落地面,也就是出现穿帮的非现实世界可能出现的那类镜头,还必须为场景设置刚体,通过Unity3d的刚体检测功能来实现我们需要的很多交互功能。要实现简单的刚体碰撞,只需要选择需要参与碰撞检测的模型,然后点击Inspector面板的Add Component,在Physics选项中为其选择适当的刚体碰撞类型即可,此时参与碰撞的两个物体就会像真实世界里的物体一样发生仿真碰撞,而不会出现进入某个实心物体内部的现象,可以增加碰撞的真实性。

3.4 Unity3d中数据的交互

有数据交互才会有真实体验的感觉,所以,在使用Unity3d创建模拟场景时都要加入对 数据库的操作 。通过定义connectionString字符串、创建SqlConnection对象,我们可以在Unity3d中操作数据库,以便实时展示数据库中的数据信息。这样在漫游的同时也可以实时查看各个设备或系统的运行状态及参数。比如:当瓦斯探测仪的数据已经通过传感器提取了到数据库中,而交互系统与数据库也建立了连接,则当体验用户走到该瓦斯探测仪跟前时,如果探测仪数值超过了预先设定的界限,则会听到探测仪的报警,进而采取相应的应急措施。

4 结语

不论是从教育还是体验来说,一个三维虚拟、交互的场景都具有非常强大的吸引力,目前我们已经制作出了基础的井下漫游和简单的设备交互及数据实时展示,结合强大而日益完善的设计制作软件,我们将实现更 的动画体验及交互。针对我们煤矿工人这个特殊的群体,制作出以 人称或第三人称游戏娱乐为主要形式的教育教学工具,让其感受主动式的操作和毫无防备的知识技能渗透,所提供知识的接受率会大大提高。在培训和教育上也会上到一个新台阶。

(本稿由牧客数字创意研发部提供,如转载或引用,请注明出处)