亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Unity3D的交互式虛擬油庫培訓系統(tǒng)研發(fā)

        2019-01-17 07:21:56滿銀霜傘博泓杜勝男王衛(wèi)強
        石油化工高等學校學報 2019年1期
        關鍵詞:油庫腳本鼠標

        劉 洋,滿銀霜,傘博泓,杜勝男,王衛(wèi)強

        (遼寧石油化工大學石油天然氣工程學院,遼寧撫順113001)

        油庫中重要生產(chǎn)設備的操作流程極為復雜,所以培訓是員工上崗前必不可少的一個環(huán)節(jié)。如果在工作現(xiàn)場進行技術和設備上的培訓,不僅會受到運行工況的限制,還增加了培訓的風險。員工一旦在培訓過程中存在誤操作,后果不敢想象[1-2]。傳統(tǒng)的培訓方式由于僅限于文字、動畫,不具有實踐操作性,無法讓員工真正地掌握設備的操作流程[3]。

        Unity3D是一個綜合型的虛擬場景開發(fā)平臺,開發(fā)流程簡單、兼容性好,可創(chuàng)建近乎真實的油庫庫區(qū),使員工能感覺自己在工作現(xiàn)場進行培訓[4-5]。本文基于Unity3D開發(fā)平臺,以3Dmax等軟件為輔助工具,創(chuàng)建了一套集專業(yè)性、真實性、交互性等特點于一身的虛擬油庫培訓系統(tǒng)[6]。討論了系統(tǒng)的設計模式,實現(xiàn)了包括第一人稱視角漫游、區(qū)域小地圖、精確查詢、設備交互操作、重要工藝流程仿真等關鍵技術。

        1 系統(tǒng)整體框架

        交互式虛擬油庫培訓系統(tǒng)采用Unity3D為開發(fā)平臺,模型數(shù)據(jù)和腳本數(shù)據(jù)均存儲在平臺中,通過數(shù)據(jù)庫訪問設備屬性及其他信息,最終實現(xiàn)第一人稱視角的交互式培訓[7]。系統(tǒng)整體層次框架如圖1所示。

        圖1 系統(tǒng)整體框架Fig.1 Overall framework of the system

        2 系統(tǒng)功能設計

        交互式三維油庫培訓系統(tǒng)的目的是展現(xiàn)一個具有交互功能的虛擬油庫場景。進入虛擬場景后,培訓者以第一人稱視角在油庫中行走,同時可實時對重要設備進行屬性查詢、交互操作[8-9]。系統(tǒng)的人機交互界面簡稱UI界面,系統(tǒng)在UI界面上設置如下功能:精確查詢、集控室內的仿真操作。系統(tǒng)全部功能設計如圖2所示。

        圖2 系統(tǒng)功能設計Fig.2 Design of system function

        3 系統(tǒng)開發(fā)流程

        交互式虛擬油庫培訓系統(tǒng)開發(fā)分為兩步:一是系統(tǒng)的分析策劃和模型及場景的搜集、整理、制作;第二階段是在Unity3D中進行虛擬油庫搭建、UI界面的制作和交互功能的實現(xiàn),其流程如圖3所示[10]。

        (1)從培訓者的角度出發(fā),分析需求內容,確定系統(tǒng)將要實現(xiàn)的功能。

        (2)實地取景和收集設備資料。實地取景主要是到油庫現(xiàn)場去拍攝主要建筑和設備的外部輪廓和局部細節(jié)圖,作為模型的貼圖。收集的資料主要包括重要設備的工藝流程資料。

        (3)利用3Dmax等建模軟件進行油庫模型的制作,之后導出成Unity所支持FBX格式的三維模型文件[11]。

        (4)將三維模型文件導入到Unity工程中進行油庫的搭建;制作用戶界面,包含系統(tǒng)功能菜單及子功能的交互界面;系統(tǒng)交互功能的開發(fā)[12]。

        (5)最終生成可執(zhí)行的程序。

        圖3 系統(tǒng)開發(fā)流程圖Fig.3 Flow chart of system development

        4 系統(tǒng)關鍵技術

        4.1 漫游技術

        在使用交互式虛擬油庫培訓系統(tǒng)時,為了使用戶產(chǎn)生真實的培訓效果,用戶需要通過控制角色以第一人稱視角漫游整個庫區(qū)。交互式虛擬油庫培訓系統(tǒng)為實現(xiàn)上述功能,制作了角色控制器,在場景中代表了用戶本身。如圖4所示,首先在Unity3D的場景中加入Capsule(膠囊體)作為父物體,在該膠囊體上繼續(xù)創(chuàng)建攝像機(攝像機組件的視角即為程序運行后用戶視角)為子物體,觀察右下方,適當調整距離使用戶有良好的第一視角漫游體驗。

        腳本(script)是Unity3D核心組件,用來定義物體的各種行為。分析需求功能之后,將想要實現(xiàn)的算法和行為轉化為C#語言的腳本,綁定到角色控制器上運行程序即可。為了使用戶有更好的使用體驗,第一人稱移動腳本具有如下功能:采用了鍵盤鼠標配合操作的漫游移動方式,W、S、A、D分別控制角色的前后左右移動,Q、E控制角色視角的左右旋轉,鼠標的移動在一定范圍內與角色目光移動一致。實現(xiàn)上述功能腳本的部分重要代碼如下:

        if(Input.GetKey(Key Code.W))//按下W鍵

        {

        m_Transform.Translate(Vector3.forward *2.0f,Space.Self);//角色向前移動

        }

        if(Input.GetKey(Key Code.S))//按下S鍵

        {

        m_Transform.Translate(Vector3.back*2.0f,Space.Self);//角色向后移動

        }

        if(Input.GetKey(KeyCode.A))//按下A鍵

        {

        m_Transform.Translate(Vector3.left*2.0f,Space.Self);//角色向左移動

        }

        if(Input.GetKey(KeyCode.D))//按下D鍵

        {

        m_Transform.Translate(Vector3.right*2.0f,Space.Self);//角色向右移動

        }

        if(Input.GetKey(Key Code.Q))//按下Q鍵

        {

        m_Transform.Rotate(Vector3.up,-1.0f);//角色向左旋轉

        }

        if(Input.GetKey(Key Code.E))//按下E鍵

        {

        m_Transform.Rotate(Vector3.up,1.0f);//角色向右旋轉

        }

        圖4 角色控制器Fig.4 Role controller

        4.2 區(qū)域小地圖

        油庫場景較大,培訓者初次使用本系統(tǒng)時對建筑、設備位置不了解,漫游時不清楚自己的當前位置。系統(tǒng)利用渲染攝像機視角及分層顯示技術,可以讓用戶隨時看到自己所處位置,并且可以概覽油庫內建筑和設備的位置。首先創(chuàng)建攝像機置于油庫場景正上方,調整角度使其能看到油庫全景;其次在Unity中創(chuàng)建Render Texture(渲染貼圖)組件,在攝像機的檢視面板中將字段改為Render Texture,這樣Render Texture就會顯示該攝像機視角內的景象,在漫游界面上創(chuàng)建UI元素Raw Image作為小地圖顯示的載體;最后在控制器上添加足夠大的三維紅色球體,在屬性面板中把它劃分為新的Layer(層級),設置讓小地圖攝像機顯示該層級且主攝像機不顯示該層級,這樣在小地圖上易于觀察用戶位置,但是漫游視角內不會出現(xiàn)用作標識的紅色球體,如圖5所示。

        圖5 區(qū)域小地圖Fig.5 Regional small map

        4.3 交互技術

        傳統(tǒng)虛擬培訓系統(tǒng)功能設計較為簡單,僅限于漫游、查詢等,操作體驗單一,培訓效果不理想。交互式虛擬油庫培訓系統(tǒng)利用碰撞感應作為交互技術的核心,使用戶能夠對虛擬油庫內重要的設備進行操作,增強了真實感和培訓效果。碰撞器(Collider)是Unity3D組件的一種,模型感應外部刺激都要通過碰撞器實現(xiàn),只有添加了碰撞器模型才能響應鼠標操作。

        以交互功能中的手動開啟閥門為例,功能為鼠標左鍵按下后左移后閥門順時針開啟,同時油罐內原油按指定路線流動。如圖6、7所示,首先在閥門模型上添加盒式碰撞體,碰撞范圍調整為鼠標按下生效區(qū)域,然后用C#語言編寫閥門交互腳本及原油聯(lián)動兩個腳本綁定到閥門和原油模型上。閥門交互 腳 本 利 用 Input.GetMouseButton()、z=Input.GetAxis("Mouse X")方法實現(xiàn)鼠標在碰撞器區(qū)域內按下左鍵并且左右橫移后,閥門可以順逆時針轉動;原油聯(lián)動腳本void OnMouseDown()、transform.localScale=new Vector3(x,y,z)方法實現(xiàn)在手動將閥門開啟后,模型在規(guī)定方向上延伸來模擬原油流動。上述功能的部分關鍵代碼如下:

        if(Input.GetMouseButton(0))//監(jiān)視鼠標左鍵

        {

        float z=0;

        z=Input.GetAxis("Mouse X")*RoatedSpeed*Time.deltaTime;

        //鼠標X方向移動改變閥門Z方向角度

        if(roate)

        {obj.transform.Rotate(new Vector3(0,0,z));

        void OnMouseDown()//鼠標按下

        {roate=true;

        Debug.Log("collider");//碰撞體內發(fā)生事件

        }

        void OnMouseUp()//鼠標抬起

        {roate=false;

        Debug.Log("Out of collider");//離開碰撞體事件取消

        y=Time.deltaTime*speed1;//原油模型流動速度

        obj1.transform.localScale+=new Vector3(0,y,0);//y方向上延伸?

        圖6 盒式碰撞體Fig.6 Box collider

        4.4 數(shù)據(jù)庫訪問

        交互式虛擬油庫培訓系統(tǒng)中,數(shù)據(jù)庫存儲所有設備的重要參數(shù)及參加培訓人員的個人信息[14-15]。利用SQL Server 2010進行數(shù)據(jù)存儲和管理,以C#腳本實現(xiàn)與Unity3D通信。實現(xiàn)過程如下:在Unity安裝目錄下找到System.Data.dll文件,將該文件復制Unity工作空間下的Asset文件夾內,之后在VS開發(fā)環(huán)境下添加此引用(System.Data),數(shù)據(jù)庫的數(shù)據(jù)就可以被Unity程序訪問。具體讀取數(shù)據(jù)的形式需要鏈接數(shù)據(jù)庫的腳本Link SQL來規(guī)定,實現(xiàn)自動連接數(shù)據(jù)庫、讀取特定表、輸入數(shù)據(jù)、返回數(shù)據(jù)等。如圖8所示,儲油罐的信息以表的形式儲存到數(shù)據(jù)庫中,設備在數(shù)據(jù)庫中都有對應的編號,輸入編號后系統(tǒng)可以快速讀取設備數(shù)據(jù)并且顯示在Unity3D的交互界面,實現(xiàn)精確搜索。LinkSQL腳本關鍵代碼如下:

        Private string sqlAddress="server=127.0.0.1;database=3d;uid=sa;pwd=123456";//數(shù)據(jù)庫服務器地址、數(shù)據(jù)庫名稱、用戶名、密碼

        string strID = gameObj.GetComponent().text;//想要查詢設備ID在Inputfield區(qū)域填寫

        cmd.CommandText="SELECT id,type,nominal,volume,bore,height,manufacturer,oil FROM Table_1 WHERE name='"+strID+"'";//讀取該設備的數(shù)據(jù)

        string strSCCJ=str1+" "+str2+" "+str3+" "+str4+" "+str5+" "+str6+" "+str7;//數(shù)據(jù)返回的顯示方式

        GameObject.Find("searchtext").GetComponent().text=strSCCJ;//數(shù)據(jù)返回位置

        圖7 開啟閥門后油路展示Fig.7 Oil display after opening valve

        4.5 仿真操作

        油庫內重要設備的操作培訓難度較大,日常工作中很少有機會去操作這些設備。傳統(tǒng)仿真培訓多為二維數(shù)據(jù)仿真,不夠直觀。交互式虛擬培訓系統(tǒng)利用UI系統(tǒng)來制作油庫DCS系統(tǒng)畫面,按鈕組件(Button)的On Click功能來控制事件發(fā)生,綁定到油體模型上的腳本控制聯(lián)動,通過攝像頭切換技術進行現(xiàn)場監(jiān)控。用戶不但可以在控制面板上操作設備,還可以實時觀察現(xiàn)場工況,最大程度上理解自己的每一步操作。

        圖8 設備屬性精確搜索Fig.8 Accurate sear ch for device pr operties

        用繪圖軟件繪制倒罐操作的DCS畫面,將圖片作為UI面板元素Panel的背景。在畫面上添加Button組件,在組件最下方有一個“On Click”的區(qū)域,點擊該區(qū)域的“+”號,可以添加一個觸發(fā)項,觸發(fā)項前面可以選擇模型,之后添加讓模型變化的腳本,當點擊了該按鈕之后就會調用選擇對象的制定腳本。如圖9、10所示,離心泵開啟按鈕及現(xiàn)場畫面按鈕均添加了點擊事件和相應功能的腳本,實現(xiàn)仿真操作。上述功能的腳本主要代碼如下:

        Button btn= yourButton.GetComponent

        久久久久亚洲精品天堂| 日韩精品在线免费视频| 玩弄白嫩少妇xxxxx性| 色妞色综合久久夜夜| 9丨精品国产高清自在线看| 亚洲中文字幕视频第一二区| 久久天堂av综合合色| 亚洲男人的天堂在线播放| 色www亚洲| 久久久精品网站免费观看| 国产精品美女久久久浪潮av| 精品人妻在线一区二区三区在线| 国产精品二区一区二区aⅴ污介绍| 国内精品久久久久影院薰衣草| 台湾佬综合网| 国产精彩刺激对白视频| 日本师生三片在线观看| 亚洲精品成人网站在线播放| 精品一区二区三区在线观看| 美女被射视频在线观看91| 青青草成人在线播放视频| 国产又a又黄又潮娇喘视频| 亚洲爱婷婷色婷婷五月| 国产亚洲精品日韩香蕉网| 中文字幕一区二区三区乱码人妻| 色视频综合无码一区二区三区| 亚洲成人中文| 国产精品久久夜伦鲁鲁| 一区二区三区美女免费视频| 日本公妇在线观看中文版 | 国产午夜亚洲精品一级在线| 日本一区二区三区四区在线视频| 国产成人午夜无码电影在线观看| 亚洲熟妇20| 丝袜美腿av免费在线观看| 成年美女黄网站色大免费视频| 亚洲精品无播放器在线播放| 国产视频嗯啊啊啊| 国产精品成人av大片| 国产深夜男女无套内射| 亚洲成a∨人片在线观看无码|