霍愛清,李少輝,李浩平
(西安石油大學(xué)電子工程學(xué)院 陜西省油氣井測控技術(shù)重點實驗室,陜西 西安 710065)
虛擬現(xiàn)實技術(shù)是一門新型的綜合性信息技術(shù),是科技領(lǐng)域中研究的一個熱點,受到了社會的廣泛關(guān)注[1]。隨著虛擬現(xiàn)實技術(shù)身臨其境的逼真效果逐漸被應(yīng)用到各種工業(yè)仿真設(shè)計之中,對動態(tài)的、三維的、實時可交互的三維虛擬仿真系統(tǒng)的需求日益迫切[2]。在眾多的虛擬開發(fā)軟件中,Unity 3D軟件是開發(fā)虛擬產(chǎn)品的一個非常好的平臺,目前利用Unity 3D軟件開發(fā)的虛擬系統(tǒng)已經(jīng)在工業(yè)領(lǐng)域得到了廣泛的應(yīng)用。在石油鉆井工程中,鉆井過程相當(dāng)復(fù)雜,人們要了解和學(xué)習(xí)整個鉆井過程只能通過閱讀書本、觀看視頻、講師授課、參觀設(shè)備等方式,這樣的學(xué)習(xí)方式形式過于單一,缺乏趣味、缺少交互性[3]。利用 Unity 3D 來開發(fā)石油鉆井動態(tài)仿真系統(tǒng),可以使學(xué)習(xí)者視覺中的畫面更逼真,具有三維性、交互性強。本文利用Unity 3D虛擬現(xiàn)實開發(fā)軟件和3D max三維建模軟件,結(jié)合Javascript 腳本語言編寫實現(xiàn)交互的程序,實現(xiàn)了對三維虛擬井場的動態(tài)仿真,對實現(xiàn)石油工人的虛擬培訓(xùn)系統(tǒng)具有重要的意義。
基于Unity 3D的鉆井工程虛擬仿真系統(tǒng)充分地利用計算機資源模擬實際井場設(shè)備場景,使整個仿真系統(tǒng)更加的逼真并實現(xiàn)人機實時交互,具有更好的發(fā)展前景[4]。本文所研究的鉆井虛擬仿真系統(tǒng)主要包括石油井場漫游和石油鉆井作業(yè)八大系統(tǒng)兩大模塊。其中石油井場漫游部分的功能是操作者可以通過鍵盤、鼠標(biāo)任意的在場景中行走,利用鍵盤上的上、下、左、右鍵隨意控制視角的前行、后退、左右行走,實現(xiàn)在井場的自由漫游。第二個模塊分為鉆井工程中起升系統(tǒng)、旋轉(zhuǎn)系統(tǒng)等八大系統(tǒng),操作者可以隨意進入自己想要了解的系統(tǒng),在每個系統(tǒng)里可以實現(xiàn)對井場設(shè)備模型的運動控制,為操作者對鉆井工程的學(xué)習(xí)提供了方便。整個系統(tǒng)的結(jié)構(gòu)如圖1所示。
整個鉆井工程作業(yè)的虛擬系統(tǒng)是一個比較復(fù)雜的虛擬操作系統(tǒng),該系統(tǒng)采用基于Unity 3D的技術(shù),并且結(jié)合三維建模軟件3D max構(gòu)建三維井場模型,以實現(xiàn)鉆井設(shè)備模型在虛擬場景中的運動控制。虛擬系統(tǒng)開發(fā)流程如圖2所示。
圖1 鉆井工程虛擬仿真系統(tǒng)結(jié)構(gòu)Fig.1 Composition of virtual simulation system for drilling engineering
圖2 虛擬系統(tǒng)開發(fā)過程Fig.2 Development process of virtual simulation system
在虛擬系統(tǒng)建立時,首先收集井場設(shè)備的資料、照片等原始數(shù)據(jù),借助3D max軟件和井場的原始數(shù)據(jù)對井場設(shè)備進行三維建模,并且對所建三維模型進行壓縮、貼圖、渲染等優(yōu)化,將模型保存為Unity 3D 所兼容的Fbx格式[5]。將轉(zhuǎn)化格式后的模型導(dǎo)入Unity 3D軟件,對坐標(biāo)軸、尺寸進行調(diào)整,對一些場景效果進行設(shè)置,完成整個虛擬場景的建立。然后,根據(jù)操作人員的培訓(xùn)需求、井場設(shè)備的實際操作運動,利用Unity 3D軟件自身所帶的腳本編程和GUI界面功能,實現(xiàn)對虛擬場景中的設(shè)備模型平移、后退、旋轉(zhuǎn)等運動控制,為操作者創(chuàng)造出了一種“真實”的操作環(huán)境。
鉆井工程設(shè)備建模是整個動態(tài)仿真系統(tǒng)必不可少的部分,所建立模型的逼真程度直接影響著整個系統(tǒng)動態(tài)仿真的效果,因此,做好模型的建立對整個系統(tǒng)至關(guān)重要。石油鉆井設(shè)備基本分為起升系統(tǒng)、旋轉(zhuǎn)系統(tǒng)、循環(huán)系統(tǒng)等八大系統(tǒng),它的每個系統(tǒng)均為多種模塊組成,例如,起升系統(tǒng)由井架、大鉤等一些設(shè)備組成[6]。因此,可首先使用多邊形建模法對各個模塊分別建立模型,然后將所建立的各個模型以組合、打包的形式合并成一個對象,從而構(gòu)建出鉆井井場的模型。這樣的建模方式使各模型在Unity 3D中是分開的,對于部分零件進行腳本編程控制運動時不影響整個系統(tǒng)模型的狀態(tài)。該系統(tǒng)使用3D max軟件對鉆井設(shè)備完成虛擬模型的建立,鉆井轉(zhuǎn)盤、井架的三維建模如圖3、圖4所示。
圖3 鉆井轉(zhuǎn)盤的三維建模Fig.3 3D modeling of drilling rotary table
圖4 鉆井井架的三維建模Fig.4 Three-dimensional modeling of drilling derrick
井場三維模型的初步建立僅僅只是完成了井場設(shè)備的輪廓,這與實際井場設(shè)備相比,真實程度相差很多。為了使模型更加逼真,就需要對所建模型給予優(yōu)化,增加虛擬模型的逼真程度。通過軟件本身的材質(zhì)編輯器對模型添加材質(zhì),為了降低場景的復(fù)雜度,對于井場環(huán)境的細(xì)節(jié),比如背景墻等并沒有單獨建模,而是采用紋理貼圖,用紋理圖片替代復(fù)雜的模型結(jié)構(gòu)。在模型的構(gòu)建中還考慮到對模型的優(yōu)化,通過采用刪除不可見面、減少材質(zhì)數(shù)量、壓縮貼圖等優(yōu)化方法簡化了模型[7]。優(yōu)化后的鉆井轉(zhuǎn)盤、井架的三維模型如圖5、圖6所示。
創(chuàng)建完各個設(shè)備的基本模型后,接下來需要按照實際的鉆井井場布局來搭建整個井場。 首先在3D max中新建一個文件,將已經(jīng)建好的模型分別導(dǎo)入其中,其次對各個模型進行適當(dāng)放縮,并用移動工具對各個設(shè)備進行位置的調(diào)整,最后按照井場實際的布局搭建虛擬場景(圖7)。將搭建好的虛擬模型導(dǎo)出為FBX格式文件,為將虛擬模型導(dǎo)入Unity 3D平臺中做好準(zhǔn)備。
圖5 優(yōu)化后的轉(zhuǎn)盤模型Fig.5 Optimized rotary table model
圖6 優(yōu)化后的井架模型Fig.6 Optimized derrick model
圖7 井場基本場景Fig.7 Wellsite scene
3D max處理后的井場基本三維模型導(dǎo)出為FBX格式文件,并且復(fù)制到Unity 3D的資源文件夾Asset中,然后將FBX文件拖入Unity 3D的虛擬中,并且對井場進行旋轉(zhuǎn)、平移、放縮等一系列的調(diào)整以及設(shè)置模型的相關(guān)屬性。
為了使Unity 3D平臺中的模型更加真實,可以通過Unity 3D本身的命令在場景中添加攝像機、沙漠地形、第一人稱視角控制器、樹木、花草、平行光源等其他虛擬環(huán)境必須具備的元素,對添加元素進行相關(guān)屬性的設(shè)計。添加后的模型場景如圖8所示。
3.2.1 碰撞檢測
碰撞檢測技術(shù)是用戶在虛擬場景中行走的時候,碰到地面、墻壁、房間時做出的反應(yīng)。因為在現(xiàn)實生活中角色根本不可能穿過墻壁、地面等一些障礙物,如果在場景中沒有給模型設(shè)計碰撞檢測,則角色會出現(xiàn)穿越障礙物的現(xiàn)象,場景也就失去了逼真性,交互的體驗感也會下降,因此需要對場景中的模型進行碰撞檢測。
圖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 井場交互性設(shè)計
虛擬交互性設(shè)計是虛擬現(xiàn)實的一大特點,也是整個虛擬井場最重要的部分,也正是因為有了交互式的操作,虛擬場景才能給人身臨其境的感覺。在此平臺中的交互性主要表現(xiàn)在實現(xiàn)自由漫游整個虛擬井場以及通過設(shè)置按鍵控制物體的運動。
(1)場景漫游功能的實現(xiàn)
井場的自由漫游可以使用戶隨心所欲的在虛擬場景中任何一個地方走動,實現(xiàn)井場的漫游功能,方便用戶和虛擬場景之間的交互,更能給人一種身臨其境的感覺。本文設(shè)計和實現(xiàn)井場的漫游功能是借助Unity 3D軟件自身的第一人稱視角控制器,可以直接控制鏡頭的運動。通過鍵盤的A、D、W、S、空格鍵分別控制鏡頭的左移、右移、前行、后退和跳躍,鼠標(biāo)控制虛擬場景的旋轉(zhuǎn),同時可以設(shè)置改變自由漫游速度和鼠標(biāo)旋轉(zhuǎn)的角度。漫游效果如圖9所示。
圖9 場景第一視角漫游Fig.9 The first view roaming of scene
(2)鉆井過程操作設(shè)計
為了使虛擬系統(tǒng)中設(shè)備運動更加與實際相符,需要場景的模型運動控制和實際井場的操作流程一致。石油鉆井操作過程是一個相當(dāng)復(fù)雜的過程,整個鉆井工程分為起升系統(tǒng)、旋轉(zhuǎn)系統(tǒng)等八大系統(tǒng),并且每一個系統(tǒng)都有各自的操作流程。以起升系統(tǒng)為例,起升系統(tǒng)作用是起升和下放鉆具、下套管以及控制鉆壓、送進鉆具。在起升時,絞車滾筒纏繞鋼絲繩,天車和游車構(gòu)成副滑輪組,大鉤上升通過吊環(huán)、吊卡等工具實現(xiàn)鉆具的起升[9]。下放時,鉆具或套管柱靠自身重力下降,借助絞車的剎車機構(gòu)和輔助剎車控制大鉤的下放速度[10]。根據(jù)上述的實際操作過程,在虛擬場景中進行設(shè)備的運動控制。Unity 3D軟件平臺支持JavaScript、C#和Boo腳本語言,本文選取腳本語言JavaScript進行腳本設(shè)計[11]。在實際過程中,鉆柱一直處于運動狀態(tài),鉆柱的主要運動狀態(tài)有“上提鉆柱”、“下放鉆柱”和“旋轉(zhuǎn)”動作,因此需要在界面設(shè)置“上提鉆柱”、“下放鉆柱”、“旋轉(zhuǎn)”和“剎車”等按鍵從而實現(xiàn)相應(yīng)功能。
利用GUI函數(shù)編輯軟件按鍵,通過界面上的按鍵控制設(shè)備的運動,下面以模型鉆柱的起升為例進行詳細(xì)設(shè)計說明。
首先打開Unity 3D軟件并且在菜單欄中創(chuàng)建JavaScript腳本文件,然后打開腳本編寫程序并且編譯保存,再將保存后的腳本文件添加給需要控制的運動模型。當(dāng)所有流程完成后,鼠標(biāo)點擊運行之后,界面上就會出現(xiàn)“上提鉆柱”、“下放鉆柱”等按鈕。當(dāng)用鼠標(biāo)點擊按鈕“上提鉆柱”時,則場景中的鉆柱向上運動,當(dāng)點擊“剎車”時,鉆柱停止運動;當(dāng)再點擊“下放鉆柱”時,場景中的鉆柱模型向下運動,當(dāng)點擊“剎車”按鍵后鉆柱停止運動。該腳本程序可以實現(xiàn)對鉆柱上提下放的功能模擬,并且可以反映出不同時刻鉆柱所處的位置,如圖10、圖11所示。
從圖10—圖11可以看出,通過對界面中按鍵的操作,場景中的鉆柱發(fā)生了運動,在界面中實現(xiàn)了人機交互性,提高了虛擬場景的逼真程度。
圖10 開始鉆柱的位置Fig.10 Position of drill string after moving
圖11 運動后鉆柱的位置Fig.11 Position of drill string after movement
本文綜合應(yīng)用三維建模軟件3D max和虛擬現(xiàn)實軟件 Unity 3D軟件,實現(xiàn)了對石油鉆井井場的建模、漫游以及動態(tài)仿真等功能。操作者通過對界面按鍵的操作,可以控制井場模型的運動,從而直觀地了解井場設(shè)備的運動情況,相對于傳統(tǒng)簡單的圖片和視頻展示,更能真實地體驗鉆井井場的情況。該研究可以應(yīng)用到鉆井虛擬教學(xué)的演示和培訓(xùn)中,解決現(xiàn)場培訓(xùn)時間長、培訓(xùn)成本高等問題,同時也為其他行業(yè)的虛擬動態(tài)仿真研究提供了參考。