學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

主編邵偉發表於2021-05-10
U 醬陸續為大家推薦了動畫製作、實時光追、Shader Graph、FPS 遊戲製作的精品課程,掐指一算,當下熱門的 VR 製作怎麼能漏掉呢?

在 Unity VR 應用程式開發的過程中,有幾個容易混淆的概念,我們先來給大家做一下區分,它們是 OpenVR、OpenVR Desktop、OpenVR XR Plugin、SteamVR、SteamVR Plugin、OpenXR 以及 OpenXR Plugin。

以下內容均出自本次推薦的 VR 課程,心急的朋友可以直接拉至文末了解課程詳情。

OpenVR

OpenVR 是 Valve 公司開發的一套包含一系列 SDK 和 API 的工具集,旨在從驅動層級為硬體廠商提供軟硬體開發支援。硬體裝置製造商可以為裝置開發 OpenVR 驅動程式,以使裝置能夠執行在 SteamVR 平臺上。

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

雖然 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 代替,如下圖所示:

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

要使用 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 平臺提供的工具包。

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

OpenVR XR Plugin 目前需要手動從本地磁碟進行安裝,開發者可訪問網址:github.com/ValveSoftwar,下載該工具包的 .tgz 格式檔案,然後在 Package Manager 中選擇"Add package from tarball..."命令進行安裝。

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

另外,如果開發者使用 SteamVR Plugin 2.7.x 進行 VR 應用程式開發,則在外掛中已經包含了 OpenVR XR Plugin 工具包,可使用以上方式進行安裝而不用從網路重複下載,如下圖所示:

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

安裝完畢後,可以在 XR Plug-in Manager 中啟用並進行相關設定,如下圖所示:

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

SteamVR

SteamVR 是 Valve 基於 OpenVR 推出的一套 VR 體驗解決方案,以軟體客戶端形式存在,面向終端使用者,故也常被稱為 SteamVR 客戶端。

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

當執行或測試 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 中,可以下載該外掛的所有過往版本及預覽版。

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

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 硬體平臺進行互動,如下圖右側所示。

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

OpenXR 1.0 標準於 2019 年公佈,各大 XR 平臺開始逐步加入到支援 OpenXR 標準的行列,包括 Oculus Quest/Rift、Windows Mixed Reality、Unity、Unreal Engine、SteamVR 等目前主流的 VR 平臺和遊戲引擎。這就意味著,開發者將專注於應用程式的開發而不是各平臺的互動適配問題。

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

由上圖可見,OpenXR 集合了行業眾多頭部公司和組織參與制定標準,覆蓋了從 VR 到 AR、從軟體到硬體的廣闊範圍。

OpenXR Plugin

OpenXR Plugin 是 Unity 開發的符合 OpenXR 標準的工具包,旨在讓 Unity 開發者儘可能高效地將內容部署到更加廣泛的 XR 目標平臺上。開發者在 Unity 2020 中通過 Package Manager 搜尋"openxr"即可找到該工具包並進行安裝。

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

由於處於版本釋出的早期,所以目前通過廣泛測試的硬體平臺有限,Unity 聲稱目前無法測試或保證所有支援 OpenXR 的配置都能以最佳狀態執行,該工具包也在不斷完善中,後續會逐步增加支援的平臺。以下是截至當前經過全方位測試並被官方支援的平臺。

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

由於 OpenXR 只支援基於動作的輸入(action-based input),所以 OpenXR Plugin 可以直接使用 Unity 的 Input System 處理輸入和互動。如果開發者的專案正在使用特定平臺的工具包(如 MRTK、Oculus ),Unity 不建議啟用 OpenXR,因為許多廠商仍在為 OpenXR 新增支援。

以上內容完全來自於 Unity 社群博主邵偉,今天 U 醬要推薦的課程,正是該作者的《SteamVR 2.x 互動開發指南》。

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

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 等。

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清
圖片來源於課程

本課程硬體系統基於 HTCVIVE(亦適用於 Cosmos 精英套裝),軟體版本使用 SteamVR Unity Plugin 2.5、2.6.1、2.7.2,Unity 編輯器使用 2019.4 LTS 版本,少量內容使用 VRTK4,提供課程中涉及到的所有素材和專案原始檔。

適用物件

  • 高校師生
  • VR 開發初學者
  • 新晉 VR 開發團隊
  • 希望將專案升級使用 SteamVR 2.x 的開發者

關於講師

學習 VR 開發之前,這 7 個容易混淆的概念一定要理清

邵偉,Unity 價值專家(UVP),公眾號『XR 技術研習社』主理人,兩屆高通 Qualcomm XR 創新應用挑戰賽評委和技術導師,出版作品《Unity VR 虛擬現實完全自學教程》與《Unity 2017 虛擬現實開發標準教程》,著有多部 VR 開發相關視訊教程,累計錄製課時時長超 5000 分鐘,目前專注於 XR 技術教育培訓工作。


來源:Unity官方平臺
原文:https://mp.weixin.qq.com/s/AVGTHxFWe6tfoHxlE9Mvug

相關文章