學習 VR 開發之前,這 7 個容易混淆的概念一定要理清
在 Unity VR 應用程式開發的過程中,有幾個容易混淆的概念,我們先來給大家做一下區分,它們是 OpenVR、OpenVR Desktop、OpenVR XR Plugin、SteamVR、SteamVR Plugin、OpenXR 以及 OpenXR Plugin。
以下內容均出自本次推薦的 VR 課程,心急的朋友可以直接拉至文末了解課程詳情。
OpenVR
OpenVR 是 Valve 公司開發的一套包含一系列 SDK 和 API 的工具集,旨在從驅動層級為硬體廠商提供軟硬體開發支援。硬體裝置製造商可以為裝置開發 OpenVR 驅動程式,以使裝置能夠執行在 SteamVR 平臺上。
雖然 OpenVR 是 HTC Vive 預設使用的驅動程式,但它的開發目的是為了得到更多廠商的支援,例如,開發者也可以為 Oculus Rift 或 Windows MR 裝置開發基於 OpenVR 的軟體應用。
需要注意的是,OpenVR 雖然也提供了一套開發標準,但是相較於 OpenXR,其覆蓋範圍相對較小,另外,Valve 從 SteamVR 客戶端 1.16 開始,已經對 OpenXR 標準進行了全面的支援。
作為 Unity 開發者來說,並不需要太多關心 OpenVR 及其 SDK,因為這更多的是面向 VR 硬體平臺和遊戲引擎開發商來進行使用的。
OpenVR Desktop
Unity 需要各 VR 硬體平臺提供與對應底層驅動程式通訊的工具包來完成 VR 應用程式的渲染等工作,OpenVR Desktop 則是 OpenVR 提供給 Unity 使用的一系列元件,用於訪問 OpenVR 的 SDK。該工具包可以通過 Package Mananger 進行安裝,但僅存在於 Unity 2019.4 LTS 及其以前版本,在 Unity 2020 中被廢棄,轉而使用 OpenVR XR Plugin 代替,如下圖所示:
要使用 OpenVR Desktop,在將工具包安裝完畢以後,需要在 Build Settings 中開啟 VR 支援並選擇 OpenVR SDK。在 Build Settings 中開啟 VR 支援的方式,僅適用於 Unity 2019 及其以前的版本,而在 Unity 2020 及其以後的版本中,此方法也將被廢棄,轉而使用 XR Plug-in Management 進行管理。
OpenVR XR Plugin
OpenVR XR Plugin 與 OpenVR Desktop 的作用和地位相同,推出的目的是為了配合 Unity 2020 在 XR Plug-in Management 中管理 VR 平臺提供的工具包。
OpenVR XR Plugin 目前需要手動從本地磁碟進行安裝,開發者可訪問網址:github.com/ValveSoftwar,下載該工具包的 .tgz 格式檔案,然後在 Package Manager 中選擇"Add package from tarball..."命令進行安裝。
另外,如果開發者使用 SteamVR Plugin 2.7.x 進行 VR 應用程式開發,則在外掛中已經包含了 OpenVR XR Plugin 工具包,可使用以上方式進行安裝而不用從網路重複下載,如下圖所示:
安裝完畢後,可以在 XR Plug-in Manager 中啟用並進行相關設定,如下圖所示:
SteamVR
SteamVR 是 Valve 基於 OpenVR 推出的一套 VR 體驗解決方案,以軟體客戶端形式存在,面向終端使用者,故也常被稱為 SteamVR 客戶端。
當執行或測試 SteamVR 平臺支援的應用程式時,SteamVR 客戶端會自動開啟,為應用程式提供執行時環境。
除此之外,SteamVR 客戶端還提供 VR 控制器的配對、驅動更新、效能分析等功能。初次連線 VR 裝置以後,需要通過 SteamVR 客戶端進行裝置校準,即所謂的房型設定。在客戶端介面底部,列出了當前已經連線到系統中的裝置,包括頭顯、手柄控制器、基站、其它可跟蹤裝置如 Vive Trakcer 等。
SteamVR 可以通過 Steam 客戶端進行安裝,還可通過裝置供應商提供的安裝程式進行安裝。以 HTC VIVE 為例,購買後可訪問網址:https://www.vive.com/cn/setup/,選擇下載 VIVE 安裝程式,該程式將引導使用者進行裝置連線,完成相應驅動程式和 SteamVR 的安裝,對於初學者來說相對友好。兩種渠道安裝的 SteamVR 客戶端均能保證 VR 應用程式的執行,選擇其中一種即可,兩者亦可同時存在。
對於終端使用者,當前支援 SteamVR 的硬體包括但不僅限於以下裝置:
- Valve Index
- HTC VIVE/Cosmos
- Windows Mixed Reality
- HP Reverb G2
SteamVR 客戶端作為橋樑,介於 OpenVR 底層驅動與使用者之間工作—— SteamVR 獲取到使用者的輸入,如控制器按鍵的按下、頭顯在空間中移動等,將這些資料資訊傳遞給 OpenVR 進行處理,OpenVR 將處理後的資料通過 SteamVR 呈現給使用者。
SteamVR Plugin
SteamVR Plugin 是 Valve 公司提供給 Unity 開發者的開發工具,以 .unitypackage 檔案的形式存在,在使用方面符合一般的 Unity 外掛匯入流程,開發者可使用該外掛開發面向 SteamVR 平臺的 VR 應用程式。SteamVR Plugin 可由 Unity Asset Store 和 Github 下載安裝,所不同的是,Asset Store 中總是提供最新且穩定的 SteamVR 外掛版本,而在 Github 中,可以下載該外掛的所有過往版本及預覽版。
SteamVR Plugin 能夠與 SteamVR 客戶端進行互動,主要幫助開發者實現三項主要功能:為 VR 控制器載入呈現相對應的 3D 模型、處理控制器的輸入、根據使用者實際手部動作估算骨骼資料並通過這些資料在虛擬世界中呈現相對應的手部姿態。除此之外,SteamVR Plugin 還提供了一套便捷的互動系統(Interaction System),幫助開發者快速開發出常見的 VR 互動功能,該互動系統脫胎於 Valve 開發的《The Lab》VR 體驗應用。
OpenXR
隨著行業的發展,越來越多的 VR/AR 裝置被推向市場。這對於開發者來說,面臨的重要議題之一便是針對不同的 VR/AR 硬體平臺進行應用程式的適配,這將帶來一部分額外且不必要的工作量;對於硬體平臺廠商來說,新上市的產品面臨著內容嚴重不足、生態急需健全的問題。
OpenXR 是一套由 Khronos Group 發起,聯合多家行業頭部公司一起制定的開放標準,旨在解決 XR 平臺碎片化的問題,同時簡化 AR/VR 軟體的開發。對於開發者來說,基於此標準進行 XR 應用程式的開發,能夠使應用程式覆蓋更廣泛的硬體平臺,同時無需移植或重新編寫程式碼;而對於支援 OpenXR 的硬體平臺廠商來說,能夠在產品釋出時即可擁有可執行在其上的大量內容。
下圖左側為引入 OpenXR 標準之前的行業現狀—— VR/AR 應用程式和引擎必須使用每個平臺獨有的 SDK 和 API,新的裝置同樣需要特定的驅動程式。而在引入 OpenXR 標準以後,將統一由 OpenXR 提供的跨平臺高效能的應用程式介面與眾多 XR 硬體平臺進行互動,如下圖右側所示。
OpenXR 1.0 標準於 2019 年公佈,各大 XR 平臺開始逐步加入到支援 OpenXR 標準的行列,包括 Oculus Quest/Rift、Windows Mixed Reality、Unity、Unreal Engine、SteamVR 等目前主流的 VR 平臺和遊戲引擎。這就意味著,開發者將專注於應用程式的開發而不是各平臺的互動適配問題。
由上圖可見,OpenXR 集合了行業眾多頭部公司和組織參與制定標準,覆蓋了從 VR 到 AR、從軟體到硬體的廣闊範圍。
OpenXR Plugin
OpenXR Plugin 是 Unity 開發的符合 OpenXR 標準的工具包,旨在讓 Unity 開發者儘可能高效地將內容部署到更加廣泛的 XR 目標平臺上。開發者在 Unity 2020 中通過 Package Manager 搜尋"openxr"即可找到該工具包並進行安裝。
由於處於版本釋出的早期,所以目前通過廣泛測試的硬體平臺有限,Unity 聲稱目前無法測試或保證所有支援 OpenXR 的配置都能以最佳狀態執行,該工具包也在不斷完善中,後續會逐步增加支援的平臺。以下是截至當前經過全方位測試並被官方支援的平臺。
由於 OpenXR 只支援基於動作的輸入(action-based input),所以 OpenXR Plugin 可以直接使用 Unity 的 Input System 處理輸入和互動。如果開發者的專案正在使用特定平臺的工具包(如 MRTK、Oculus ),Unity 不建議啟用 OpenXR,因為許多廠商仍在為 OpenXR 新增支援。
以上內容完全來自於 Unity 社群博主邵偉,今天 U 醬要推薦的課程,正是該作者的《SteamVR 2.x 互動開發指南》。
SteamVR Unity Plugin(以下簡稱 SteamVR)在 2.0 及其以後的版本(2.x)中進行了完全的框架重構,原來使用 1.x 版本開發的專案將不能繼續適配。相較於 1.x 版本,2.x 引入了動作(Action)的概念,使用新的輸入系統來響應使用者的互動,目的是解決 VR 硬體碎片化的問題——開發者只需要進行一次開發,即可部署到適用於所有基於 SteamVR 的硬體平臺上。
新版本的難點在於動作(Action)的使用,重點在 Interaction System,通過該互動系統,能夠實現常用的 VR 互動。本套課程將通過 30+ 個課時,近 9 小時內容,深入講述 SteamVR 外掛中高頻元件的使用方法,結合例項實現常見的 VR 互動方式,同時,我們也將基於專案實戰經驗,介紹該外掛的一些特性,如場景跳轉時的 Player 管理、與通用渲染管線(URP)的適配、如何整合 VRTK4 等。
圖片來源於課程
本課程硬體系統基於 HTCVIVE(亦適用於 Cosmos 精英套裝),軟體版本使用 SteamVR Unity Plugin 2.5、2.6.1、2.7.2,Unity 編輯器使用 2019.4 LTS 版本,少量內容使用 VRTK4,提供課程中涉及到的所有素材和專案原始檔。
適用物件
- 高校師生
- VR 開發初學者
- 新晉 VR 開發團隊
- 希望將專案升級使用 SteamVR 2.x 的開發者
關於講師
邵偉,Unity 價值專家(UVP),公眾號『XR 技術研習社』主理人,兩屆高通 Qualcomm XR 創新應用挑戰賽評委和技術導師,出版作品《Unity VR 虛擬現實完全自學教程》與《Unity 2017 虛擬現實開發標準教程》,著有多部 VR 開發相關視訊教程,累計錄製課時時長超 5000 分鐘,目前專注於 XR 技術教育培訓工作。
來源:Unity官方平臺
原文:https://mp.weixin.qq.com/s/AVGTHxFWe6tfoHxlE9Mvug
相關文章
- C語言容易混淆的一些概念C語言
- 學習Python最容易犯的錯誤,這10條一定要記住!Python
- 學習程式設計之前一定要學習數學嗎? - CACM程式設計ACM
- Python學習方法(學python之前一定要看,少走彎路)Python
- 一定要學習的6個網站網站
- meminfo一些容易混淆的點
- Windows驅動開發入門 -- 理清基本概念Windows
- 學習技術一定要制定一個明確的學習路線
- oracle一些易混淆的概念Oracle
- 學習Python,一定要記住這三步!Python
- Java開發學習(一)----初識Spring及其核心概念JavaSpring
- 7大分類,40多個關鍵概念,入門機器學習要掌握的概念都在這裡了機器學習
- JDK動態代理筆記,學習框架必備知識,學習框架之前先學一下這個JDK筆記框架
- 學習java多執行緒,這必須搞懂的這幾個概念Java執行緒
- 【Android 開發 VR 實戰】三. 開發一個尋寶類 VR 遊戲 TreasureHuntAndroidVR遊戲
- 使用aspnetcore前後端分離開發,你一定要知道這個NetCore後端
- Python最容易犯的錯誤,一定要警惕!Python
- 想要提升Python的程式效能,這七個習慣一定要養成Python
- 深度學習入門必須理解這25個概念深度學習
- 零基礎學習Java,這些書一定要看!Java
- 想去學習Python,這些問題你一定要考慮!Python
- sql語句中where一定要放在group by 之前SQL
- 學習大資料,一定要了解大資料的這些用途大資料
- 這12個最新AI開源專案,你一定要收下AI
- 大資料學習書籍 這幾本書一定要看大資料
- SAP 幾款容易令初學者混淆的 HANA 解決方案
- 新媒體運營容易犯哪些錯誤?這些一定要記住
- 解讀三組容易混淆的Dockerfile指令Docker
- Java、PHP、Python哪個更容易學習?JavaPHPPython
- 零基礎入門學習Python,這13個Python慣用小技巧一定要收藏Python
- JMeter 介面測試實戰分享,這7個問題你一定要知道!JMeter
- Java 開發最容易寫的 10 個bugJava
- 一個web前端開發者學習Flutter 的歷程(一)Web前端Flutter
- 5個一定要學會的JavaScript新特性JavaScript
- C語言中容易混淆的const關鍵字C語言
- 程式碼混淆與反混淆學習-第二彈
- SAP 產品線中寫法很接近,容易混淆的幾個名稱
- 想做知識付費的你一定要做好這個