考慮到當今流媒體技術的流行程度,人們很容易忘記,按需、全球可用的應用程序曾經被認為是一個激進的想法。但隨著 AR 和 VR 的普及,將流媒體推得更遠的競爭還在繼續。隨著對真實內容和消費級硬件的需求,一個關鍵的挑戰隨之而來:如何在不影響沉浸式體驗的質量和性能要求的情況下,構建在任何設備上都看起來不錯的應用程序?
為了幫助解決這個問題, Innoactive 的團隊已經將 NVIDIA CloudXR 流媒體解決方案集成到他們的 VR 應用程序部署平臺 Innoactive Portal 中。 SAP 、德勤、林德工程( Linde Engineering )和大眾汽車( Volkswagen Group )等客戶正在使用該平臺,隨時隨地為用戶提供無縫的沉浸式培訓。
Portal 是一個以用戶為中心的企業級部署平臺,用于管理和訪問 VR 內容,只需從任何設備上單擊一下即可。門戶的獨特之處在于能夠跨平臺和設備部署內容,包括 PC VR 、獨立 VR 和 PC 3D 應用程序。
使用NVIDIA CloudXR SDK 的服務器和客戶端組件,在云計算框架的改進下,門戶可以為 PC VR 和流媒體應用程序構建一對一耳機或其他低計算設備。最終用戶所做的就是從他們的庫中選擇應用程序來流式處理它。
克服 XR 的分銷瓶頸
圖 1 Innoactive Portal 一鍵式用戶界面,用于啟動虛擬現實 。
雖然還有其他幾種企業虛擬現實平臺,但門戶網站通過緩解 XR 內容分發過程中最關鍵的三個瓶頸,讓創作者和最終用戶都能輕松完成這一過程:
該平臺的 安全云基礎設施 為客戶提供了對其內容和用戶的集中控制,確保只有需要的人才能訪問。
one-click streaming 體系結構讓不熟悉虛擬現實導航的用戶可以輕松使用內容。
NVIDIA CloudXR 支持更復雜的分布模型,如門戶,導致幾個[VZX333 ],像一次構建應用程序的能力,并將其部署到任何設備,任何地方。
一段時間以來,使用 NVIDIA CloudXR 來流式處理 VR 應用程序在技術上是可行的,但 Innoactive 希望為臨時甚至首次使用 VR 的用戶提供此功能。為了實現這一目標,他們面臨著一系列挑戰:
當用戶想要開始云計算虛擬現實體驗時,他們需要一臺合適的 NVIDIA GPU 驅動的機器,可供他們按需使用。
這臺運行 NVIDIA CloudXR 的服務器不僅需要良好的性能才能執行渲染,還必須對全球用戶可用。
同時,盡可能了解資源也很重要。為了接觸到廣泛的受眾,所有這些都必須以最小的復雜性為用戶實現。
為了提供這種零摩擦體驗,需要在NVIDIA CloudXR SDK 的客戶端和服務器端構建上 NYNODICAL 。
為 NVIDIA CloudXR 構建可擴展的服務器體系結構
在服務器上,無論有多少用戶試圖訪問機器,或者這些用戶需要訪問的位置或時間,都必須確保每個用戶都可以按需使用由 NVIDIA GPU 驅動的機器。
依賴云服務提供商,比如 Amazon 網絡服務( AWS ) Microsoft Azure 對于計算資源來說是一個邏輯解決方案。然而,門戶網站的建設指導原則是作為一個開放平臺,支持所有類型的虛擬現實內容以及要部署的所有類型的環境。
云提供商的這種不可知論意味著需要一種服務,能夠在任何一種云服務上支持云渲染機。反過來,這為已經預先決定使用其中一種的客戶提供了最大的靈活性。它還使 Portal 能夠獨立于相應的提供商,切換到另一個延遲或性能更好的數據中心,從而為最終用戶提供最大的覆蓋范圍和性能。
因此, Innoactive 依賴于為任何云提供商構建帶有預裝軟件組件的定制虛擬機( VM )映像。它們使用一個名為 Packer 的工具,并允許使用相應云提供商的虛擬機規模集功能對生成的虛擬機進行規模調整。
Innoactive 為今天而建,為明天而規劃,確保這一過程可以在未來復制,并適應與新云提供商的合作。服務現在能夠在任何需要的時候和任何地方動態分配渲染資源。
圖 2 為云不可知的 NVIDIA CloudXR 服務器定制 VM 映像構建管道
在使用云渲染 VR 進行生產時,遠程渲染資源的成本必須盡可能低,以提供積極的商業案例。與此同時,確保良好的用戶體驗需要高水平的性能,而這反過來又可能很快變得昂貴。因此,門戶團隊的任務是找到最佳的成本和性能權衡。
除了虛擬機的規模之外,一個巨大的成本驅動因素是它的正常運行時間。目標是支付所需的費用,而不是更多。然而,等待太長時間啟動機器可能會讓啟動過程感覺笨拙或不及時。
由于門戶的按需設計,減少用戶等待時間是讓他們盡快進入云渲染體驗的關鍵。門戶會檢測用戶何時開始使用它,并準備虛擬機,以期待他們啟動虛擬現實應用程序。這大大縮短了他們啟動應用程序時的加載時間,從幾分鐘縮短到幾秒鐘。
云渲染會話完成后,門戶網站的云渲染編排服務會使用相應云提供商的端點自動刪除機器以進行縮放。這再次確保只支付正常運行時間,而不是死機時間。門戶可以根據用例調整其呈現功能。例如,它可以確保 GPU 渲染池在計劃在公司進行虛擬現實培訓的日子里足夠大,同時在低活動時最小化渲染池的大小。
要優化性價比,您應該了解客戶和地區差異。在會話過程中保持最小的延遲是保證良好體驗的最重要因素之一。通常,服務器離最終用戶越近,用戶輸入和流式應用程序之間的延遲和延遲就越低。
為了確保用戶被分配到最近的服務器,使用了多種算法,其中一個例子是 IP 查找,以縮小用戶的地理位置。未來,依靠 5G 網絡和邊緣計算將進一步提高性能。
圖 3 。門戶云渲染體系結構 。
通過前面提到的體系結構和優化, Portal 支持有意使用 NVIDIA CloudXR 遠程呈現 VR 應用程序的用戶。門戶負責在云中分配渲染資源,將期望的 VR 內容同步到遠程機器,并執行NVIDIA CloudXR 服務器,以便用戶可以連接。用戶只需選擇所需的 VR 內容。
雖然它本身提供了價值,但擁有一臺預配置的、隨時可以滾動的遠程渲染機只是等式的一半。它仍然要求用戶啟動他們的流媒體客戶端,并通過輸入服務器 IP 地址手動配置它,這對新手來說并不舒服。
將 NVIDIA CloudXR 客戶端構建到門戶
通過在客戶端應用程序中集成NVIDIA CloudXR SDK ,門戶取消了這些手動步驟以提供平滑的用戶體驗。為了讓用戶在整個流程的每一步都能得到更新,門戶網站使用了建立在 ASP 。網芯信號機 之上的 WebSocket 。客戶端應用程序的用戶界面也是使用 Unity 構建的,以便在提供良好用戶體驗的同時實現快速迭代。
這是伴隨著NVIDIA CloudXR SDK 的組合,它是用 C ++ NDK 編寫的,以及一個交互式的統一場景進入一個門戶客戶端應用程序的挑戰。其結果是一個單一的、模塊化的 Android 應用程序,具有多種活動,可以輕松加載到獨立的虛擬現實耳機上,如 Meta Quest 2 、 Vive Focus 3 或 Pico Neo 3 。
當遠程渲染服務器可用時,用戶界面將指導用戶。然后它通過NVIDIA CloudXR 客戶端自動連接到它,并確保 VR 應用程序在服務器上正確啟動,保證無摩擦地進入流式體驗。
業務邏輯層用原生 Android ( Java )編寫,包含與 Innoactive 后端服務來回通信的邏輯,并處理整個應用程序狀態。它使用 Unity 附帶的名為 UnitySendMessage 的專有協議更新用戶界面層,并在需要時初始化本機 NVIDIA CloudXR 客戶端庫。
本機 NVIDIA CloudXR 活動被擴展為使用 Java 本機接口( JNI )將生命周期事件傳回業務層。本文后面的示例代碼顯示了這一點。為了正確地將 native Unity 和 NVIDIA CloudXR 活動彼此隔離開來,這兩種活動都設計為在專用的 Android process 中運行。
圖 4 。NVIDIA CloudXR 客戶端應用層體系結構。
下面的代碼示例顯示了 Android 代碼與 NVIDIA CloudXR 之間的接口。首先, Android 代碼示例( Java ):
import android.app.Activity; public class MainActivity extends Activity implements ServerAvailableInterface { // load native NVIDIA CloudXR client library (*.aar) static { System.loadLibrary("CloudXRClient"); } static native void initCloudXR(String jcmdline); @Override public void onServerReady(String serverIpAddress) { // initializes the native CloudXR client after server ip is known String arguments = String.format("-s %s", serverIpAddress); initCloudXR(arguments); } public void onConnected() { // called by native CloudXR activity when it is successfully connected System.out.println("Connected to CloudXR server") }
第二, Vidia CloudXR 代碼示例( C ++):
#include#include #include // ... // called whenever the CloudXR client state changes void Client::UpdateClientState(cxrClientState state, cxrStateReason reason) { switch (state) { // ... case cxrClientState_StreamingSessionInProgress: OnCloudXRConnected(); break; // ... } } // Fired when the CloudXR client has established a connection to the server void Client::OnCloudXRConnected() { jmethodID jOnConnected = env ->GetMethodID(mainActivity, "onConnected", "()V"); env->CallVoidMethod(mainActivity, jOnConnected); } // ...
最終的客戶端應用程序提供了一個直觀的界面,其中包含了選擇所需 VR 內容所需的最少用戶交互。這個界面可以從獨立于虛擬現實的第二個屏幕設備(通常是筆記本電腦或手機)訪問。
通過門戶的實時通信,所有連接的客戶端(無論設備如何)都會在加載云渲染會話時顯示相同的狀態更新。用戶的內容在虛擬現實中準備好后,會收到推送通知。完成會話后,用戶可以直接繼續下一個流式會話,而無需退出客戶端應用程序。
將門戶網站的服務與擴展的 NVIDIA CloudXR 客戶端捆綁在一起,為用戶提供了一個全球可擴展的解決方案,用戶只需單擊一下即可從任何設備訪問其 VR 內容庫。 NVIDIA CloudXR 的門戶網站改變了客戶部署基于 PC 的虛擬現實的方式。在每個耳機類型的客戶只有一個平臺的情況下, Portal 現在可以處理復雜的問題。
易于使用的一鍵式前端支持他們擴展基于虛擬現實的用例,比如培訓經常是虛擬現實新手的員工。在技術層面上,客戶可以靈活規劃耳機的部署。由于提供高質量體驗所需的強大計算能力,它們不再局限于基于 PC 的虛擬現實。
現在,云機器的強大功能使得通過 NVIDIA CloudXR 門戶在獨立設備上提供高端渲染。
關于作者
William Cannady 是 NVIDIA enterprise XR 團隊的技術產品經理。他專注于 XR 產品的技術方面,與合作伙伴和客戶密切合作。
Benedikt Reiser 是 Innoactive 的首席技術官。他專注于將虛擬現實和 AR 等沉浸式技術引入企業,通過設計和交付解決方案,為最終用戶提供令人驚嘆的體驗,同時平穩、安全地處理底層的復雜性。
Gustavo Quiroz 是 Innoactive 的高級軟件工程師。他熱衷于 XR 、電子游戲和互動技術。他最近的一個項目是將 NVIDIA CloudXR 集成到企業平臺中,用于虛擬現實部署。
審核編輯:郭婷
-
Android
+關注
關注
12文章
3939瀏覽量
127614 -
接口
+關注
關注
33文章
8656瀏覽量
151471 -
NVIDIA
+關注
關注
14文章
5039瀏覽量
103314
發布評論請先 登錄
相關推薦
評論