使用NVIDIA CloudXR SD提供一键式VR流媒体

考虑到当今流媒体技术的流行程度,人们很容易忘记,按需、全球可用的应用程序曾经被认为是一个激进的想法。但随着 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 changesvoid client::updateclientstate(cxrclientstate state, cxrstatereason reason) { switch (state) { // ... case cxrclientstate_streamingsessioninprogress: oncloudxrconnected(); break; // ... }} // fired when the cloudxr client has established a connection to the servervoid 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 集成到企业平台中,用于虚拟现实部署。


区块链技术将助力去中心化互联网发挥在该领域的潜力
网传小米秘密研发新款OLED透明显示器,用于日常办公
深度拆解几款经典LED灯:价格疯狂跌半大揭秘
干簧技术课堂-第三课
PowerbyProxi推出综合智能手机无线充电方案
使用NVIDIA CloudXR SD提供一键式VR流媒体
原电池和电解池的区别
停机不收费!华为云 RDS for MySQL 降本有奇招
称重传感器有哪些种类
华为Mate X的惊艳设计,脑洞大开的未来手机
英飞凌将扩建印尼工厂
利用机器学习和新数据收集工具的结合,预测和定位野火
什么是工业路由器,它的工作原理是什么
iphone8最新消息,“苹果敞”富士康又流出iphone8模型,网友:可能会延期,但我还要买!
如何摆脱GPS的局限性来搜寻无人机
DGUS组态软件组中的图标变量显示如何使用
Signal tap逻辑分析仪使用教程
基于单片机与Lonworks的可视对讲系统设计
Facebook网站也出事了!几个主流产品Instagram和WhatsApp都无法使用
【科普】一文读懂以太网PHY芯片