• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Unity3D的虛擬現實家裝系統設計與實現

      2022-11-25 13:07:47陳春暉
      無線互聯科技 2022年17期
      關鍵詞:虛擬現實坐標系物品

      陳春暉

      (福建農業(yè)職業(yè)技術學院,福建 福州 350000)

      0 引言

      虛擬現實技術是現代科學技術發(fā)展中的重要產物,因為其獨特的技術優(yōu)勢,比如仿真性、互動性等,已經廣泛應用于多個行業(yè)和領域。通過將虛擬現實技術與家庭裝修系統進行融合,能夠對家庭裝修方案進行仿真模擬,在該系統的應用過程中,用戶能夠通過選擇裝修材料、布置方案等直觀地看到裝修效果。對于裝修企業(yè)以及設計人員而言,不再需要花費大量資金新建樣板房,具有良好的經濟效益,可以采用科學的系統設計方案,提高系統應用實效性。

      1 基于Unity3D的虛擬現實家裝系統功能與架構設計

      通常情況下,用戶對于家庭裝修系統具有如下幾項功能要求:(1)用戶管理功能。需要為用戶提供基礎的用戶注冊、用戶登錄以及密碼管理等功能。(2)家庭管理功能。需要為用戶提供家庭房間增加、房間刪除、房間查詢以及房間修改等功能。(3)房間物品管理功能。需要為用戶提供房間內的物品移動、物品旋轉、物品張貼、物品懸掛、顏色更換、材質更換等多項功能。(4)保存與加載功能。需要為用戶提供隨時保存房間的設計方案與效果加載功能,還需要提供不同方案的對比功能。(5)其他功能。為用戶提供留言、通信、評論等社交功能,在成本規(guī)劃完成后將這部分功能移動到其他應用程序中[1]。

      本次基于Unity3D的虛擬現實家裝系統采用經典的模塊化設計方案,主要包括UI模塊、業(yè)務邏輯模塊以及數據訪問模塊。在UI模塊中,主要包括用戶信息、房間信息、物體信息列表以及當前信息,通過動畫控制器對物體狀態(tài)進行模擬與設計;旋轉物體、張貼物體、懸掛物體、解綁物體、綁定物體、保存場景以及加載場景等通過射線控制模塊進行調整;系統基礎為數據訪問模塊,數據加載類模塊用于獲取和保存Json公式數據,針對模型、圖片以及圖形等資源采用資源加載模塊進行交互;中間模塊為業(yè)務邏輯模塊,其中核心為GameController,通過該控制器能夠實現對當前房間中的物體控制,比如移動、旋轉等,MonoBehavior能夠對整體房間場景進行加載與保存;GameController中每個房間或物品都能夠將控制類作為組件;控制類組件能夠記錄房間中物體的位置、材質以及顏色等,通過對物體顏色的操作實現物體狀態(tài)改變;同時提供射線類控制模式,主要功能是選擇當前房間中的物體;動畫控制器用戶將當前的物品狀態(tài)調整與UI動畫相結合;GameControlle中的OnGUI以及Update等內置程序能夠用于人機界面交互[2]。

      2 系統核心問題及解決方法

      2.1 家庭裝修中房間物品的選取

      在用戶利用計算機或智能手機訪問基于Unity3D的虛擬現實家裝系統時,采用鼠標、手柄等對物體進行交互,邏輯與在2D平面中的操作存在一定差異,鼠標、手柄在操作過程中得到的數據為屏幕中的二維坐標,場景中物體采用三維坐標,因此,需要對二維坐標進行處理。系統中應用Unity3D所提供的射線類Ray控制,具有模擬人眼視線的功能,Camera能夠向場景中發(fā)射一條射線,為了能夠明確射線遇到房間物品的具體情況,需要對房間中的物品增加Collide組件,保證能夠實現物品與射線的碰撞效果,能夠為用戶提供模擬場景。針對射線碰撞到的物體可以更改其外觀,還可以模擬出物品的選擇[3]。

      2.2 預制件問題

      在虛擬現實場景中,為了能夠展現出房間物品的具體情況,在本次系統設計中采用了多項細節(jié)處理方式,主要包括材質、貼圖、腳本處理邏輯以及動畫等內容。以虛擬現實場景中的人物為例,需要從3DMax中導出fbx格式人物模型,將其增加到虛擬現實場景中,在場景中導出材質與貼圖,并設置動畫控制器與動畫,將對應的控制代碼以組件形式增加到人物模型中,從而構成一個虛擬現實人物,但是該過程對于用戶而言,只需要對場景中人物進行移動。為了能夠提高系統開發(fā)便利性,在人物及其元素構成中將其預制成為一個整體,同時Unity3D提供了預制件的整體設計方案[4]。

      2.3 坐標調整問題

      在用戶采用鼠標、手柄等輸入設備對物體進行操作的過程中,需要完成二維坐標向三維坐標的調整。在Unity3D中具有多種不同的坐標系,比如本地坐標、視圖坐標等,世界坐標對應真實的東、西、南、北4個方向,本地坐標以物體自身作為基礎,對應真實的物品前、后、左、右,屏幕坐標為二維坐標,在用戶操作時能夠自動化實現對二維坐標的轉換,視圖坐標為虛擬現實場景中攝像機輸出的Viewport坐標。因為各個坐標系存在差異,在對應場景中物體的位移、旋轉等操作能夠實現自動化坐標換算。

      2.4 結果保存

      在虛擬家庭裝修完成后,需要將模擬方案保存,若存儲的為整體場景,因為整體虛擬現實場景中存在大量物品,每個物品還包含不同材質、顏色以及位置信息等,整體存儲量較大,根據計算,常規(guī)的家庭裝修虛擬現實結果模擬方案一般能達到500 M以上,采用以虛擬現實為基礎的保存方式不利于存儲與還原,為此,本次系統設計中應用Json實現關鍵數據的保存。Json是一項輕量級的數據格式,相比于XML,其靈活性較好,輸出存儲時間更長,從而能夠減少數據存儲與傳送;Json針對數組和對象采用不同的形式,數組采用“[]”,格式比如[“java”,”javascript”,”vb”],數值存儲時采用索引格式進行讀取;對象存儲采用{}格式,格式采用鍵值對的方式,比如{key:value,key:value,…},Unity3D支持Json功能。

      3 系統實現

      3.1 物體選取功能實現方式

      在虛擬現實場景中,選擇物體需要采用射線與碰撞檢測,在Unity3D中能夠采用RaycastHit實現,使用Cameta向屏幕射出一條射線后,在遇到碰撞檢測物體時,能夠從RaycastHit的屬性中獲取碰撞物體的信息。示例代碼為:

      RaycastHithit;

      Vector3 pos = Input.GetTouch(0).position

      Ray ray Camera.Main.ScreenPointToRay (pos);

      if(Physics.Raycast(ray,outhit)){

      return hit.transform;

      }

      Else return null;

      在上述代碼中,若射線為左手觸碰屏幕區(qū)域發(fā)出的射線,碰撞到物體后會返回物體中,反之返回null,從而實現對虛擬現實物體的選取。

      3.2 預制組件實現方式

      預制組件功能呈現出本次系統設計精益求精的思想,能夠為用戶提供更高質量的設計方案,通過采用更多的預制組件能夠有效提高系統質量以及開發(fā)效率。家庭裝修系統中包括家具、壁紙、地板以及電器等多項元素,難以將所有元素事先制作,因此,在系統應用過程中需要不斷豐富,可以采用預制件的方式實現。在選擇對應物品后,需要對物體進行移動處理,為了實現坐標中的效果,需要完成以下幾項動作:(1)從3DMax中導出fbx格式圖形。(2)在虛擬現實場景中增加Cylinder組件,并對其屬性進行更改,使其成為符合要求的圖形。(3)組合兩個圖形使其構成單個坐標軸。(4)將fbx格式圖形添加攪拌Cone.cs,該腳本能夠使得用戶操作在圖形中更改圖形的顏色或材質。(5)對坐標軸進行復制與旋轉,使其構成x,y,z3個方向,并對其他坐標軸材質進行調整,使得不同的坐標軸能夠表現為不同的顏色狀態(tài)。(6)提供ConeMan-ager,在選擇某個物品時,創(chuàng)建坐標軸副本,該副本與選種目標結合,同時在移動坐標軸時還能夠移動選定的物品。

      在上述流程結束后,能夠直接在Unity3D開發(fā)場景中將坐標軸拖動到Assert中,Assert中能夠顯示出制作完成的預制物品,預制物品還能夠在其他場景中使用;除三維坐標系之外,場景中的其他元素比如電器、家具等,都能夠采用預制件制作的方式,按照用戶的具體需求將其添加到場景中加載[5]。

      3.3 坐標系調整實現方式

      用戶在虛擬現實場景中對家庭裝修方案進行模擬時,需要對各種物品進行擺放,所以需要對物品的坐標系進行轉化與調整。其轉換流程為:(1)按照屏幕坐標機計算各點在世界坐標系中的位置。(2)將物品的本地坐標系前進方向量轉化為世界坐標系中的單體向量。(3)將物品的世界坐標系位置與向量融合。以上流程實現代碼為:

      Vector3 screenSpace = mCamera.WorhlToSereenPoint(transforni.position);

      floatx = Input.mousePosition.X;

      floatY =Input.mousePosition.Y;

      Veeror3 vector = new Vector3 (X,Y,screenSpace.z);

      Vector3 startPos = inCanlel,a.ScreenToW orldPoint (veetoF);

      while(Input.GetMouseBulton(0))

      {

      Vector3curScreenSpace=new Vector3(Input.mousePositio.X,Input.mousePosition.Y,screenSpace.z);

      //求出偏移量

      var offset = mCamera.ScreenToWorldPoint (curScreenSpace)- startPos;

      //將兩點之間向量投影到物體的上方

      offset= Vector3.Project(ofset,GetMoveDirection());

      //對目標位置增加一個偏移量得到新位置

      Transform.position+=offset;

      //重置開始點,為下一幀做準備

      startPos = transform.Position;

      //等待下一幀

      Yield return new WaitForFixedUpdate();

      }

      3.4 結果存儲實現方式

      在對家庭裝修的虛擬現實結果進行存儲的過程中,采用Json數據格式,因為家庭裝修系統需要與遠程服務連接與交互,實現對多種模型的下載,所以,需要在系統中記錄模型ID,不用將所有數據存儲,同時不需要保存模型細節(jié)。在模型之間對坐標系進行轉化,需要記錄物品的三維坐標;物品需要旋轉處理,所以需要記錄物品在各個軸的旋轉角度。最重要的是,物品需要和其他物品保持一定關系,比如圖片貼在墻面上、書籍放在書桌上等,這種位置關系也需要存儲[6]。以書籍放在書桌上的Json數據格式片段為例,即:{“ID”:”SO132”,”Name”:”Book1,”X”:” 200”,”Y”:”300”,”Z”:”165”,”RotateX”:”0”.” RotateY”:”0”,”RotateZ”:”0”,”Action”:” Put”,”Target:”Desk1”}

      在上述片段的最后一部分中,Action和Target表示與對象之間具體關系,在虛擬場景中存儲可以通過以下代碼流程實現:

      for(objectobjin場景 中的所有物體)

      {

      if(obj已經生成過 json)continue;

      if(obj有關聯對象)

      生成關聯對象的json

      生成當前對象的json;

      }

      若需要按照生成的Json對場景進行還原,按照物品的ID從網絡緩存中進行記載,如果網絡緩存不存在,則可以從服務器中進行加載,從而減少數據加載量,有效提升系統運行速度。

      4 系統評價

      本文所設計的基于Unity3D的虛擬現實家裝系統,在實踐應用中具有良好的效果,用戶能夠通過系統功能對家庭裝修方案進行實時調整,更加直觀地明確家庭裝修效果,且能夠靈活地對各項家具、電器等物品進行調整,還能夠對裝修材料進行材質、顏色等內容的挑選,家庭裝修模擬方案存儲結果數據較小,能夠提高各項資源加載速度,對于用戶以及裝修公司具有重要作用。因此,可以將本文所設計的系統應用在家庭裝修工作中,并結合實際情況對系統功能進一步完善,確保虛擬現實系統能夠發(fā)揮出更好的效果。

      5 結語

      綜上所述,本文設計開發(fā)了一套基于Unity3D的虛擬現實家裝系統,對其系統設計以及實現方式進行了全面闡述,希望能夠對我國家庭裝修行業(yè)起到一定的借鑒和幫助作用,利用虛擬現實技術進一步促進家庭裝修行業(yè)發(fā)展,為用戶以及裝修企業(yè)提供更加便利的工作條件。

      猜你喜歡
      虛擬現實坐標系物品
      稱物品
      “雙十一”,你搶到了想要的物品嗎?
      誰動了凡·高的物品
      解密坐標系中的平移變換
      坐標系背后的故事
      數學大世界(2018年1期)2018-04-12 05:39:03
      基于重心坐標系的平面幾何證明的探討
      中等數學(2017年2期)2017-06-01 12:21:50
      風口上的虛擬現實
      商周刊(2017年24期)2017-02-02 01:42:55
      虛擬現實技術向科幻小說借靈感
      海外星云(2016年7期)2016-12-01 04:18:00
      HTC斥資千萬美元入股虛擬現實設備商WEVR
      IT時代周刊(2015年8期)2015-11-11 05:50:37
      找物品
      信宜市| 大洼县| 万宁市| 建昌县| 巴彦县| 宜都市| 普陀区| 宽甸| 定边县| 田东县| 琼中| 景谷| 高阳县| 白山市| 永泰县| 新郑市| 河源市| 利津县| 寻乌县| 彭阳县| 辉县市| 威信县| 白朗县| 游戏| 托克逊县| 姜堰市| 磐石市| 肃南| 西峡县| 府谷县| 芒康县| 桂阳县| 增城市| 浦江县| 方山县| 昂仁县| 南江县| 逊克县| 那曲县| 涟水县| 巴青县|