技術探索

探索元宇宙開放框架-OpenXR標準

工業技術研究院 資訊與通訊研究所 邱建宏 薛德輝 陳建彰 李嘉和

OpenXR標準旨在簡化擴增實境(AR)與虛擬實境(VR)應用的開發

隨著元宇宙一詞的興起,2022的6月科納斯組織(Khronos Group)作為主辦單位與各界先驅成立了元宇宙標準論壇(Metaverse Standards Forum) [1] [2] ,科納斯組織自成立以來已制訂了許多業界所使用的開放標準 ,如Vulkan[3]、OpenGL[4]、WebGL[5]與glTF[6]等,特別的是元宇宙標準論壇本身並不制定標準,其成立宗旨在於鼓勵和促進元宇宙開放標準的開發;論壇活動涉及的範疇相當廣泛,從人機介面、互動式3D資產、逼真渲染技術到隱私權、金融交易等各項議題,並且仍不斷持續增加中,也因此論壇開放各大企業、標準組織、協會和學校一同參與貢獻,論壇將扮演協調需求和資源的角色來帶動整個元宇宙產業的發展,將會在每次討論中創造更多想法與機會。

在元宇宙標準論壇眾多會員中,包含了許多標準制定組織(Standards Developing Organization, SDOs),其中包含熟知制定Web標準的全球資訊網聯盟(World Wide Web Consortium, W3C)[7]以及科納斯組織,在與元宇宙所有關的標準中,本篇文章中將介紹由科納斯組織所制定的開放標準-OpenXR[8],OpenXR標準於 2019 年釋出1.0的規範[9],旨在簡化擴增實境(Augmented Reality, AR)與虛擬實境(Virtual Reality, VR)應用的開發,實現真正的跨平台開發體驗,目前已有許多知名平台供應商導入OpenXR規範。

基於OpenXR的設計理念,工研院資通所與電光所進行跨單位合作,將開放式平台框架導入透明顯示虛實融合應用以加速開發流程,在本文章接下來的章節中將帶您逐步揭開OpenXR標準神祕的面紗。

精彩內容

1. OpenXR 標準概述
2. OpenXR 標準產業導入現況
3. 透明顯示虛實融合應用

OpenXR標準概述

引述英特爾首席 XR 架構師同時兼任OpenXR 工作組主席-布倫特.因斯科(Brent E. Insko)對於標準的介紹:「OpenXR 是一種開放的、免權利金的應用程式介面(Application Interface, API)標準,可用於訪問支援VR或AR,或統稱為延展實境(Extended Reality, XR)之不同平台設備上的運行系統(Runtime System),其旨在簡化 XR軟體開發,使應用程式能覆蓋更廣泛的硬體平台而無需移植或重寫其代碼,隨後允許支持 OpenXR 的平台供應商訪問更多應用程式,隨著 OpenXR 1.0 規範的發布,XR 開發人員現在可以創建真正的跨平台 XR 體驗。」

為什麼需要OpenXR?

隨著產業技術發展,沉浸式體驗熱潮興起,市面上出現愈來愈多XR設備,每個設備都有自定義的API,造成XR API的碎片化。這對於應用開發者來說,要面臨的課題便是針對不同的XR硬體設備,必須使用不同軟體開發套件(Software Development Kit, SDK)進行應用程式開發或遊戲引擎移植,這將帶來額外且不必要的工作量,結果付出的是高昂的開發成本,也會限制市場的增長;對於硬體平台廠商來說,他們就必須說服應用程式開發商和遊戲引擎供應商支持他們的新設備,這就產生了「先有雞還是先有蛋」的問題,軟體開發商通常僅願支持市占率高的硬體設備,而要達到高市占率又需要有豐富且高質量的應用軟體與開發工具支持。

除此之外,XR API 碎片化也會給消費者帶來困擾,他們需要檢查自己喜歡的XR硬體設備是否能與他們希望使用的XR應用軟體相容,並且不保證目前使用的XR應用軟體是否還能與未來新的XR硬體設備相容。

OpenXR是一套由科納斯組織發起,聯合全球多家軟硬體大廠一起制定的開放標準,旨在解決XR API 碎片化問題,同時簡化XR應用軟體開發。對開發者來說,基於此標準進行XR應用程式的開發,能使應用程式覆蓋更廣泛的硬體平台,同時無需移植或重新編寫代碼;而對於支持OpenXR的硬體平台廠商來說,能在產品發布時即可擁有可運行在其上的大量應用內容。

下圖中,圖1左側為引入OpenXR標準之前的狀況—VR/AR應用程式和引擎必須使用每個平台獨有的SDK和API,新設備同樣需要特定驅動程序。而在引入OpenXR標準以後,將統一由OpenXR提供的跨平台高性能應用程式介面與眾多XR硬體平台進行互動,如圖1右側所示。

圖1 引入OpenXR標準框架的前後對比(圖片來源:科納斯組織)

簡言之,XR API 碎片化降低了VR/AR設備的泛用性,也增加了XR應用軟體開發成本,限制了應用的市場增長及XR設備的普及和創新。透過OpenXR標準化API,應用程式開發人員將可專注於創造令人驚歎的XR體驗,而無須花太多時間在解決如何使應用體驗可在無數硬體設備組合上發揮作用。不但如此,有了標準化API,設備供應商也能在其平台上很快享有更多可支持的應用內容,有更多機會可投資創造更豐富多元的體驗設備。消費者對應用內容與體驗設備也可擁有更多選擇權,創造對應用軟體開發商、硬體設備供應商、消費者體驗三者三贏的局面。

OpenXR標準發展現況

科納斯組織在2017年遊戲開發者大會上公布了一套全新的AR和VR的標準—OpenXR,随後在2019年7月29日正式發布了OpenXR 1.0版本,各大XR平台開始逐步加入到支持OpenXR標準的行列,包括目前主流的XR平台和遊戲引擎,並集合眾多軟硬體產業巨頭和組織參與製定標準,涵蓋了從VR到AR/MR從軟體到硬體的廣闊範圍。這就意味著,開發者將可專注於應用程式的開發,而不是各平台的互相調適問題。

OpenXR 介面架構與組成

OpenXR 介面架構如圖2所示,其標準API包含兩部分:

圖2 OpenXR 介面架構(圖片來源:科納斯組織)

應用程式介面(Application Interface):

介於各類應用程式及開發引擎與各種OpenXR運行系統之間,提供應用程式開發人員和運行系統提供者來介接與實作該介面,用於定義和組合通用的跨平台功能。這使應用程式開發人員只要編寫一次代碼即可在各類OpenXR運行系統上運行。

設備外掛介面(Device Plugin Interface) :

介於OpenXR運行系統與不同XR設備之間,把XR設備的輸入輸出數據轉換成OpenXR API可讀寫的數據。未來XR設備製造商只需確保自己的設備驅動程式支持OpenXR 設備外掛介面,就有機會介接各類OpenXR運行系統;OpenXR運行系統也有機會掛載使用各類支持OpenXR標準的XR設備。但目前發布的OpenXR 1.0版本專注於支持跨平台應用程序,所以僅先針對應用程序介面標準進行定義,對於作為可選部分設備外掛介面標準就留待後續版本發布。

OpenXR運作架構與組成

OpenXR之運作架構如圖3所示,由以下4種元素組成:

圖3 OpenXR 高階示意圖(參考來源:科納斯組織)

OpenXR 應用程式(OpenXR Application):為一般開發者要進行程式開發的部分,透過OpenXR載入器使用OpenXR的各項功能。

OpenXR 載入器(OpenXR Loader):負責探索並載入系統上被啟用OpenXR 運行系統,並依據應用程式需求,在應用程式和運行系統之間載入任意數量可選的 OpenXR API 層。

OpenXR API層(OpenXR API Layer): 是增強 OpenXR 系統的可選組件,它們可在應用程式與運行系統互動過程中對現有的API函式呼叫進行攔截、評估、修改或插入額外功能。

OpenXR 運行系統(OpenXR Runtime):一個OpenXR運行系統控制著一個完整的XR系統,可支持一個或多個XR設備,每個作業系統上可安裝多個OpenXR運行系統,但在任何給定時間內僅能有一個處於啟用狀態。/p>

OpenXR標準產業導入現況

OpenXR這樣一套開放的API介面和裝置介面,讓XR應用程式能遵循一個共通的標準,跨越不同廠商的遊戲引擎、平台以及頭戴裝置也能暢行無阻,也得到非常多軟硬體廠商的支持與跟進,目前有愈來愈多的遊戲引擎和裝置廠商在自己的產品上加入對OpenXR的支援。[10]

圖4 支援OpenXR的軟硬體廠商(圖片來源:科納斯組織)

其中有針對OpenXR標準開發運行環境的公司,令硬體裝置可支援OpenXR提供的API:[11]
Microsoft (支援裝置:Windows Mixed Reality、HoloLens 2)
Oculus (支援裝置:Oculus Quest、Quest 2)
Collabora (開發Monado runtime,支援裝置:PlayStation VR HMD、PlayStation Move
controller、Razor Hydra、PSVR等)
HTC (支援裝置:Vive Cosmos series、VIVE Pro series、VIVE Focus 3)
Varjo (支援裝置: VR-3, VR-2 Pro, VR-2等)

也有在自己的遊戲平台或3D引擎上加入支援OpenXR plugin的公司,讓OpenXR開發的遊戲能加入遊戲平台的行列:
Valve (遊戲平台:Steam)
Epic (遊戲引擎:Unreal)
Open Source (3D引擎:Godot)

而今網路上也找得到許多開放原始碼的OpenXR 程式,其中quick3d-openxr就是一個可支援Qt Quick 3D的OpenXR應用程式[12]。這支程式經由正規的OpenXR程式的流程與Monado 運行環境進行溝通[13],如:首先建立instance、取得system以及建立session,再透過呼叫swapchain等rendering API在Monado 運行環境上繪製出3D物件,如圖5所示。

圖5 quick3d-openxr程式執行於Monado 運行環境的結果

智慧透明顯示虛實融合應用

隨著元宇宙產業興起與眾多業界龍頭加入討論開放標準,OpenXR 標準將有極大機會成為業界所遵循的XR應用系統標準。工研院資通所與電光所進行跨單位創新合作,遵循OpenXR 標準並整合透明顯示器設備,打造搭載前後鏡頭、人工智慧推論(Artificial Intelligence Inference, AI Inference 與虛實融合技術的新一代的透明顯示虛實融合應用系統,透過框架解決傳統各功能模組執行環境與相依性調適問題,如圖6所示,該框架可動態搭配功能模組、串接硬體設備達到加速應用開發,透過整合多樣態虛實融合核心功能模組化讓應用程式可根據使用需求自由搭配組合,並結合人工智慧技術提供準確定位來疊合虛實資訊,達到高互動性與提升沉浸感,目前模組化中的項目包含視覺追蹤模組、虛實融合模組與人因補償模組等,工研院團隊將藉由開放式平台框架在零售、車載與教育等多種領域中打造應用雛形。

圖6 智慧透明顯示虛實融合系統應用架構

結論

從元宇宙標準論壇成立的宗旨以及OpenXR標準的發展現況,可遙想未來元宇宙將具有開放甚至被賦予資料在不同元宇宙之間穿梭的能力,從OpenXR標準框架中可發現到這樣的精神,如同現實中的宇宙是共創共享的,需要仰賴制定標準來定義共同交流的語言。基於這樣開放式平台框架的設計理念,工研院資通所與電光所進行跨單位合作,將透明顯示虛實融合應用開發的流程加以簡化,並規劃未來結合邊緣雲技術,將成果應用在無限可能的元宇宙之中。

參考文獻

[1] Khronos Groups. Available at :https://www.khronos.org/
[2] Metadata Standards Forums. Available at: https://metaverse-standards.org/
[3] Vulkan. Available at: https://www.vulkan.org/
[4] The Open Graphics Library (OpenGL). Available at: https://www.khronos.org/opengl/
[5] The Web Graphics Library (WebGL). Available at: https://www.khronos.org/webgl/
[6] The Graphics Language Transmission Format (glTF). Available at: https://www.khronos.org/glTF/
[7] The World Wide Web Consortium (W3C). Available at: https://www.w3.org/
[8] OpenXR. Available at: https://www.khronos.org/openxr/
[9] The OpenXR 1.0 specification. Available at: https://registry.khronos.org/OpenXR/specs/1.0
[10] Companies Publicly Supporting OpenXR. Available at: https://www.khronos.org/openxr/
[11] OpenXR runtime. Available at: https://www.khronos.org/openxr/
[12] OpenXR module for Qt Quick 3D. Available at: https://github.com/technobaboo/quick3d-openxr
[13] OpenXR API Overview. Available at: https://www.khronos.org/files/openxr-10-reference-guide.pdf