第5章 VR開發-5.4 Oculus Quest平臺_第1頁
第5章 VR開發-5.4 Oculus Quest平臺_第2頁
第5章 VR開發-5.4 Oculus Quest平臺_第3頁
第5章 VR開發-5.4 Oculus Quest平臺_第4頁
第5章 VR開發-5.4 Oculus Quest平臺_第5頁
已閱讀5頁,還剩25頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第5章VR開發

5.4OculusQuest平臺.目錄.1.Unity中OculusQuest開發包的安裝配置

.2.

OculusLink的使用.3.

虛擬場景中的基本移動.4.

加入控制手柄或手部模型.5.

加入碰撞檢測.6.

抓取物體.7.

隔空取物功能

OculusQuest是Meta(原臉書)公司旗下在虛擬現實方面的產品,在2019年5月正式發售。OculusQuest屬于一體式VR頭顯設備,OculusQuest頭顯和手柄如圖所示。其內核是Android系統,價格并不昂貴,有人認為它是能夠為普通大眾打開虛擬世界大門的一款產品。它與其他VR頭顯產品主要的不同在于,它通過頭顯上分布在4個角的攝像頭和內置算法,實現了六自由度的空間定位追蹤系統,無須任何外設與線纜,擺脫了對高昂價格的計算機設備的依賴,玩家可以在虛擬世界里更加自由地行動。并且,設備整體價格大幅下降,更加有利于被普通大眾接受。

(1)配置好計算機和Unity的Android開發環境。

注意,Unity發布設置“PlayerSettings”里面的“MinimumAPILevel”必須設為“APILevel19”或者更高級別,因為OculusQuest不支持低于APILevel19的Android系統。1.

Unity中OculusQuest開發包的安裝配置

(2)在Unity的AssetStore中搜索并下載免費的OculusIntegration,然后將其導入Unity。該資源是Oculus官方提供的開發SDK。OculusIntegration下載界面如圖所示。1.

Unity中OculusQuest開發包的安裝配置

(3)在Unity中,單擊菜單“Edit”→“ProjectSettings”打開工程設置窗口,Unity中配置Oculus平臺VR開發如圖所示。在“Player”選項卡中,找到“XRSettings”,勾選“VirtualRealitySupported”復選框,然后單擊“+”按鈕,在彈出的列表中選擇“Oculus”。這樣設置之后,結合前面步驟中導入的OculusIntegration工具包,Unity就具備了開發Oculus平臺應用的能力。1.

Unity中OculusQuest開發包的安裝配置

(4)從上頁圖中可以看到,有一個警告標志,說明這時在配置上還有一些問題。這是由于Unity的一些默認屬性設置和當前的Oculus有一些沖突的地方。解決方法很簡單,還是在這個界面中,打開“OtherSettings”,刪除“Vulkan”選項以適應Oculus的配置,如圖所示。1.

Unity中OculusQuest開發包的安裝配置

(5)經過以上操作,在Unity中就準備好了Oculus的開發配置。下面還需要從Oculus的官網生成并獲取開發App的許可證ID。

打開Oculus的官網,注冊開發者賬號并登錄,單擊網頁中的“CreateNewApp”按鈕,創建OculusApp賬號,如上圖所示。在打開的界面中輸入要創建的App的名稱,Platform平臺選擇“Quest(Applab)”,然后單擊“創建”按鈕,如下圖所示。1.

Unity中OculusQuest開發包的安裝配置

(6)在單擊“創建”按鈕之后,可以在界面左側菜單欄的“API”中找到新申請到的AppID,如圖所示。1.

Unity中OculusQuest開發包的安裝配置

(7)回到Unity中,單擊菜單“Oculus”→“Platform”→“EditSettings”打開平臺設置界面,將申請到的AppID復制到其中,并取消勾選“UseStandalonePlatform”復選框,設置Unity中的OculusAppID如圖所示。1.

Unity中OculusQuest開發包的安裝配置

(8)繼續單擊菜單“Oculus”→“Tools”→“OculusPlatformTools”打開平臺工具設置界面,在其中選擇“OculusQuest”,并復制、粘貼AppID,在平臺工具設置界面中設置相關屬性如圖所示。至此,Unity中的OculusQuest開發配置就完成了。下面還需要將OculusQuest頭顯的開發者模式打開,這樣才能從Unity中將開發好的應用導入OculusQuest設備。1.

Unity中OculusQuest開發包的安裝配置

(9)啟用OculusQuest頭顯,并找一臺手機,打開手機的藍牙和定位功能。然后在手機上安裝并運行Oculus官方App,在手機上打開OculusQuest頭顯的開發者模式,如圖所示。單擊“Settings”按鈕進入設置界面,手機會自動查找附近的頭顯并連接,圖中2號框所示的就是連接正常后顯示出來的頭顯名稱和信息。再單擊3號框處的“MoreSettings”按鈕,進入下一級設置界面。單擊4號框處的“DeveloperMode”按鈕,進入再下一級界面。設置打開5號框處的“開關”。這樣,OculusQuest頭顯的開發者模式就被打開了。1.

Unity中OculusQuest開發包的安裝配置

(10)將打開了開發者模式的OculusQuest頭顯用數據線與計算機相連,然后單擊Unity的菜單“File”→“BuildSettings”打開設置窗口,在“RunDevice”中可以看到與計算機相連的頭顯名稱。單擊“BuildAndRun”按鈕,就能將Unity中編輯好的場景發布到OculusQuest頭顯中運行并觀察效果了。直接從Unity中發布應用App到OculusQuest頭顯中,如圖所示。1.

Unity中OculusQuest開發包的安裝配置

直接使用前面的方法開發Quest應用時,會感覺很不方便,因為在Unity中直接運行應用是看不到任何效果的。每次都只有通過單擊Unity中的“BuildAndRun”按鈕對整個工程進行發布并輸出、安裝到OculusQuest頭顯中才可以看到效果,相當費時費力。為了解決這種問題,同時也為了能方便用戶同步計算機和OculusQuest頭顯數據,Oculus給出了一套解決方案——OculusLink。2.

OculusLink的使用

OculusLink需要軟件和硬件的配合才能使用。在軟件上,OculusQuest頭顯必須升級到最新的操作系統版本,同時和OculusQuest相連的計算機上也要安裝最新版本的計算機版OculusApp軟件,以保證計算機和OculusQuest頭顯在軟件上的匹配。圖所示的是計算機版OculusApp軟件界面。2.

OculusLink的使用

在硬件上,首先需要一根有一端是Type-C端口的USB3.0數據線,以連接計算機和OculusQuest頭顯。而且,這根數據線要質量比較好,以保證能實現大量數據的傳輸,若為一般質量的數據線則可能會無法使用OculusLink功能。另外,對計算機的硬件要求也比較高,需要顯卡是NVIDIAGTX970或者NVIDIAGTX1060以上的配置。

當軟硬件方面都滿足條件后,OculusLink會將Unity的編輯窗口和頭顯進行數據同步,在Unity中可以直接觀察效果,而不需要每次都發布程序到頭顯中。這樣就很大程度地提高了開發效率。2.

OculusLink的使用

(1)新建一個場景,在其中添加一個Plane作為地板,再添加一些三維物體作為參照物,簡單的三維場景如圖所示。3.

虛擬場景中的基本移動

(2)刪除場景中默認的攝像機。在Project面板中的“Assets”→“Oculus”→“VR”→“Prefabs”中,找到OVRCameraRig預設體,將其拖入場景并擺放在合適的位置。OVRCameraRig預設體就是Oculus針對虛擬空間制作好的一個虛擬雙目攝像機,它所攜帶的OVRManager組件作為關鍵組件,決定了OVRCameraRig使用的設備種類、輸入形式、渲染屬性、追蹤屬性和混合現實屬性等內容。OVRCameraRig預設體的OVRManager組件如圖所示。3.

虛擬場景中的基本移動

(3)保持預設體的默認屬性設置,這樣就已經實現了基本的Oculus的虛擬場景,可以直接發布應用,并在頭顯中觀看效果。這時可以實現轉頭觀察整個場景,并且因為Oculus的追蹤功能,用戶可以在安全范圍內走動,但是不能使用手柄功能,也沒有任何其他可以交互的東西。下面再介紹使用另外的預設體來實現這些功能。3.

虛擬場景中的基本移動

(1)將上一小節中的OVRCameraRig預設體刪除,換成同一目錄下的OVRPlayerController預設體。該預設體包含OVRCameraRig(作為子物體),并因為額外添加的CharacterController和OVRPlayerController組件,獲得了移動的能力。OVRPlayerController預設體的組件如圖所示。運行場景,這時用戶除了能自己走動以外,還能用左手柄的搖桿控制前后左右自由移動,這樣就擴大了用戶在虛擬世界的移動范圍。4.

加入控制手柄或手部模型

(2)和HTCVIVE一樣,Oculus也支持在虛擬場景中顯示用戶手上拿的手柄,以增加真實性。在

Project

面板中的“Assets”→“Oculus”→“VR”→“Meshes”→“OculusTouchForQuestAndRiftS”中,可以看到左、右兩個手柄的模型。將這兩個模型分別拖入

Hierarchy

面板中的OVRPlayerController預設體的LeftHandAnchor、RightHandAnchor物體下作為子物體,添加手柄模型如圖所示。4.

加入控制手柄或手部模型

運行場景,就可以看到左、右兩個控制器顯示在虛擬空間里,并且它們能跟隨著用戶拿著的真實手柄的運動而運動。OculusQuest手柄在虛擬場景中的樣子如圖所示。4.

加入控制手柄或手部模型

(3)Oculus不僅能顯示手柄,還能顯示手部模型。先刪除第2步中添加到場景中的手柄模型,然后在Project面板中的“Assets”→“Oculus”→“Avatar”→“Content”→“Prefabs”下,找到LocalAvatar預設體,將其拖入場景作為OVRPlayerController預設體下TrackingSpace物體的子物體,添加LocalAvatar預設體如左圖所示。

運行場景,就可以看到左右手模型,并且它們能跟隨著用戶手部運動而運動。顯示手的模型,如右圖所示。4.

加入控制手柄或手部模型

(1)找到場景中OVRPlayerController預設體的CharacterController組件,減小組件中“Radius”屬性的值。這是因為“Radius”屬性表示的是虛擬世界中代表用戶的虛擬人身軀的半徑,原來的默認值是0.5,這個值太大了,經常會使用戶感覺因為“身體太胖”而離其他物體還有一段距離就被擋住,需要將該值調得小一點,增加真實感。(2)在Project面板中找到CharacterCameraConstraint腳本,將其賦給場景中的OVRPlayerController預設體作為組件。將OVRPlayerController預設體的子物體OVRCameraRig拖入組件的“CameraRig”框中,并勾選“EnableCollision”復選框,最后將“CollideLayers”改為“Everything”,添加攝像機碰撞組件如圖所示。5.

加入碰撞檢測經過這樣的設置之后,用戶在虛擬世界中運動時就會被障礙物擋住,不會“一穿而過”了。

(1)選取需要設置被抓功能的物體,為其添加RigidBody組件以及OVRGrabbable腳本組件,保持它們的默認屬性即可。(2)

在Hierarchy面板中,找到OVRPlayerController下的LeftHandAnchor和RightHandAnchor物體,為它們添加SphereCollider組件,并將組件中的“Radius”屬性調整為0.05,勾選“IsTrigger”。(3)為LeftHandAnchor和RightHandAnchor物體添加OVRGrabber腳本組件,并勾選“ParentHeldObject”,以防止抓取物體并移動時產生物體跳躍抖動的錯誤。6.

抓取物體

(4)繼續修改RightHandAnchor物體的OVRGrabber組件。將RightHandAnchor的子物體RightControllerAnchor拖入“GripTransform”框中,再將“GrabVolumes”下的“Size”設為1,將RightHandAnchor物體本身拖入“Element0”框中,并將“Controller”設置為“RTouch”,OVRGrabber組件的屬性設置如圖所示。(5)對LeftHandAnchor物體按同樣的方式處理。然后運行場景,以實現抓取功能。6.

抓取物體

(1)將上個小節中修改后的OVRPlayerController物體刪除,從Project面板中將該預設體重新拖入場景,恢復到初始狀態。(2)在新添加進來的OVRPlayerController物體下創建一個空物體,并為這個空物體添加GrabManager和SphereCollider兩個組件。其中GrabManager組件由Oculus提供,有抓取操作的管理功能,其參數保持默認設置即

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論