羅翔 趙婭 王亮
摘要:該文從尋求適合多平臺發(fā)布的軟件著手,研究軟件性能、分析系統功能需求、進行系統技術平臺架構,研究系統實現中的關鍵技術,構建三維模型、虛擬角色,實現人機交互功能,搭建油田安全作業(yè)仿真培訓系統,并進行適應多平臺的系統發(fā)布。該系統能達到良好的培訓效果,且能有效的幫助油田作業(yè)工熟悉和掌握正確規(guī)范的油田作業(yè)流程,適宜于在油田范圍內推廣。
關鍵詞:仿真培訓;Unity 3D;三維建模;人機交互
中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2015)02-0243-03
Abstract: From seeking the software adapting to multi platforms publishing to start, the paper researches Software performance, analyses the function need of the system, carries out the architecture of technology platforms, studies the key technologies in system developing, constructs 3D models and virtual characters, realizes the function of human-computer interaction, builds the simulation system for training of oil-field safety task operation, publishes the system adapting to multi platforms. The system can achieve good training effect, can help the oil workers grasp the correct operation process, is suitable for promotion in the oil-field range.
Key words: Simulation training; Unity 3D; 3D modeling; Human-computer interaction
安全作業(yè)一直是油田的追求目標,為了增強油田工人作業(yè)操作的準確性,降低油田作業(yè)風險,油田安全作業(yè)培訓逐漸被重視并發(fā)展起來,各種油田安全作業(yè)仿真培訓系統應運而生。但這類仿真系統多以基于PC機固定終端并通過網絡連接的方式實現,學習時間及培訓地點固定,不能提供實時便捷的培訓。隨著平板電腦和智能手機的流行,移動學習開始興起,得益于無時間地點限制,發(fā)展迅猛[1]。在此背景下,基于移動終端的培訓軟件開始大批量研發(fā)。適應不同平臺的仿真系統開發(fā)方式截然不同,開發(fā)平臺之間又存在著激烈的競爭,給開發(fā)者造成了一定的困擾,開發(fā)者很難選擇從哪個平臺入手開發(fā),而把一款軟件從一個平臺移植到另一個平臺也往往需要很大的工作量。
基于以上考慮,本文從尋求適合多平臺發(fā)布的軟件著手,研究軟件性能、分析系統功能需求、進行系統技術平臺架構,研究系統實現中的關鍵技術,搭建完成油田安全作業(yè)仿真培訓系統,并進行適應Android移動終端和適應Windows固定終端的系統發(fā)布。
1 系統總體架構
1.1系統功能組成
對油田安全作業(yè)仿真培訓系統的功能需求進行分析,得到系統功能應包括:系統數據信息下載,培訓模塊選擇,用戶登錄,作業(yè)流程培訓,工具選擇,背景音樂開關,退出系統,培訓成績上傳,系統信息維護等。其具體的功能結構如圖1所示:
1.2系統技術平臺架構
根據油田安全作業(yè)仿真培訓系統的具體功能需求及發(fā)布需求,系統的開發(fā)架構于以下平臺之上:Unity 3D游戲引擎,3ds Max三維建模軟件,Photoshop CS圖片處理軟件,Oracle 10g數據庫。
3ds Max用來進行系統的三維模型構建;Photoshop CS進行圖片處理以用做三維模型的貼圖,輔助提高三維模型的真實性;Oracle 10g數據庫用來存儲系統的用戶信息、作業(yè)流程信息、培訓成績信息等;Unity 3D游戲引擎編程操作三維模型,從而完成油田各個作業(yè)流程的人機交互虛擬培訓功能。
系統技術平臺架構如下:
2 三維虛擬場景構建
三維虛擬場景構建采用的核心技術是三維建模技術,三維建模技術是依據現實世界中的對象及其屬性將其轉化為機器世界的數字化表示[2]。三維虛擬場景構建的流程包括:場景相關資料整理、三維模型構建、三維模型美化、三維動畫制作、虛擬場景集成及進一步利用紋理貼圖進行美化。
2.1 場景相關資料整理
為搭建油田各項作業(yè)的虛擬培訓環(huán)境,需要先構建各項作業(yè)所包含真實場景及作業(yè)工具的三維虛擬模型,模型構建的好壞直接影響到油田各個作業(yè)場景的真實性及運行速率。
在搭建三維虛擬模型之前,需要先進行場景相關材料的整理。拍攝工具照片、了解工具內外部構造、丈量工具尺寸等,盡可能多且詳細地獲取真實場景及作業(yè)工具信息,這樣構建出來的三維虛擬模型才會更加具備真實性。
2.2 三維模型構建、美化及動畫制作
在完成場景的相關材料整理之后,可著手利用3ds Max軟件進行三維模型的構建工作,其中包括工具模型和角色模型。構建三維模型時應注意模型的面數問題,模型面數越多代表構建的模型越精細,模型的真實度越高,但應考慮模型的真實性和場景運行效率之間的均衡,所以在保證模型盡可能和真實物體相像的基礎上,構建模型所用的面數越少越好。
模型構建完成以后,一般只是外形和真實工具相像,逼真度不高,其主要原因是缺乏和真實工具相似的物理屬性,這就需要我們在max中繼續(xù)對其進行美化,為其設置材質和貼圖,從而提高物體的逼真性,該功能可以利用max自帶的材質編輯器來完成[3]。該過程中需要配合使用Photoshop進行貼圖的處理。
角色模型在系統中要展示一定的動作,因此需要在max中為其進行動畫的設計和制作,以便后期導入Unity 3D中進行調用。
至此,模型構建、美化及動畫制作工作徹底完成。
2.3 虛擬場景集成
在max中構建完成的模型需要在Unity 3D中進行調用并進行虛擬交互功能的編程實現。但max格式的模型文件不可以直接被Unity 3D調用,需要將其導出為fbx格式的文件,才可以在Unity 3D中進行調用[4]。
將導出的fbx格式模型文件存放在Unity 3D工程文件夾下的Assets文件夾中,打開工程文件時Unity 3D會自動將模型、材質、貼圖及三維動畫導入。導入完成后將Project面板下的模型文件通過拖拽的方式放到Scene中,調整模型位置并對模型進行相關屬性的設置。
為了提高虛擬三維場景的真實性,需要在場景中添加燈光并對其進行設置。為完成系統中的人機交互操作,需要在場景中添加主攝像機等元素。
至此,虛擬場景的集成工作完成。
2.4 集成場景的進一步真實化
為了進一步提高模型的質感,提高場景的真實感,依據現實生活中真實物體的物理屬性,可以在Unity 3D中對虛擬模型進行紋理貼圖及Shader腳本的設置。Shader是隨著可編程渲染管線誕生的,為渲染管線中的特定處理階段提供算法。Unity 3D中內置了ShaderLab語言,可以設置模型材質和陰影。以法線貼圖為例:
3 系統仿真培訓功能的實現
3.1系統仿真培訓功能的設定
該仿真系統的培訓功能如下:
1)系統按照每項具體作業(yè)進行模塊劃分。每個作業(yè)模塊將該作業(yè)過程中所包含的每個操作工序劃分為一個培訓點,并根據培訓角色對培訓點進行相關數據的分類存儲。
2)每個模塊均可以分角色登錄(角色劃分按照油田實際作業(yè)中作業(yè)工的職能來進行劃分)。
3)用戶登錄后系統自動從數據庫中調用該作業(yè)模塊中該用戶的操作工序培訓試題,用戶即可通過鼠標鍵盤等交互設備進行人機交互操作,完成該模塊作業(yè)流程的仿真培訓。
作業(yè)模塊中包含的操作工序試題類型分為三大類:文字選擇題、工具選擇題和物體選擇題。文字選擇題主要考核作業(yè)工在該作業(yè)模塊中符合作業(yè)流程的每一步操作工序內容。選擇正確的操作工序后,如果該工序不需要工具,則直接進行正確的操作工序內容動作播放;如果該工序需要工具,則進行工具選擇題的考核,需要用戶選擇正確的工具。用戶選擇完正確的工具后,進入物體選擇題,選擇該工具所要操作的具體物體。只有正確地完成了工具選擇題和物體選擇題,才可以進入正確的操作工序內容動作播放。重復以上過程直至完成整個作業(yè)流程。
4)作業(yè)模塊培訓完成后,自動計算用戶成績并提交進行數據信息的本地存儲。
5)通過成績上傳功能完成用戶培訓成績的服務器端入庫操作。
6)管理人員通過系統信息維護網頁來查看作業(yè)工的培訓情況,進行數據的統計與分析,掌握培訓情況并適時做出調整。
3.2 系統用到的關鍵技術
為完成系統的所有功能,在系統開發(fā)過程中用到了很多的關鍵技術,下面選取一些比較有代表性的進行闡述。
3.3.1 數據的存儲與傳輸
本文所開發(fā)的系統為適合不同平臺的單機版,系統所用的數據信息全部儲存在服務器端的Oracle數據庫中。在使用時用戶在客戶端先進行數據信息的下載,具體流程是將服務器端數據庫中所需的數據(如用戶信息、各模塊的操作工序信息等)封裝進行傳輸,再在客戶端進行解析,并寫入客戶端加密的txt文件中,供客戶端程序調用。
用戶運行客戶端仿真模塊,培訓完畢后相關數據存儲到本地加密的txt文件中,在有網絡連接時將該文件中的數據信息上傳至服務器上,服務器對數據信息進行拆解,并存入服務器端的數據庫中。
3.3.2 相機控制
仿真培訓系統離不開視點的交互,通過視點交互才能保證用戶正確地觀察和操作場景中的物體,本系統實現時采用攝像機來模擬用戶的視點,通過對相機位置及角度的控制來模擬人的視點變化。
在培訓時,隨著模塊操作工序的變化,用戶會隨著場景中的工具或者角色的位置變化而移動視點,即需要調整攝像機的位置和角度。本系統在模擬該功能時充分考慮到方法的通用性,為攝像機設置父物體;這樣當用戶的視點需要變化時,只需要更改攝像機的父物體,并進行適當的攝像機角度調整,即可達到準確變換視點來觀察物體的目的。方法描述如下:
3.3.4動畫控制
Unity 3D平臺可以引用max中的動畫文件,但是在導出時動畫和模型不能分離,模型不可以重復利用,并且會增大系統的內存占用。因此,本系統中對物體的動作控制大部分是通過直接在Unity 3D平臺上編寫功能代碼的方式來實現的,只是這種功能代碼只能針對某個具體物體進行,不可復用。因此,本系統在進行動畫控制時還利用了Unity 3D提供的兩種動畫控制組件:Animation和Animator,這兩種組件編寫的動畫可復用。
Animation是利用初始狀態(tài)和終了狀態(tài)來創(chuàng)建補間動畫,如虛擬場景中物體的移動、旋轉等簡單操作。動畫創(chuàng)建完成后命名保存,并在引用該動畫的物體代碼中直接調用,示例代碼如下:
animation.CrossFade ("rotate");//播放名稱為rotate的動畫
Animator主要用來進行動畫狀態(tài)的切換,在本系統中用它來進行虛擬角色的動作切換:由跑步切換為站立,由站立切換為打手勢等;這種動作切換比較連貫且不會有停頓的感覺。Animator和Animation結合,可以自由地對虛擬場景中的物體自由進行動畫狀態(tài)切換和動畫播放。
4系統的多平臺發(fā)布
Unity 3D具有良好的跨平臺特性,,系統模塊一次開發(fā)后,進行極少的代碼調整及發(fā)布設置,可發(fā)布為適合不同平臺的最終作品,如Windows、Android、Mac、Wii、iPhone和Windows phone 8平臺。還可以通過Unity web player插件發(fā)布為網頁版,運行于Mac 和Windows平臺之上。
本文所開發(fā)的系統,在進行適合不同平臺的代碼調整后,通過適合不同版本的發(fā)布設置,最終發(fā)布為適合Windows系統的單機版exe格式,運行在PC機固定終端之上;同時也發(fā)布為適合Android系統的apk單機版格式,運行在安裝Android系統的移動終端設備之上;無論哪種版本,運行結果均良好。
5 結束語
基于Unity 3D游戲引擎平臺開發(fā)的油田安全作業(yè)仿真培訓系統,逼真度高,運行穩(wěn)定,交互性良好,其適宜發(fā)布為多平臺可運行系統的特性彌補了當前油田培訓系統運行平臺單一的缺陷。發(fā)布于Android移動終端的版本具有不聯網隨時隨地可培訓的特點,深受在外作業(yè)油田作業(yè)工的喜愛。運行于兩種平臺之上的系統均能達到良好的培訓效果,能有效地幫助油田作業(yè)工熟悉和掌握正確規(guī)范的油田作業(yè)流程,防止誤操作引起的各種風險。同時,系統開發(fā)時完全依據油田作業(yè)規(guī)范進行,適宜于在油田范圍內推廣。
參考文獻:
[1]董健. 一款基于Unity3D的移動平臺游戲的設計[J]. 軟件工程師,2014,17(12):34-35.
[2]曲寶,趙婭,趙琦. 基于Virtools的虛擬家居漫游系統的設計與實現[J]. 計算機工程與科學,2009,31(12):130-133.
[3]劉金明,馬鐵民,王娜. 基于Unity3D的電動機虛擬仿真展示平臺設計[J]. 黑龍江八一農墾大學學報,2014,26(6):66-68.
[4]馬瑞. 基于Unity3D的多平臺三維虛擬數字校園的設計與實現[J]. 蚌埠學院學報,2014,3(4):13-16.