张斯伟 北方工业大学
虚拟现实技术在安全宣传教育中的应用与研究
张斯伟 北方工业大学
虚拟现实技术是一项综合集成技术,涉及计算机图形学、人机交互技术、传感技术、网络技术、人工智能等领域,它利用计算机生成逼真的三维视、听、嗅觉等感觉,使人作为参与者通过适当的装置,自然地对虚拟世界进行体验和交互作用。
计算机系统;虚拟;应用
虚拟现实技术(Virtual Reality 简称VR)是系统仿真中新兴技术之一,实际上是一种可创建和体验虚拟世界的计算机系统。虚拟现实是利用电脑模拟产生一个三维空间的虚拟仿真环境,让使用者如同身临其境地参与到虚拟环境事件的发展变化中,从而获得最大的控制和操作整个事件的自由度。
虚拟现实技术的特点:
多感知性
所谓多感知性是指除了一般计算机技术所具有的视觉感知之外,还有听觉感知,力觉感知,触觉感知,运动感知,甚至包括味觉感知、嗅觉感知等。理想的虚拟现实技术应该具有一切人所具有感知功能。由于相关技术的感知功能仅限于视觉、听觉、力觉、触觉、运动等几种。
浸没感
浸没感又称临场感,指使用者感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。
交互性
用户对模拟环境内物体的可操作程度和从模拟环境得到反馈的自然程度。例如,用户可用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。
构想性
虚拟现实技术具有广阔的可想象空间,可扩宽人类认知范围,不仅可再现真实存在的环境,也可随意构想客观不存在的甚至是不可能发生的环境。
在对学生进行安全防火教育的时候,安全宣传教育部门会用文字,加上一些图片放在网上,或者将文字和图片做成展板放在校园、街道;或者做成动画刻成光盘发放给各单位,用视频播放。虚拟现实技术的出现给安全宣传教育带来了更直观、更生动、具有交互性、构想性、新颖的有效的宣传手段。
例如在对学生进行安全防火教育宣传中,会提出教学楼发生火灾时怎么办?会告诉学生判断风,朝逆风方向快速离开火灾区域;当楼道被烟火封死,关闭自己教室门通风窗、用湿毛巾堵住口鼻,将身上衣服浇湿,向楼下发出信息;千万不要从高层楼窗户往下跳;不能乘电梯,应沿防火安全通道朝楼下跑等安全知识。特别是对安全隐患的分析,易燃易爆堆放楼道由不明星火引起的火灾。上述情况完全可以用虚拟现实技术模拟出来,通过网络对学生进行安全防火教育,使学生身临其境感受安全防火知识,将会收到良好教育效果。
用虚拟现实技术,建立一个三维校园模型,包括校园外景和楼内的虚拟教室、楼道、楼梯。解决场景在不同视角、不同光照条件下的真实呈现问题,包括光感、阴影、烟雾、火的态势等。同一场景中的人物运动图像生成,同事呈现场景中所有可见人物的运动状态和面部表情、动作。
(1)利用3D MAX进行场景建模、人物建模与纹理映射,丰富现有的三维模型库。并采用通用接口将模型导入3D引擎服务器中。
(2)利用已有的3D引擎完成系统的基本功能。包括场景渲染、动作交互、音乐播放、流媒体播放、网络通信等。
(3)在现有3D引擎的框架下,研究新的算法、新的插件、新的模块,使场景更逼真,人物的动作和表情更丰富。
(4)编程实现方面:
借助“蓝牛”引擎,完成整个虚拟校园场景的搭建,用户通过注册、登陆、选取人物角色进入主场景,主场景主要包括以下功能:巡视检查校园、实时导航、三种浏览模式(无人、单人、多人)的切换、小地图的显示和隐藏、聊天信息的实时传送、全景导航。
1)虚拟校园整体架构
整个系统的后台采用JDK+TOM ACAT+MySQL架构,客户端采用Lyinux语言(类似于VRML)和JSP实现,蓝牛并不是传统Web页面的3D浏览环境,而是一个全新的使用标记语言(Lyinux)驱动的3D应用环境,这个标记语言可以产生华丽的3D效果并与用户互动,这一互动完全类似于DHTML中的用户互动,甚至结构也可以复用,唯一不同的是W eb Server输出的标记语言不再是HTML,而是Lyinux。
2)数据库搭建
数据库采用MySQL,建立了五个数据库表:Bbuilding、Building、In Building、Building Introduce和Reguser,其中Bbuiding存放教学楼、学生公寓、食堂、附属设施四大类,作为导航中的顶级菜单;Building存放所有的教学楼、学生公寓、食堂和附属设施,作为点击顶级菜单后弹出的一级菜单,此表和Bbuilding表通过Bbno相关联;InBuilding存放每一个建筑物所包含的场景,分别通过Bbno、Bno表Bbuilding和表Building相关联;Buiding Introduce存放每一个场景的介绍信息,通过点击相应的物体弹出该场景的介绍信息;Reguser记录了用户的个人信息,注册时用户信息自动写入该表,登录时系统读取该表中的信息。
3)注册和登录界面
采用JSP编写,注册简捷,登录方便。
4)人物角色选取
在UserLoginAction.java中调用selectAvatar.jsp实现不同人物角色的选择,而这些人物角色在main.jsp中分别EXTERNPROTO和DEF,其中selectAvatar.jsp调用了InstanceBone.cc6对不同的人物角色进行位置和骨骼的实例化。InstanceBone.cc6中定义了鼠标isOver和isClick人物角色时执行的脚本。
5)导航功能的实现
导航菜单有三级,点击第三级菜单人物会飞到指定的位置。通过从数据库中读取相对应的数据库表生成三级菜单,导航UI在menuBarProto.cc6中定义和实现,导航的跳转分为校园主场景和室内场景,校园主场景内的跳转由menuBarProto.cc6中的jumptoInside( )函数实现,通过从InBuilding中读取目标位置的坐标,和当前位置坐标进行getRotation( )获取飞行方向,然后执行MoveControl.cc6中的flyTo( )飞到目标位置。跳转到室内场景由menu BarProto. cc6中的jumptoOutside( )来实现,首先获取目标场景的url,然后通过navigate (url)跳转到目标场景。
6) 巡视检查校园的实现
巡视检查校园主要通过鼠标或键盘控制人物移动实现,在protoavatarControlMoveCtrl.cc6中,通过leftKey(a或左方向键)、rightKey(d或右方向键)、upKey(w或上方向键)、downKey(s或下方向键)分别来控制人物的4种状态:左转、右转、前移、后退;jumpKey为空格键,可以执行dojump( )函数,让人物跳一下 。其中,leftKey和rightKey调用函数turnState( );upKey和downKey调用函数moveState( )。
鼠标单击地面时执行single Click( ),调用show Target Transform( )和walkTo ( )函数,分别用来显示鼠标单击地面的动画和步行的动作;当鼠标双击地面时执行double Click(),调用show Target Transform( )和runTo( )函数,分别用来显示鼠标单击地面的动画和跑步的动作。
巡视检查校园过程中视角的控制主要由View Controller.cc6来实现,用鼠标左键按下可以左右拖动视角,鼠标右键按下则可以上下左右拖动视角,均通过keydown( )中的view Control( )函数来实现,在view Control( )中又调用mouse Position( )来实现两种视角控制中的光标显示和视角转动。鼠标中间的滚轮可以控制视角的拉近和拉远,在wheel ( )函数中通过调用zoom InOrOut (zoomin Key[0])和zoom InOrOut (zoomoutKey[0])来分别控制视角的拉近和拉远。
7)三种浏览模式的切换
对整个场景的浏览主要有三种方式:无人、单人、多人,主要通过menuBarProto.cc6中的modeChange( )来实现。无人模式下man Group Node. children[0].man Switch = -1,也就是角色本身的which Choice=-1,这样可以使得人物角色本身不显示,同时调用函数avatar Hidden(),使其它人物节点的man Switch = -1,这样就可以隐藏所有的人物。单人模式下,man GroupNode.children[0].man Switch =0,人物角色本身显示,同时调用avatar Hidden(),隐藏其它人。多人模式下,man Group Nod e.children[0]. man Switch =0,人物角色本身显示,同时调用avatar Visible(),显示其它人物角色。同时,在每种浏览模式中都定义了不同的步行和跑步速度,无人模式最快,单人和多人模式相对较慢。
随着虚拟现实技术在各个领域、行业中的应用与发展,虚拟现实技术在安全宣传教育中的应用是未来发展的必然趋势。通过连接一些控制设备与虚拟场景相结合,可使使用者感到振动、倾斜、烟雾、火势等感觉,好像把人带入真实环境中,对人产生很强的震撼力、注意力,难以忘怀的记忆,起到极佳的宣传教育效果。
[1] 郭轶,陈岱林,姜立,张雷. 基于虚拟现实的王维建筑造型和装修设计系统.计算机仿真.2008.11242-246
[2] 郑彦平,贺钧.虚拟现实技术的应用现状及发展.信息技术.2005,12.
10.3969/j.issn.1001-8972.2010.14.095