Web3D场景对等传输研究
2018-06-02唐瑭
唐瑭
摘要:大规模虚拟场景在互联网的传输延迟一直以来是困扰着Web3D的瓶颈问题。为了突破传输瓶颈,一方面针对大规模虚拟场景数据进行预处理,通过轻量化,细粒度化等预处理降低每次传输的数据量,另一方面基于WebRTC技术实现浏览器端的对等传输,提高了传输速度。
关键词: Web3D; WebRTC; 对等传输;轻量化
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)10-0039-02
Abstract: Transmission delay of large scale virtual scenes is usually a bottleneck problem of Web3D application. To solve the transmission bottleneck, on the one hand, applying lightweight preprocessing and fine-grained preprocessing to decrease data size of each transmission, on the other hand, using WebRTC to implement P2P transmission to increase the transmission rate.
Key words:Web3D; WebRTC; P2P transmission; lightweight preprocessing
1 引言
Web3D是通过互联网进行虚拟的三维立体展示并可互动浏览操作的一种虚拟现实技术。如今Web3D技术已在互联网上有了不少的应用,如虚拟旅游,虚拟博物馆网页游戏等。一方面随着虚拟场景的规模越来越大,相应的数据量越来越大,所需的传输时间就越长,尤其是较多用户同时访问的时候,另一方面用户对于加载时间要求很高,尤其是在浏览器端,几秒钟场景如果没有加载好,用户就可能将网页关闭,因此数据量大,高并发的Web3D应用面临着传输瓶颈,利用P2P架构进行对等传输是一个解决传输瓶颈的有效方案。P2P充分利用用户节点的资源,提升传输速度并且降低了服务器端的负载。WebRTC(Web Real-Time Communication)技术能建立一个浏览器与浏览器之间的信道,这个信道可以发送任何数据,使得浏览器端对等传输成为可能。
2 Web3D对等传输关键技术
2.1 大规模虚拟场景预处理
大规模虚拟场景数据量巨大,需要对场景进行预处理,降低传輸时的数据量。一方面场景数据进行分析,利用可重用的单元,去除场景中冗余数据,有效降低场景传输时所需的数据量。另一方面由于用户漫游时的视野有限,只需先传输周围场景数据并及时渲染,随着用户虚拟化身的变化逐渐下载场景增量,进一步降低了每次传输的数据量。
2.1.1 场景轻量化
3D模型往往存在着可重用的单元,它们只是方向和空间位置不一样,所以可以通过对一些模型单元旋转,缩放,平移得到另一些模型单元[1]。图1中吊灯包括许多形状大小完全一致的灯具,金属管线材料,灯架等部分,它们均以吊杆为柚心,按照一定的角度有规则的摆放着。如果不进行轻量化建模处理,将传输大量重复的3D 模型单元。通过轻量化的处理,灯具的模型简化为一个灯具实体,灯架也简化为一幅灯架,场景中存在多个相同灯具也只需要传输一个灯具,传输的模型数据量极大减少。因此,轻量化预处理对原始数据进行构件层面的语义分析,几何重复性检测和重复性冗余去除,减少了整个场景的冗余数据。
图1 吊灯模型的轻量化处理
2.1.2 基于空间分割的场景细粒度化
场景中存在着大量建筑物,不仅内外部数据遮挡明显,且理论上每栋建筑物又可以被分解为多个楼层,各楼层内部又可以分解为多个空间。建筑信息模型BIM(Building Information Modeling)数据中包含语义信息,根据前期解析得到相应的楼层(Storey)和空间(Space)对象,分析这两种对象的地板(Slab)及顶部(Covering)构件对其进行验证并形成初步的构筑物空间结构;其次获取整个构筑物地板等特殊构件,结合初步空间结构进行进一步的楼层分析,形成整个建筑物的楼层分布情况以及楼层间的连通关系,最后在每个楼层内部,结合初步空间结构进行进一步的楼层内连通关系分析,形成整个建筑物的室内子空间划分及连通关系结构图[2]。
场景漫游时,用户的视野是有限的,只会对于其周围场景感兴趣,因此只要传输和加载用户虚拟化身周围的可见对象即可满足当前漫游要求。视锥是指场景中摄像机的可见的一个锥体范围,在视锥体内的景物可见,反之则不可见。根据用户虚拟化身当前所在位置判断出其所在子空间并计算出当前视锥内的物体,可进一步减低了加载的数据量,在实时漫游过程中始终都能用来对当前视点范围内需要加载的数据量进行有效控制,实现场景数据的渐近式传输和加载。
2.1.3 渐进式网格
渐进式网格(Progressive Mesh, PM)也是当前复杂模型传输时的常用手段。利用了人眼观察事物的清晰程度与距离成反比的这一客观事实,当物体距离用户虚拟化身较远时粗糙,较近时细致。在对于场景中一些复杂的、在低带宽时无法实时传输的模型进行PM预处理,将原始模型处理成含有较少数据量的基网络和增量网格两部分。在进行场景漫游时,首先处理基网络数据,并在后续的漫游过程中,通过根据视点位置增加相应的增量网络来实时调整该模型的精度。使得整个漫游过程中,不仅不影响用户体验质量,做到增量数据的按需处理。
2.2 基于WebRTC的对等传输
WebRTC是网页实时通信(Web Real-Time Communication)的缩写,它是以浏览器为中心,建立在应用层级的协议,目标是提供web开发者基于简单的JavaScript api就可以实现实时通信的功能,从而快速开发出丰富的浏览器端多媒体应用[3]。使用WebRTC的应用无须安装任何浏览器插件,支持跨平台。WebRTC提供了视频会议所需的核心技术,目前已被广泛应用到基于浏览器的视频会议。
使用WebRTC进行基本的数据传输只需要使用兩个API,RTCPeerConnection是WebRTC用于构建点对点之间稳定、高效的流传输的组件[4]。RTCDataChannel使得浏览器之间(点对点)建立一个高吞吐量、低延时的信道,用于传输任意数据。首先要在节点间用RTCPeerConnection建立连接,这需要两个节点经由服务器进行信令传递,可以选择任何方式、采取任何协议来传递信令,需要交换的信令有三种:session的信息:用来初始化通信还有报错。网络配置:比如IP地址和端口。媒体适配:发送方和接收方的浏览器能够接受什么样的编码器和分辨率。建立好连接之后,创建RTCDataChannel在对等连接中建立双向数据通道,基于它可以在浏览器之间任意传递数据,当然包括Web3D场景模型数据。
建立点对点信道的一个常见问题,就是NAT穿越技术。在处于使用了NAT设备的私有TCP/IP网络中的主机之间需要建立连接时需要使用NAT穿越技术。在建立连接中,使用ICE框架来保证RTCPeerConnection能实现NAT穿越 ICE,全名叫交互式连接建立(Interactive Connectivity Establishment),一种综合性的NAT穿越技术,它是一种框架,可以整合各种NAT穿越技术如STUN、TURN(Traversal Using Relay NAT 中继NAT实现的穿透)。ICE会先使用STUN,尝试建立一个基于UDP的连接,如果失败了,就会使用TCP,如果依旧失败ICE就会使用一个中继的TURN服务器。
2.3 基于WebRTC的对等传输框架WebTorrent
WebTorrent是一个流媒体对等传输框架,使用WebRTC的数据信道进行对等传输,可以在浏览器中和node.js环境下运行[5]。WebTorrent是纯JavaScript实现,因此浏览器上无需安装任何插件就可以使用。WebTorrent大部分的交互直接浏览器节点之间进行,不过初始的步骤仍然需要访问服务器端。WebTorrent下载文件类似BitTorrent, 首先需要获取元信息文件(metafile),也称为种子文件(torrent)。种子包含文件信息和Tracker信息,Tracker信息只是下载过程需要用到的Tracker服务器的地址以及设置信息,Tracker服务器中记录了拥有目标文件的节点信息,可以从其中选择节点高速下载。此外,还可以通过磁力链接,利用其中记录的基于文件内容哈希生成的用于识别文件的数字指纹,可以直接利用DHT网络进行搜索获取拥有目标文件的节点信息,无需通过Tracker服务器。
2.3.1 WebTorrent传输大规模虚拟场景流程
1)在服务器端对大规模虚拟场景预处理后,按照空间分割的细粒度化的场景中模型数据打包成一个数据包,并创建对应的torrent文件和磁力链接。
2)当下载节点下载虚拟场景的数据包,使用WebTorrent解析对应的磁力链接,WebTorrent会同时使用DHT和Tracker服务器两种方式获取拥有目标数据包的节点信息。同时服务器端会记录下载节点的信息和请求的数据包的信息。
3)下载节点根据候选节点列表选择一定数量的节点直接建立通信连接,下载数据。
3 结论
本文研究了Web3D场景的传输涉及的关键技术。首先研究了大规模虚拟场景一些预处理技术,通过轻量化,细粒度化等预处理,大幅降低每次传输的数据量。 然后研究WebRTC建立连接以及传输数据的详细过程以及基于WebRTC的传输框架WebTorrent传输文件的流程, 实现浏览器端免插件的对等传输,加快了传输速度,有效的降低传输延迟。
参考文献:
[1] 温来祥, 贾金原. 基于单元重用机制的轻量化建模算法[J]. 系统仿真学报, 2012, 24(1):69-73.
[2] Liu X, Xie N, Tang K, et al. Lightweighting for Web3D visualization of large-scale BIM scenes in real-time[J]. Graphical Models, 2016.
[3] Fernandez L L, Diaz M P, Mejias R B, et al. Catalysing the success of WebRTC for the provision of advanced multimedia real-time communication services[C]// International Conference on Intelligence in Next Generation Networks. IEEE, 2013:23-30.
[4] Guduru K K, Dev S. Web RTC Implementation Analysis and Impact of Bundle Feature[C]// Fifth International Conference on Communication Systems and Network Technologies. IEEE, 2015:1109-1113.
[5] Feross aboukhadijeh.What is webtorrent[EB/OL]. https://webtorrent.io.