将虚幻引擎内容流送到多个平台
比较 HTML5、WebGL 和像素流送
| 简介
常见的办法是,首先确定目标受众可能使用的性能最低的平台,然后确定受众能够接受的质量级别,最后以此为基准开发内容。然而,这种方法的弊端是会普遍降低所有最终用户的体验。
而且在这类部署中,负责为最终用户显示实时内容的设备同时还需下载相关的数据和代码,并将结果渲染到屏幕上。将数据下载到设备中容易产生多种问题,比如为了减小下载文件的尺寸或者加快下载速度,有时不得不牺牲一些画面质量。
本文比较了多种可用方案,对允许以像素流送方式共享虚幻引擎体验的方案和工具进行了评估,旨在确保用户在使用基于虚幻引擎的非游戏类应用时,能够获得最高的画面质量和最佳体验。
| 发布内容时面临的挑战
在一些基于 WebGL 或 HTML5 技术的传统或现代解决方案中,显示内容的真实程度和交互体验取决于消费者的设备性能,特别是该设备的硬件性能、显示机制和操作系统。这就意味着如果要让内容尽可能地触及到更多用户,就要以性能最低的设备为基准开发应用程序,并在所有其它平台上共享该应用,或者针对各个平台开发出多个版本的应用程序,以便满足不同平台用户的需求。
在创建流送解决方案时,开发人员面临的一大挑战是如何通过多个通信渠道交付内容,并且无论最终用户使用哪种设备,都能保证画面的真实感以及交互性,并忠实还原品牌的外观和感受。要实现这一目标,就需要将共享应用程序本身与运行它的高端硬件分离开来,让用户的显示设备只负责显示画面。
用户体验的性能和因素
播放速度——内容本身可能需要针对实时性能进行优化。首先,你需要界定这些应用程序的受众可接受的播放速度范围。虽然让用户产生沉浸感的公认标准帧率为 60FPS,但有些应用程序可能只需要 5FPS,而其他应用程序则可能需要 90FPS。
图像质量——用户体验到的画面质量和真实程度,通常取决于应用程序端的内容设置(包括实时播放相关因素)、编码质量和硬件的 GPU 性能。画面质量预期以及成本考量会影响商业用例的实现方式,从而确定该设置方案的最终输出效果。
技术因素
用户负载——用户数量和应用程序的复杂程度将决定单个托管实例能够发送哪些内容,以及需要何种负载平衡来响应并发用户。一个拥有高真实度和完全交互式体验的车辆配置器,可能需要一万个拥有相同设置的实例。所需服务器的数量取决于首次交互发生时所需的速度,其往往是一项关键因素。
流送带宽——如果目标用户使用某个特定平台,比如移动设备,那么你可能就需要准备好大小不同的视频流送内容,以保证流送内容不会超出该平台的最大带宽限制。
更新——如何部署更新并修复错误?是替换整个应用程序,还是想办法实时更新内容?你还需要考虑如何在大量实例上大规模更新内容。
安全性——使用用例首先会受到主机和客户端之间的访问情况和安全性因素的影响。如果系统要求对设计审查中的保密数据进行分享和探讨,或者必须在一定时间范围内部署新信息并且要稍后才能访问,那么就有必要在网络或访问站点上实施安全措施。
指标——如果用户行为和场景统计数据属于关键绩效指标,那么你就需要对需要跟踪和保存到分析软件的事件进行定义、激活和关联。
| 不同发布方案之间的比较
Epic Games 最初在为虚幻引擎(UE4)寻求内容发布方案时,开发团队的想法是在现有技术中寻找方案并以此为基础进行开发。在分析了 WebGL 和 HTML5 这两种方案后,Epic 决定创建一个全新的像素流送插件,以此作为新的解决方案。
WebGL
WebGL 基于 OpenGL ES(OpenGL 的衍生版本,专用于嵌入式系统)实现,OpenGL 专为智能手机、平板电脑、视频游戏主机和掌上电脑等嵌入式系统设计。WebGL 通过 HTML5 的 Canvas 元素工作,该元素可用于在网站页面上绘制图形。
WebGL 支持基于 GPU 加速的物理模拟、图像处理和效果。
WebGL 的部署内容包含两部分:
由 JavaScript 编写的控制代码
由 OpenGL ES 着色器语言(OpenGL ES SL)编写的着色器代码
为 WebGL 编写内容
PlayCanvas——PlayCanvas 编辑器是一个高级WebGL 编辑环境,其本质上是一种 WebGL 游戏引擎。JavaScript 可用于编写 2D 或 3D 图形模拟。所有的代码都采用 HTML5 编写;作为一种在标准上兼容多种平台的语言, HTML5 能够用于所有主流浏览器和设备。
Sketchfab——Sketchfab 是一个用于分享和发布 3D 内容的在线商城。3D 查看器无需安装插件就能部署在浏览器上,并且支持 VR 和 AR 功能。所有内容必须托管在 Sketchfab 的服务器上并从那里发布内容。
WebGL 的局限性
此外,WebGL 的显示效果完全依赖于客户端浏览器的功能以及客户端本身的硬件性能;图像质量则取决于浏览器的显示能力。数据必须下载到客户端中,而下载时间决定了用户必须等待一段时间才能开始体验。如果用户的体验内容十分复杂并且包含大量数据,那么客户端还必须保证具有足够的数据储存空间。
如果数据十分敏感或者需要保密,那么还需要在客户端使用额外措施以保证数据安全。
*WebGL 部署中的数据流
如果 WebGL 内容需要与其他途径生成的内容混合使用,那么 WebGL 的画面质量将成为用户体验的界定标准。如果考虑到其它一些平台,则系统必须至少维持两套数据、着色器模型和创意设置,以便用于两种不同的终端通道。
关于指标,可以通过网站的常用通道收集登录和会话时间数据。
尽管有其局限性,但 WebGL 作为一种易于部署的方案,十分适合那些数据量小、安全要求低以及画质要求不高的用户体验。为了支持这类体验,Epic 正在为虚幻引擎开发一种能够直接从 UE4 导出到 WebGL 的选项,导出内容包括 glTF 格式的文件以及一个用于更换着色器的支持库。我们计划在 2020 年第一季度推出该选项。
针对拥有更高要求的虚幻引擎体验,Epic 会继续研发更加合适的解决方案。
HTML5
HTML5 的局限性
与 WebGL 一样,这类方案要求系统维持两套数据标准,并且无法保证用户在查看原始内容和发布内容时,能够获得一致的用户体验。如果要更新和维护发布内容,必须完全替换它,这对于那些需要频繁更新的内容来说非常麻烦。此外,HTML5 和 WebGL 拥有相同的安全性考量。
虚幻引擎内置了将项目发布到 HTML5 平台的工具。不过,从 UE 4.24 开始,Epic 把 HTML5 的支持功能迁移到了GitHub,只通过社区形式支持该平台,所以官方将不再提供支持。
像素流送
Epic 认为,一个理想的跨平台交互式实时内容发送系统应该包括以下特性:
主机可以向客户端流送像素,同时客户端无需下载任何数据
高端和低端用例共享一组数据设置
独立于平台的部署
所有平台和设备的质量都是确定性的
高真实度和高质量
能够展示虚幻引擎的所有特性
简单明了,易于维护和更新
体验刚开始就能快速访问内容
在部署前后和部署期间保护数据和设置的安全
能为不同用例提供各种潜在配置
具备可延展性;可以通过单台服务器或云部署
能够捕获用户和会话的数据指标
由于数据保存在主机上,并且只有像素被流送到查看设备上,所以诸如像素流送这类流送解决方案本质上要比客户端下载方案更快速、更安全。此外,用户会话数据可以在 UE4 中捕获以满足任何指标需求。
*位于启动器界面中的像素流送插件
WebRTC 协议
要求
借助 WebRTC 协议,像素流送插件可以在主机服务器上与网络中的服务器或客户端进行通信。最简单的方式就是通过本地 IP 地址和网络端口 80、8124 和 8888 访问本地主机。
显卡
英伟达的 GPU 自从 Kepler 架构开始都包含一个名为 NVENC 的硬件编码器,它能为视频编码提供独立于图形性能的全面硬件加速功能。通过将涉及编码的复杂计算任务转移到 NVENC 上,图形引擎和 CPU 将能够专注于其他操作。NVENC 使得以下工作成为可能:
在不使用 CPU 的情况下,以高质量和超低延迟对游戏和应用程序进行编码和流送
为归档、OTT 流送和网络视频提供极高质量的编码
单次流送编码的功耗极低(瓦特/流送)
随着行业标准的不断发展以及 GPU 和驱动程序的不断普及,虚幻引擎 4.24 版本将支持采用 AMD 显卡进行像素流送。我们将持续探索其他硬件支持方案,以便满足未来版本的需要。
*硬件编码以及像素流送的生成过程。NVENC 编码器通过缓冲区与CPU 和CUDA 核心协同工作并生成像素流,然后通过CPU 发送到分发网络中。
像素流送的用例设置
注意,如果主机和客户端因网络防火墙而无法通信,你可能需要搭建 STUN(NAT 的会话遍历实体)服务器和TURN(使用围绕 NAT 的中继遍历)服务器为主机和客户端建立通信。由于常规限制,某些客户端的防火墙可能会禁止访问或接收主机服务。如遇到这种情况,STUN/TURN 服务器会尝试各种合理方法来为主机和发出请求的客户端建立有效通信线路。借助这种方式,STUN/TURN 服务器能够为防火墙背后的用户清除障碍,否则用户每次需要使用流送应用程序时,都必须联系系统管理员以获得特殊权限。
| 局域网中的协作
| 沟通、审核、展示
| 远程协作设计、共享体验、消费者应用程序、配置器
如果某个应用程序需要触及大量的最终用户,并且这些用户所使用的硬件和软件设置五花八门,那么不妨采用拥有可延展特性的云环境来实现像素流送。图中展示了汽车配置器的常见流送布局,该布局同样适用于对数据访问存在安全要求并且需要跟踪记录的共享体验。此外,这种布局还适用于远程团队协作产品设计。
每个堆栈都需要一个唯一的标识符和端口来控制体验。许多消费级显卡最多只能同时运行两个编码器,从而限制了电脑上可以运行的实例数量。对于专业级显卡来说,例如英伟达的 Quadro 或 Tesla 系列,或者基于云的GPU 实例(AWS)则没有这些限制。
匹配器会负责将每个请求者重定向至属于它的信令和网络服务器,从而为客户端及其 WebRTC 代理服务器建立连接。只要用户在服务器上一直保持活跃状态,匹配器就会不断为用户流送内容。匹配器组件可以在虚幻引擎以及其他服务器组件中找到。如需了解更多信息,请访问虚幻引擎像素流送文档,查阅创建主机和网络连接指南专题中的“配对时的多个完整堆栈”一节。
| 总结
在当前的主机环境中,WebGL 的部署成本低廉,并且能够满足多数简单用例。Epic 正在为虚幻引擎开发一个WebGL 导出器,不过它只适用于实现一些简单效果。
基于 HTML5 的解决方案则很难带来商业利润,并且该领域的开发尚未涉及商业用途。这些方案的部署将依赖于自定义开发,并且重点将位于目标用例和应用程序上。
像素流送满足了在体验时代流送内容所需考虑的所有用户和技术因素,其重点是让用户在享受到最佳内容的同时又能获得最真实的内容体验。像素流送可以分享高端体验,而且无需担心客户端或平台的限制;今后它将被用于更为复杂的平台布局,并且这些平台布局将能够包含各种用于离线或在线内容的渠道。
| 相关内容
如需进一步了解 UE4 中的像素流送设置方法,请参阅以下链接中的设置示例:
https://launcher-website-prod07.ol.epicgames.com/ue/learn/pixel-streaming-demo
https://docs.unrealengine.com/en-US/Resources/Showcases/PixelStreamingShowcase/index.html
转载自:数字孪生UnrealEngine 作者:石几衣束