刘 芳,王 聃
(1.东北石油大学计算机与信息技术学院,黑龙江大庆163318;2.哈尔滨石油学院信息工程与计算机技术系,黑龙江哈尔滨150027)
随着计算机和网络技术的飞速发展,油田采油井作业单位的软件信息系统不断完善,为进一步开展计算机应用奠定了基础。而新信息技术的科学应用,将会有效地提升油田采油井作业单位的效率和效益。采油生产最大的安全隐患来自于井控安全,不规范的操作是导致井控安全隐患的最突出因素。目前,针对采油井控安全操作培训的方法一般是采用观看录像、从书本上学习或上井跟班操作训练的集中培训方式,这样的培训方式有很多不便之处,如:培训成本高、周期长、培训手段单一枯燥、培训效果受限、抽象难于理解、工学矛盾突出。油田需要新的培训方式来针对性地解决以上问题,提升操作水平,实现操作标准化。
Virtools是虚拟现实的一种开发工具,提供可视化图形开发界面,开发人员通过拖曳所需要的行为模块就可以建构复杂、高效的应用程序,有效缩短开发流程,其特点是方便易用,应用领域广。Virtools拥有大量的交互模块可供应用,经编辑后的互动模块组合使用,可以组成一个具有解决某项功能或者应用.nms格式的单一交互模块,以方便重复使用、编辑[1]。
图1所示为仿真培训系统体系结构。系统实现可分为两个部分:场景建模、场景驱动。场景建模是将所要仿真的场景与对象通过数学方法表达成存储在计算机内的三维图形对象的集合。实时三维视景仿真系统采用了3Ds Max作为场景建模工具,完成场景模型的建立。通过三维交互开发工具Virtools完成交互系统的构建。为了提高建模的效率,还需建立专门的基本模型库和纹理材质库。最后将建完的三维场景模型存储到三维视景数据库中。
图1 体系结构Fig.1 Architecture
场景驱动是视景仿真程序根据所建立的场景模型以及场景中各类仿真对象运行时的状态参数来生成实时视景的程序[2]。视景仿真的结果以图像的方式输出,用户可以直观地观察到仿真对象的状态。在视景仿真过程中,仿真对象的状态参数可能是由用户的输入来控制,也可能取决于仿真对象自身的运动变化规律,或由系统中其他仿真系统的输出来决定。
一个虚拟现实系统的实现包括两个组成部分,一个是场景数据库的建立,另一个是三维交互引擎的开发,如图2所示,主要包括场景数据库的生成和交互引擎的设计两部分。
图2 系统架构图Fig.2 System frame diagram
采油井控仿真培训系统的设计与实现是以虚拟现实技术为基础,实现“人机交互”,即对用户的输入做出反应,交互性是虚拟现实技术的一个重要概念[3],它是指将输入设备获取的用户动作信息映射为虚拟环境中的动作,如对鼠标移动、键盘敲击事件的响应。本系统在现有技术和设备的基础上,建立一个基于Web的采油井控仿真培训系统;利用3DSMax建立抽油机安全操作系统的模型,对模型进行优化;将模型导入到Virtools中,实现三维场景控制,并通过浏览器进行仿真培训。
4.2.1 建立场景数据库
建立场景数据库是三维场景的建模过程[4]。模型建立的过程大体可分为两个部分:模型建立和模型优化。模型建立通过3DS Max等建模工具即可完成主要的工作,并结合Photoshop辅助制图,能够完成基本的模型建立、图片优化、纹理映射、光照及材质的应用等。
模型优化主要体现在模型实时生成和交互等方面,应用的技术包括LOD(Level of Details)和模型对象实例化等,这些技术可以使一个三维场景内有很多结构、形状、材质相同的物体,当物体之间的差别仅在于其位置、大小、方向的不同时,可以根据实际的情况,或者绘制粗糙的模型,或者根据实际情况实例化模型,使得三维显示效果更加逼真流畅。
图3所示为实例化后的三维模型。
图3 三维模型效果图Fig.3 3d model rendering
4.2.2 开发交互引擎
(1)自由视角引擎的实现:本文利用Virtools软件对三维场景进行引擎开发,首先介绍一下自由视角引擎的开发。要先为三维场景添加一个Camera,设置好其参数与IC值。如图4所示,为Camera模块的参数设置。
图4 自由漫游模块中的Camera脚本流程图Fig.4 Camera flow chart of the script in free roaming module
在这个程序模块中,是为新创建Camera添加脚本:①用Set As Active Camera模块把Camera设置成当前活动摄像机。②Switch On Key模块识别用户按下的键位。③ 通过Get Current Camera模块控制当前活动摄像机位置。④通过键盘上的方向键和Page Down和Page Up键结合Per Second模块与Translate模块及Rotate模块完成“漫游”系统场景实现视角转换和移动的操作,其中Per Second模块可以集合不同的模块设定旋转角度以及移动速度,如图5所示。图6为自由视角下的系统截图。
图5 Per Second模块与不同模块搭配使用的不同设置Fig.5 Different settings of Per Second module with different modules with different settings
图6 自由漫游视角观察图Fig.6 Angle of view free roaming figure
(2)交互操作引擎的实现:交互操作基本流程大概是以下几个部分:操作提示,选择工具,目标拾取,操作激发,传送信息。当用户把鼠标移到对象上时,就会在鼠标位置出现一个绿色圆圈,表示鼠标可以点击该对象并能触发一定的事件,如图7所示,为系统激活及操作识别的脚本。
图7 系统激活及操作识别的脚本Fig.7 Script of system activation and operations identify
具体实现:系统出现提示信息,当鼠标移动时,系统用2D Picking模块来拾取物体,当检测到拾取的是目标对象时,就用Text Display模块在通过Get Screen Orign模块和Subtraction模块计算得到的位置显示一个绿色圆圈,也就是以鼠标位置为中心显示一个绿色圆圈[5]。当用户按下鼠标左键时,系统拾取物体,并检测到是目标对象,然后用Get Cell模块从存储用户操作次序的数组中获取当前操作序号。在用户按下鼠标激活场景的同时也激活Prevent Collision(碰撞检测)模块来避免与场景中其他物体的碰撞,Object Slider模块使被选工具能够与本组其他物件产生相对滑动。
如果符合正确的操作次序,则执行Send Message模块将激活的信息传递到相应动作脚本,动作脚本结束后执行判断“本步骤是否完成”,如图8所示。
完成操作后用Set As Active Camera模块重新定位摄影机的位置,未完成操作同样使用Get Cell模块取出操作选择“跳过”和“观看正确操作”并结合Text Display模块和Set 2D Position模块显示在屏幕上固定位置。
图8 验证本步骤是否完成的脚本Fig.8 Script to validate the completion of this step
本文利用3D Max的建模技术和Virtools三维场景管理软件,设计并实现了三维井控仿真教育培训系统,该系统的应用将大大提高员工教育培训的效率,缩短培训时间,降低培训成本,对其他行业同类系统的设计与开发也有一定的借鉴意义。
[1] 刘明昆.三维游戏设计师宝典—Virtools开发工具篇[M].成都:四川出版集团电子音像出版中心,2005.LIU Mingkun.3 d game designer—The part of Virtools development tool[M].Chengdu:Sichuan Publishing Group,Electronic Audio and Video Publishing Center,2005.
[2] Ebert D S,Parent R E.Rendering and animation of gaseous phenomena by combining fast volume and scanline a buffer techniques[J].ACM Computer Graphics(SIGGRAPH;90),1990,24(4):357-366.
[3] 李长山,刘晓明,朱丽萍,等.虚拟现实技术及其应用[M].北京:石油工业出版社,2006.LI Changshan,LIU Xiaoming,ZHU Liping,et al.Virtual reality technology and its application[M].Beijing,Petroleum Industry Press,2006.
[4] 牟萍.虚拟校园建模、漫游技术研究及其实践[D].重庆:重庆师范大学,2006.MU Ping.Modeling and walk through teehnology of studying and praetiseing in virtua lCamPus[D].Chongqing:Chongqing Normal University,2006.
[5] Virtools SA.Virtools dev user guide[S].[s.l.]:Virtools SA,2001.