基于Unity 3D的钻井工程三维动态仿真
2018-11-30霍爱清李少辉李浩平
霍爱清,李少辉,李浩平
(西安石油大学电子工程学院 陕西省油气井测控技术重点实验室,陕西 西安 710065)
引 言
虚拟现实技术是一门新型的综合性信息技术,是科技领域中研究的一个热点,受到了社会的广泛关注[1]。随着虚拟现实技术身临其境的逼真效果逐渐被应用到各种工业仿真设计之中,对动态的、三维的、实时可交互的三维虚拟仿真系统的需求日益迫切[2]。在众多的虚拟开发软件中,Unity 3D软件是开发虚拟产品的一个非常好的平台,目前利用Unity 3D软件开发的虚拟系统已经在工业领域得到了广泛的应用。在石油钻井工程中,钻井过程相当复杂,人们要了解和学习整个钻井过程只能通过阅读书本、观看视频、讲师授课、参观设备等方式,这样的学习方式形式过于单一,缺乏趣味、缺少交互性[3]。利用 Unity 3D 来开发石油钻井动态仿真系统,可以使学习者视觉中的画面更逼真,具有三维性、交互性强。本文利用Unity 3D虚拟现实开发软件和3D max三维建模软件,结合Javascript 脚本语言编写实现交互的程序,实现了对三维虚拟井场的动态仿真,对实现石油工人的虚拟培训系统具有重要的意义。
1 虚拟系统结构的设计
基于Unity 3D的钻井工程虚拟仿真系统充分地利用计算机资源模拟实际井场设备场景,使整个仿真系统更加的逼真并实现人机实时交互,具有更好的发展前景[4]。本文所研究的钻井虚拟仿真系统主要包括石油井场漫游和石油钻井作业八大系统两大模块。其中石油井场漫游部分的功能是操作者可以通过键盘、鼠标任意的在场景中行走,利用键盘上的上、下、左、右键随意控制视角的前行、后退、左右行走,实现在井场的自由漫游。第二个模块分为钻井工程中起升系统、旋转系统等八大系统,操作者可以随意进入自己想要了解的系统,在每个系统里可以实现对井场设备模型的运动控制,为操作者对钻井工程的学习提供了方便。整个系统的结构如图1所示。
整个钻井工程作业的虚拟系统是一个比较复杂的虚拟操作系统,该系统采用基于Unity 3D的技术,并且结合三维建模软件3D max构建三维井场模型,以实现钻井设备模型在虚拟场景中的运动控制。虚拟系统开发流程如图2所示。
图1 钻井工程虚拟仿真系统结构Fig.1 Composition of virtual simulation system for drilling engineering
图2 虚拟系统开发过程Fig.2 Development process of virtual simulation system
在虚拟系统建立时,首先收集井场设备的资料、照片等原始数据,借助3D max软件和井场的原始数据对井场设备进行三维建模,并且对所建三维模型进行压缩、贴图、渲染等优化,将模型保存为Unity 3D 所兼容的Fbx格式[5]。将转化格式后的模型导入Unity 3D软件,对坐标轴、尺寸进行调整,对一些场景效果进行设置,完成整个虚拟场景的建立。然后,根据操作人员的培训需求、井场设备的实际操作运动,利用Unity 3D软件自身所带的脚本编程和GUI界面功能,实现对虚拟场景中的设备模型平移、后退、旋转等运动控制,为操作者创造出了一种“真实”的操作环境。
2 三维模型的建立和优化
2.1 三维模型的建立
钻井工程设备建模是整个动态仿真系统必不可少的部分,所建立模型的逼真程度直接影响着整个系统动态仿真的效果,因此,做好模型的建立对整个系统至关重要。石油钻井设备基本分为起升系统、旋转系统、循环系统等八大系统,它的每个系统均为多种模块组成,例如,起升系统由井架、大钩等一些设备组成[6]。因此,可首先使用多边形建模法对各个模块分别建立模型,然后将所建立的各个模型以组合、打包的形式合并成一个对象,从而构建出钻井井场的模型。这样的建模方式使各模型在Unity 3D中是分开的,对于部分零件进行脚本编程控制运动时不影响整个系统模型的状态。该系统使用3D max软件对钻井设备完成虚拟模型的建立,钻井转盘、井架的三维建模如图3、图4所示。
图3 钻井转盘的三维建模Fig.3 3D modeling of drilling rotary table
图4 钻井井架的三维建模Fig.4 Three-dimensional modeling of drilling derrick
2.2 三维模型的优化
井场三维模型的初步建立仅仅只是完成了井场设备的轮廓,这与实际井场设备相比,真实程度相差很多。为了使模型更加逼真,就需要对所建模型给予优化,增加虚拟模型的逼真程度。通过软件本身的材质编辑器对模型添加材质,为了降低场景的复杂度,对于井场环境的细节,比如背景墙等并没有单独建模,而是采用纹理贴图,用纹理图片替代复杂的模型结构。在模型的构建中还考虑到对模型的优化,通过采用删除不可见面、减少材质数量、压缩贴图等优化方法简化了模型[7]。优化后的钻井转盘、井架的三维模型如图5、图6所示。
创建完各个设备的基本模型后,接下来需要按照实际的钻井井场布局来搭建整个井场。 首先在3D max中新建一个文件,将已经建好的模型分别导入其中,其次对各个模型进行适当放缩,并用移动工具对各个设备进行位置的调整,最后按照井场实际的布局搭建虚拟场景(图7)。将搭建好的虚拟模型导出为FBX格式文件,为将虚拟模型导入Unity 3D平台中做好准备。
图5 优化后的转盘模型Fig.5 Optimized rotary table model
图6 优化后的井架模型Fig.6 Optimized derrick model
图7 井场基本场景Fig.7 Wellsite scene
3 三维动态虚拟仿真的实现
3.1 虚拟场景设计
3D max处理后的井场基本三维模型导出为FBX格式文件,并且复制到Unity 3D的资源文件夹Asset中,然后将FBX文件拖入Unity 3D的虚拟中,并且对井场进行旋转、平移、放缩等一系列的调整以及设置模型的相关属性。
为了使Unity 3D平台中的模型更加真实,可以通过Unity 3D本身的命令在场景中添加摄像机、沙漠地形、第一人称视角控制器、树木、花草、平行光源等其他虚拟环境必须具备的元素,对添加元素进行相关属性的设计。添加后的模型场景如图8所示。
3.2 虚拟交互性设计
3.2.1 碰撞检测
碰撞检测技术是用户在虚拟场景中行走的时候,碰到地面、墙壁、房间时做出的反应。因为在现实生活中角色根本不可能穿过墙壁、地面等一些障碍物,如果在场景中没有给模型设计碰撞检测,则角色会出现穿越障碍物的现象,场景也就失去了逼真性,交互的体验感也会下降,因此需要对场景中的模型进行碰撞检测。
图8 Unity 3D中井场基本场景Fig.8 Wellsite scene in Unity 3D
Unity 3D软件提供了多种碰撞器,如BoxCollider、SphereCollider、CapsuleCollider、MeshCollider等[8]。因此在Unity 3D中添加碰撞检测时,首先选择要添加碰撞的模型,然后在Unity 3D属性菜单中勾选Box Collider选项,即可解决用户穿过障碍物的问题。
3.2.2 井场交互性设计
虚拟交互性设计是虚拟现实的一大特点,也是整个虚拟井场最重要的部分,也正是因为有了交互式的操作,虚拟场景才能给人身临其境的感觉。在此平台中的交互性主要表现在实现自由漫游整个虚拟井场以及通过设置按键控制物体的运动。
(1)场景漫游功能的实现
井场的自由漫游可以使用户随心所欲的在虚拟场景中任何一个地方走动,实现井场的漫游功能,方便用户和虚拟场景之间的交互,更能给人一种身临其境的感觉。本文设计和实现井场的漫游功能是借助Unity 3D软件自身的第一人称视角控制器,可以直接控制镜头的运动。通过键盘的A、D、W、S、空格键分别控制镜头的左移、右移、前行、后退和跳跃,鼠标控制虚拟场景的旋转,同时可以设置改变自由漫游速度和鼠标旋转的角度。漫游效果如图9所示。
图9 场景第一视角漫游Fig.9 The first view roaming of scene
(2)钻井过程操作设计
为了使虚拟系统中设备运动更加与实际相符,需要场景的模型运动控制和实际井场的操作流程一致。石油钻井操作过程是一个相当复杂的过程,整个钻井工程分为起升系统、旋转系统等八大系统,并且每一个系统都有各自的操作流程。以起升系统为例,起升系统作用是起升和下放钻具、下套管以及控制钻压、送进钻具。在起升时,绞车滚筒缠绕钢丝绳,天车和游车构成副滑轮组,大钩上升通过吊环、吊卡等工具实现钻具的起升[9]。下放时,钻具或套管柱靠自身重力下降,借助绞车的刹车机构和辅助刹车控制大钩的下放速度[10]。根据上述的实际操作过程,在虚拟场景中进行设备的运动控制。Unity 3D软件平台支持JavaScript、C#和Boo脚本语言,本文选取脚本语言JavaScript进行脚本设计[11]。在实际过程中,钻柱一直处于运动状态,钻柱的主要运动状态有“上提钻柱”、“下放钻柱”和“旋转”动作,因此需要在界面设置“上提钻柱”、“下放钻柱”、“旋转”和“刹车”等按键从而实现相应功能。
利用GUI函数编辑软件按键,通过界面上的按键控制设备的运动,下面以模型钻柱的起升为例进行详细设计说明。
首先打开Unity 3D软件并且在菜单栏中创建JavaScript脚本文件,然后打开脚本编写程序并且编译保存,再将保存后的脚本文件添加给需要控制的运动模型。当所有流程完成后,鼠标点击运行之后,界面上就会出现“上提钻柱”、“下放钻柱”等按钮。当用鼠标点击按钮“上提钻柱”时,则场景中的钻柱向上运动,当点击“刹车”时,钻柱停止运动;当再点击“下放钻柱”时,场景中的钻柱模型向下运动,当点击“刹车”按键后钻柱停止运动。该脚本程序可以实现对钻柱上提下放的功能模拟,并且可以反映出不同时刻钻柱所处的位置,如图10、图11所示。
从图10—图11可以看出,通过对界面中按键的操作,场景中的钻柱发生了运动,在界面中实现了人机交互性,提高了虚拟场景的逼真程度。
图10 开始钻柱的位置Fig.10 Position of drill string after moving
图11 运动后钻柱的位置Fig.11 Position of drill string after movement
4 结 语
本文综合应用三维建模软件3D max和虚拟现实软件 Unity 3D软件,实现了对石油钻井井场的建模、漫游以及动态仿真等功能。操作者通过对界面按键的操作,可以控制井场模型的运动,从而直观地了解井场设备的运动情况,相对于传统简单的图片和视频展示,更能真实地体验钻井井场的情况。该研究可以应用到钻井虚拟教学的演示和培训中,解决现场培训时间长、培训成本高等问题,同时也为其他行业的虚拟动态仿真研究提供了参考。