王金怡,郭 權(quán)
(中通服咨詢?cè)O(shè)計(jì)研究院有限公司,江蘇 南京210019)
進(jìn)入5G時(shí)代,真實(shí)世界與虛擬世界將密不可分。信息的產(chǎn)生與流動(dòng)瞬息萬(wàn)變,城市的運(yùn)轉(zhuǎn)每天都會(huì)涌現(xiàn)出無(wú)數(shù)復(fù)雜的數(shù)據(jù),如三維時(shí)空數(shù)據(jù)、視頻影像數(shù)據(jù)、地理信息數(shù)據(jù)以及傳感器網(wǎng)絡(luò)數(shù)據(jù)等。呈現(xiàn)、理解和應(yīng)用此類(lèi)新型的海量復(fù)雜數(shù)據(jù),是大數(shù)據(jù)可視化面臨的全新挑戰(zhàn)。U3D引擎為三維數(shù)據(jù)、復(fù)雜數(shù)據(jù)的可視化提供了可能性,可有效呈現(xiàn)這些結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù),而如何處理這些數(shù)據(jù)并選擇最佳的可視化方法成為探究的方向。
城市每天產(chǎn)生著大量數(shù)據(jù),關(guān)注和分析這些數(shù)據(jù)使其可視化將有助于城市更有效地運(yùn)轉(zhuǎn)。在三維空間中,產(chǎn)生的數(shù)據(jù)是聚合在一起的空間數(shù)據(jù),具有相應(yīng)的位置信息。三維引擎區(qū)別于以往的二維可視化工具,能夠展現(xiàn)出更多信息,以更加直觀科學(xué)的方式將交通運(yùn)行狀況、人口密集度、天氣信息、經(jīng)濟(jì)運(yùn)行數(shù)據(jù)以及時(shí)間信息等多種大規(guī)模、時(shí)變數(shù)據(jù)集合在一個(gè)空間數(shù)據(jù)場(chǎng)。
隨著科學(xué)可視化和虛擬現(xiàn)實(shí)技術(shù)的快速發(fā)展,人們對(duì)真實(shí)感渲染和可視化場(chǎng)景的復(fù)雜度提出了更高要求。以往使用OpenGL、DirectX開(kāi)發(fā)圖形應(yīng)用的模式,與如今可視化開(kāi)發(fā)的需求不匹配。對(duì)幾款主流三維引擎OGRE、OSG、Irrlicht、Axiom以及Unity3d等[1-2]進(jìn)行綜合比較發(fā)現(xiàn),Unity3d引擎在平臺(tái)支持、靈活性、互動(dòng)性、圖形性能以及龐大的資源庫(kù)方面表現(xiàn)突出,更適合大規(guī)模多變量的空間數(shù)據(jù)場(chǎng)可視化。而利用U3D引擎在大數(shù)據(jù)可視化方面能創(chuàng)造怎樣新型的表達(dá)式,是下面探討的重點(diǎn)。
大規(guī)模的空間數(shù)據(jù)可視化的目的是抽取和表達(dá)數(shù)據(jù)場(chǎng)中多個(gè)屬性及其相互關(guān)系。如何克服多變量、復(fù)合類(lèi)型、內(nèi)在結(jié)構(gòu)復(fù)雜且互相交織的數(shù)據(jù)特征,是可視化過(guò)程中的關(guān)鍵部分。其中,對(duì)于數(shù)據(jù)降維、數(shù)據(jù)壓縮和投影變換等方面,最大限度地去除冗余信息和數(shù)據(jù)量,保留重要信息,將直接影響可視化的呈現(xiàn)效果。
ECS架構(gòu)旨在比Unity目前的Gameobject/Component架構(gòu)模式更容易處理大量物體。ECS的全稱為Entity Component System,在數(shù)據(jù)和對(duì)象的處理上都與當(dāng)下主流的OO模型有很大區(qū)別[3]。由于面向數(shù)據(jù)的設(shè)計(jì),它很容易并行高速處理,和C# Job System一起工作可以使CPU利用率接近100%。ECS的架構(gòu)如圖1所示。

圖1 ECS的架構(gòu)圖
在Unity中進(jìn)行大數(shù)據(jù)三維可視化展現(xiàn),不可避免要復(fù)制海量物體和數(shù)據(jù)組件,如城市級(jí)場(chǎng)景中樓宇的大數(shù)據(jù)分析。成千上萬(wàn)的樓宇模型和數(shù)據(jù)組件在以往的Gameobject/Component架構(gòu)模式下效率較低,ECS可以通過(guò)System統(tǒng)一管理?yè)碛邢嗤瑯怯顢?shù)據(jù)對(duì)象的組件實(shí)體,在充分利用計(jì)算機(jī)性能的基礎(chǔ)上,快速驅(qū)動(dòng)大量模型[4]。圖2為Unity的技術(shù)演示,移動(dòng)大量物體。
雖然大數(shù)據(jù)時(shí)代已然到來(lái),但是與數(shù)據(jù)相關(guān)的市場(chǎng)需求中BI仍然占據(jù)了很大份額。BI涉及到智慧城市建設(shè)的方方面面,而U3D引擎中針對(duì)BI的可視化圖表部分較為靈活可變。

圖2 Unity的技術(shù)演示
UGUI是Unity原生的GUI系統(tǒng),前身是NGUI[5-6]。對(duì)于大數(shù)據(jù)的數(shù)據(jù)內(nèi)容展示,相比于Web開(kāi)發(fā)中的echarts,UGUI和其他GUI插件則顯得相形見(jiàn)絀。在Unity中,所有物體都有網(wǎng)格,包括三維模型和GUI。每次頁(yè)面上有數(shù)據(jù)需要更新時(shí),都必須重繪更新元素所在的整張Canvas,帶來(lái)極大的性能問(wèn)題,且對(duì)Canvas進(jìn)行分組的工作非常繁雜。不僅如此,UGUI及其插件對(duì)數(shù)據(jù)圖表的支持存在很大的局限性,較為死板?;谏鲜龇N種缺陷,建議采用一種內(nèi)嵌網(wǎng)頁(yè)的插件Embedded Browser來(lái)滿足大數(shù)據(jù)展示的需求。
同樣是基于UGUI的Canvas,不同的是只需要建立一個(gè)子物體,即可展示整個(gè)數(shù)據(jù)頁(yè)面(頁(yè)面需在前端開(kāi)發(fā)好),這樣在有數(shù)據(jù)更新時(shí)只需重繪一次Canvas。嵌入的方式有兩種:直接嵌入瀏覽器網(wǎng)頁(yè),配置好URL即可,適用于實(shí)時(shí)數(shù)據(jù)展示;將html文件放入工程,加載嵌入,適用于非實(shí)時(shí)數(shù)據(jù)展示。Embedded Browser在Unity中的使用效果如圖3所示。

圖3 Embedded Browser在Unity中的使用效果
大數(shù)據(jù)可視化中的交互,是指便于用戶對(duì)數(shù)據(jù)進(jìn)行觀察和分析的一系列操作,貫穿整個(gè)可視化進(jìn)程[7]。設(shè)計(jì)有效的視覺(jué)編碼輔助用戶分析提取和表達(dá)這些信息,觀察和研究數(shù)據(jù)屬性及其相互之間的關(guān)系,發(fā)現(xiàn)未知的新特征和新現(xiàn)象,是交互的重點(diǎn)。
交互性強(qiáng)是Unity在展示大數(shù)據(jù)內(nèi)容上的最大優(yōu)點(diǎn)。相比于傳統(tǒng)2D界面,Unity可以實(shí)現(xiàn)2D數(shù)據(jù)和3D模型的聯(lián)動(dòng)。例如:城市汽車(chē)管控中,更新界面上數(shù)據(jù)的同時(shí),汽車(chē)3D模型可以被不斷更新的數(shù)據(jù)實(shí)時(shí)驅(qū)動(dòng),且汽車(chē)的詳細(xì)數(shù)據(jù)可以跟隨汽車(chē)展示,展示界面可以是2D的,也可以以3D的形式存在于三維場(chǎng)景中,使得整個(gè)系統(tǒng)靈動(dòng)且形象。
數(shù)據(jù)和模型的雙向性也是其優(yōu)點(diǎn)之一。選擇界面上的數(shù)據(jù),場(chǎng)景相機(jī)可以自動(dòng)搜索定位到三維場(chǎng)景的物體上,達(dá)到一目了然的數(shù)據(jù)和模型狀態(tài)匹配效果。選擇三維場(chǎng)景的物體,也可以展示其詳細(xì)數(shù)據(jù)。
大數(shù)據(jù)可視化系統(tǒng)的用戶主要分為兩類(lèi):一類(lèi)是數(shù)據(jù)探索者,他們對(duì)數(shù)據(jù)的情況并不清楚,希望直接控制可視化系統(tǒng)的交互;另一類(lèi)是數(shù)據(jù)展示者,他們對(duì)數(shù)據(jù)了如指掌,且數(shù)據(jù)已經(jīng)過(guò)處理,用戶是被動(dòng)接受信息。對(duì)于后者來(lái)說(shuō),大數(shù)據(jù)可視化系統(tǒng)中動(dòng)畫(huà)的使用顯得尤為重要。合適的動(dòng)畫(huà)可以增加可視化的表現(xiàn)力,同時(shí)突出想要表達(dá)的重要信息,使信息的層次更加分明。
在5G、云渲染等技術(shù)普及后,大數(shù)據(jù)可視化進(jìn)入一個(gè)高速發(fā)展階段,國(guó)內(nèi)外各大公司都在競(jìng)相開(kāi)發(fā)自己的大數(shù)據(jù)可視化產(chǎn)品。U3D引擎作為當(dāng)前一個(gè)主流的三維可視化開(kāi)發(fā)引擎,在渲染、模塊化開(kāi)發(fā)、跨平臺(tái)、通用性、兼容性、即插即用性以及開(kāi)發(fā)周期等綜合性能上,是其他引擎不可比擬的。任何一種媒介都有其自身的屬性,會(huì)為在其之上發(fā)展的形式帶來(lái)不同程度的改變。U3D引擎可為數(shù)據(jù)可視化帶來(lái)巨大改變,推動(dòng)數(shù)據(jù)可視化快速發(fā)展,拓寬數(shù)據(jù)可視化的可能性。