前文所提到的基于WebGL的前端三维可视化技术虽然在实际应用中展现出一些优势,但同时也存在诸多挑战。这些问题主要包括以下几个方面:
前端浏览体验和数据量大小密切相关,为了优化体验,需要处理大量的数据轻量化及切片工作,但这也带来了切片调度加载的难题。前端性能稳定性不高,在高负载情况下容易出现崩溃。对于大分辨率的场景,该技术也难以提供支持。当前这些问题的解决方案往往局限在改变技术框架或是限制使用场景上,这些虽可作为权宜之计,但无法满足全景内容分发时代的需要。
在此背景下,限制内容的分发渠道并非明智之举。在全场景内容分发和数字互联的时代背景下,内容的触达范围应该尽可能广泛,涵盖手机、平板电脑、个人电脑以及交互式屏幕等多个平台。继续在当前的技术背景下使用WebGL或H5技术显然已无法满足需求,因为它们的发展瓶颈已经显而易见。为此,我们是否可以尝试将高负载的渲染工作移至强大的后端,以前端呢?这是一个值得深入研究的方案。
理想的后端渲染方案应具备以下特性:各种终端和平台都能无缝访问三维场景而无需安装任何应用;客户端能高效访问三维场景,无需等待数据下载;场景的交互与数据量无关,前端可以获得一致的访问体验。针对这些需求,游戏引擎厂商已经提出一种基于WebRTC视频流推送技术的三维云渲染方案。这其中,UE称之为PixelStreaming,Unity则称之为RenderStreaming。两者的基本原理是一致的,即通过后端进行场景渲染,然后以实时视频流的形式推送到网页端,实现前端到后端的交互同步。接下来我将以虚幻引擎的PixelStreaming为例详细介绍这种技术。
PixelStreaming是以插件的形式集成在游戏引擎中。该插件会对主机服务器的图形流信息进行编码,然后通过WebRTC协议发送给接收端的浏览器和设备。这一方案的最大优势在于它能在高性能主机系统上运行渲染引擎,让用户在所有终端设备上享受到与主机相同的画质和渲染引擎功能。由于数据保存在主机上,只有像素被流送到查看设备上,因此这种流送解决方案比客户端下载方案更快速、更安全。用户会话数据可以在引擎中捕获以满足各种指标需求。
WebRTC是一种实时通信协议,允许通过网页浏览器和移动应用程序进行音频和视频的实时传输,无需用户下载任何插件或应用程序。借助WebRTC协议,PixelStreaming插件可以在主机服务器上与网络中的服务器或客户端进行通信。像素流送可以通过单台服务器运行,也可以通过云环境运行,以允许动态扩展并提供足够的硬件GPU支持。
在大多数场景中,不同用户需要不同的交互体验和推流内容。该系统会为每个用户运行一个单独的像素流送组件堆栈,并将每个用户指向一台单独的网络服务器和主机。为了支持这种架构,需要一个匹配器来负责将每个请求者重定向至其信令和网络服务器,从而为客户端及其WebRTC代理服务器建立连接。只要用户在服务器上保持活跃状态,匹配器就会持续为其推流内容。