唐瑭
摘要:大規(guī)模虛擬場(chǎng)景在互聯(lián)網(wǎng)的傳輸延遲一直以來(lái)是困擾著Web3D的瓶頸問(wèn)題。為了突破傳輸瓶頸,一方面針對(duì)大規(guī)模虛擬場(chǎng)景數(shù)據(jù)進(jìn)行預(yù)處理,通過(guò)輕量化,細(xì)粒度化等預(yù)處理降低每次傳輸?shù)臄?shù)據(jù)量,另一方面基于WebRTC技術(shù)實(shí)現(xiàn)瀏覽器端的對(duì)等傳輸,提高了傳輸速度。
關(guān)鍵詞: Web3D; WebRTC; 對(duì)等傳輸;輕量化
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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是通過(guò)互聯(lián)網(wǎng)進(jìn)行虛擬的三維立體展示并可互動(dòng)瀏覽操作的一種虛擬現(xiàn)實(shí)技術(shù)。如今Web3D技術(shù)已在互聯(lián)網(wǎng)上有了不少的應(yīng)用,如虛擬旅游,虛擬博物館網(wǎng)頁(yè)游戲等。一方面隨著虛擬場(chǎng)景的規(guī)模越來(lái)越大,相應(yīng)的數(shù)據(jù)量越來(lái)越大,所需的傳輸時(shí)間就越長(zhǎng),尤其是較多用戶同時(shí)訪問(wèn)的時(shí)候,另一方面用戶對(duì)于加載時(shí)間要求很高,尤其是在瀏覽器端,幾秒鐘場(chǎng)景如果沒(méi)有加載好,用戶就可能將網(wǎng)頁(yè)關(guān)閉,因此數(shù)據(jù)量大,高并發(fā)的Web3D應(yīng)用面臨著傳輸瓶頸,利用P2P架構(gòu)進(jìn)行對(duì)等傳輸是一個(gè)解決傳輸瓶頸的有效方案。P2P充分利用用戶節(jié)點(diǎn)的資源,提升傳輸速度并且降低了服務(wù)器端的負(fù)載。WebRTC(Web Real-Time Communication)技術(shù)能建立一個(gè)瀏覽器與瀏覽器之間的信道,這個(gè)信道可以發(fā)送任何數(shù)據(jù),使得瀏覽器端對(duì)等傳輸成為可能。
2 Web3D對(duì)等傳輸關(guān)鍵技術(shù)
2.1 大規(guī)模虛擬場(chǎng)景預(yù)處理
大規(guī)模虛擬場(chǎng)景數(shù)據(jù)量巨大,需要對(duì)場(chǎng)景進(jìn)行預(yù)處理,降低傳輸時(shí)的數(shù)據(jù)量。一方面場(chǎng)景數(shù)據(jù)進(jìn)行分析,利用可重用的單元,去除場(chǎng)景中冗余數(shù)據(jù),有效降低場(chǎng)景傳輸時(shí)所需的數(shù)據(jù)量。另一方面由于用戶漫游時(shí)的視野有限,只需先傳輸周圍場(chǎng)景數(shù)據(jù)并及時(shí)渲染,隨著用戶虛擬化身的變化逐漸下載場(chǎng)景增量,進(jìn)一步降低了每次傳輸?shù)臄?shù)據(jù)量。
2.1.1 場(chǎng)景輕量化
3D模型往往存在著可重用的單元,它們只是方向和空間位置不一樣,所以可以通過(guò)對(duì)一些模型單元旋轉(zhuǎn),縮放,平移得到另一些模型單元[1]。圖1中吊燈包括許多形狀大小完全一致的燈具,金屬管線材料,燈架等部分,它們均以吊桿為柚心,按照一定的角度有規(guī)則的擺放著。如果不進(jìn)行輕量化建模處理,將傳輸大量重復(fù)的3D 模型單元。通過(guò)輕量化的處理,燈具的模型簡(jiǎn)化為一個(gè)燈具實(shí)體,燈架也簡(jiǎn)化為一幅燈架,場(chǎng)景中存在多個(gè)相同燈具也只需要傳輸一個(gè)燈具,傳輸?shù)哪P蛿?shù)據(jù)量極大減少。因此,輕量化預(yù)處理對(duì)原始數(shù)據(jù)進(jìn)行構(gòu)件層面的語(yǔ)義分析,幾何重復(fù)性檢測(cè)和重復(fù)性冗余去除,減少了整個(gè)場(chǎng)景的冗余數(shù)據(jù)。
圖1 吊燈模型的輕量化處理
2.1.2 基于空間分割的場(chǎng)景細(xì)粒度化
場(chǎng)景中存在著大量建筑物,不僅內(nèi)外部數(shù)據(jù)遮擋明顯,且理論上每棟建筑物又可以被分解為多個(gè)樓層,各樓層內(nèi)部又可以分解為多個(gè)空間。建筑信息模型BIM(Building Information Modeling)數(shù)據(jù)中包含語(yǔ)義信息,根據(jù)前期解析得到相應(yīng)的樓層(Storey)和空間(Space)對(duì)象,分析這兩種對(duì)象的地板(Slab)及頂部(Covering)構(gòu)件對(duì)其進(jìn)行驗(yàn)證并形成初步的構(gòu)筑物空間結(jié)構(gòu);其次獲取整個(gè)構(gòu)筑物地板等特殊構(gòu)件,結(jié)合初步空間結(jié)構(gòu)進(jìn)行進(jìn)一步的樓層分析,形成整個(gè)建筑物的樓層分布情況以及樓層間的連通關(guān)系,最后在每個(gè)樓層內(nèi)部,結(jié)合初步空間結(jié)構(gòu)進(jìn)行進(jìn)一步的樓層內(nèi)連通關(guān)系分析,形成整個(gè)建筑物的室內(nèi)子空間劃分及連通關(guān)系結(jié)構(gòu)圖[2]。
場(chǎng)景漫游時(shí),用戶的視野是有限的,只會(huì)對(duì)于其周圍場(chǎng)景感興趣,因此只要傳輸和加載用戶虛擬化身周圍的可見(jiàn)對(duì)象即可滿足當(dāng)前漫游要求。視錐是指場(chǎng)景中攝像機(jī)的可見(jiàn)的一個(gè)錐體范圍,在視錐體內(nèi)的景物可見(jiàn),反之則不可見(jiàn)。根據(jù)用戶虛擬化身當(dāng)前所在位置判斷出其所在子空間并計(jì)算出當(dāng)前視錐內(nèi)的物體,可進(jìn)一步減低了加載的數(shù)據(jù)量,在實(shí)時(shí)漫游過(guò)程中始終都能用來(lái)對(duì)當(dāng)前視點(diǎn)范圍內(nèi)需要加載的數(shù)據(jù)量進(jìn)行有效控制,實(shí)現(xiàn)場(chǎng)景數(shù)據(jù)的漸近式傳輸和加載。
2.1.3 漸進(jìn)式網(wǎng)格
漸進(jìn)式網(wǎng)格(Progressive Mesh, PM)也是當(dāng)前復(fù)雜模型傳輸時(shí)的常用手段。利用了人眼觀察事物的清晰程度與距離成反比的這一客觀事實(shí),當(dāng)物體距離用戶虛擬化身較遠(yuǎn)時(shí)粗糙,較近時(shí)細(xì)致。在對(duì)于場(chǎng)景中一些復(fù)雜的、在低帶寬時(shí)無(wú)法實(shí)時(shí)傳輸?shù)哪P瓦M(jìn)行PM預(yù)處理,將原始模型處理成含有較少數(shù)據(jù)量的基網(wǎng)絡(luò)和增量網(wǎng)格兩部分。在進(jìn)行場(chǎng)景漫游時(shí),首先處理基網(wǎng)絡(luò)數(shù)據(jù),并在后續(xù)的漫游過(guò)程中,通過(guò)根據(jù)視點(diǎn)位置增加相應(yīng)的增量網(wǎng)絡(luò)來(lái)實(shí)時(shí)調(diào)整該模型的精度。使得整個(gè)漫游過(guò)程中,不僅不影響用戶體驗(yàn)質(zhì)量,做到增量數(shù)據(jù)的按需處理。
2.2 基于WebRTC的對(duì)等傳輸
WebRTC是網(wǎng)頁(yè)實(shí)時(shí)通信(Web Real-Time Communication)的縮寫(xiě),它是以瀏覽器為中心,建立在應(yīng)用層級(jí)的協(xié)議,目標(biāo)是提供web開(kāi)發(fā)者基于簡(jiǎn)單的JavaScript api就可以實(shí)現(xiàn)實(shí)時(shí)通信的功能,從而快速開(kāi)發(fā)出豐富的瀏覽器端多媒體應(yīng)用[3]。使用WebRTC的應(yīng)用無(wú)須安裝任何瀏覽器插件,支持跨平臺(tái)。WebRTC提供了視頻會(huì)議所需的核心技術(shù),目前已被廣泛應(yīng)用到基于瀏覽器的視頻會(huì)議。
使用WebRTC進(jìn)行基本的數(shù)據(jù)傳輸只需要使用兩個(gè)API,RTCPeerConnection是WebRTC用于構(gòu)建點(diǎn)對(duì)點(diǎn)之間穩(wěn)定、高效的流傳輸?shù)慕M件[4]。RTCDataChannel使得瀏覽器之間(點(diǎn)對(duì)點(diǎn))建立一個(gè)高吞吐量、低延時(shí)的信道,用于傳輸任意數(shù)據(jù)。首先要在節(jié)點(diǎn)間用RTCPeerConnection建立連接,這需要兩個(gè)節(jié)點(diǎn)經(jīng)由服務(wù)器進(jìn)行信令傳遞,可以選擇任何方式、采取任何協(xié)議來(lái)傳遞信令,需要交換的信令有三種:session的信息:用來(lái)初始化通信還有報(bào)錯(cuò)。網(wǎng)絡(luò)配置:比如IP地址和端口。媒體適配:發(fā)送方和接收方的瀏覽器能夠接受什么樣的編碼器和分辨率。建立好連接之后,創(chuàng)建RTCDataChannel在對(duì)等連接中建立雙向數(shù)據(jù)通道,基于它可以在瀏覽器之間任意傳遞數(shù)據(jù),當(dāng)然包括Web3D場(chǎng)景模型數(shù)據(jù)。
建立點(diǎn)對(duì)點(diǎn)信道的一個(gè)常見(jiàn)問(wèn)題,就是NAT穿越技術(shù)。在處于使用了NAT設(shè)備的私有TCP/IP網(wǎng)絡(luò)中的主機(jī)之間需要建立連接時(shí)需要使用NAT穿越技術(shù)。在建立連接中,使用ICE框架來(lái)保證RTCPeerConnection能實(shí)現(xiàn)NAT穿越 ICE,全名叫交互式連接建立(Interactive Connectivity Establishment),一種綜合性的NAT穿越技術(shù),它是一種框架,可以整合各種NAT穿越技術(shù)如STUN、TURN(Traversal Using Relay NAT 中繼NAT實(shí)現(xiàn)的穿透)。ICE會(huì)先使用STUN,嘗試建立一個(gè)基于UDP的連接,如果失敗了,就會(huì)使用TCP,如果依舊失敗ICE就會(huì)使用一個(gè)中繼的TURN服務(wù)器。
2.3 基于WebRTC的對(duì)等傳輸框架WebTorrent
WebTorrent是一個(gè)流媒體對(duì)等傳輸框架,使用WebRTC的數(shù)據(jù)信道進(jìn)行對(duì)等傳輸,可以在瀏覽器中和node.js環(huán)境下運(yùn)行[5]。WebTorrent是純JavaScript實(shí)現(xiàn),因此瀏覽器上無(wú)需安裝任何插件就可以使用。WebTorrent大部分的交互直接瀏覽器節(jié)點(diǎn)之間進(jìn)行,不過(guò)初始的步驟仍然需要訪問(wèn)服務(wù)器端。WebTorrent下載文件類似BitTorrent, 首先需要獲取元信息文件(metafile),也稱為種子文件(torrent)。種子包含文件信息和Tracker信息,Tracker信息只是下載過(guò)程需要用到的Tracker服務(wù)器的地址以及設(shè)置信息,Tracker服務(wù)器中記錄了擁有目標(biāo)文件的節(jié)點(diǎn)信息,可以從其中選擇節(jié)點(diǎn)高速下載。此外,還可以通過(guò)磁力鏈接,利用其中記錄的基于文件內(nèi)容哈希生成的用于識(shí)別文件的數(shù)字指紋,可以直接利用DHT網(wǎng)絡(luò)進(jìn)行搜索獲取擁有目標(biāo)文件的節(jié)點(diǎn)信息,無(wú)需通過(guò)Tracker服務(wù)器。
2.3.1 WebTorrent傳輸大規(guī)模虛擬場(chǎng)景流程
1)在服務(wù)器端對(duì)大規(guī)模虛擬場(chǎng)景預(yù)處理后,按照空間分割的細(xì)粒度化的場(chǎng)景中模型數(shù)據(jù)打包成一個(gè)數(shù)據(jù)包,并創(chuàng)建對(duì)應(yīng)的torrent文件和磁力鏈接。
2)當(dāng)下載節(jié)點(diǎn)下載虛擬場(chǎng)景的數(shù)據(jù)包,使用WebTorrent解析對(duì)應(yīng)的磁力鏈接,WebTorrent會(huì)同時(shí)使用DHT和Tracker服務(wù)器兩種方式獲取擁有目標(biāo)數(shù)據(jù)包的節(jié)點(diǎn)信息。同時(shí)服務(wù)器端會(huì)記錄下載節(jié)點(diǎn)的信息和請(qǐng)求的數(shù)據(jù)包的信息。
3)下載節(jié)點(diǎn)根據(jù)候選節(jié)點(diǎn)列表選擇一定數(shù)量的節(jié)點(diǎn)直接建立通信連接,下載數(shù)據(jù)。
3 結(jié)論
本文研究了Web3D場(chǎng)景的傳輸涉及的關(guān)鍵技術(shù)。首先研究了大規(guī)模虛擬場(chǎng)景一些預(yù)處理技術(shù),通過(guò)輕量化,細(xì)粒度化等預(yù)處理,大幅降低每次傳輸?shù)臄?shù)據(jù)量。 然后研究WebRTC建立連接以及傳輸數(shù)據(jù)的詳細(xì)過(guò)程以及基于WebRTC的傳輸框架WebTorrent傳輸文件的流程, 實(shí)現(xiàn)瀏覽器端免插件的對(duì)等傳輸,加快了傳輸速度,有效的降低傳輸延遲。
參考文獻(xiàn):
[1] 溫來(lái)祥, 賈金原. 基于單元重用機(jī)制的輕量化建模算法[J]. 系統(tǒng)仿真學(xué)報(bào), 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.