摘要:長相相似+神秘遙感+一對一,可以算是最基本的“真孿生”
10年前,UINO優(yōu)锘科技的創(chuàng)業(yè)團(tuán)隊(duì)開始做“數(shù)字真孿生”的時(shí)候,并不知道“數(shù)字孿生”這個(gè)詞。
當(dāng)時(shí)兩個(gè)團(tuán)隊(duì)在一個(gè)大型數(shù)據(jù)中心的3D監(jiān)控可視化項(xiàng)目中相遇,一個(gè)在2002年就開發(fā)過3D游戲引擎,一個(gè)有長期IT監(jiān)控軟件經(jīng)驗(yàn)。在這個(gè)項(xiàng)目里,幾萬個(gè)3D模型構(gòu)成的、數(shù)據(jù)驅(qū)動(dòng)的3D虛擬數(shù)據(jù)中心誕生了,對接了多套監(jiān)控和管理系統(tǒng),可以查看實(shí)時(shí)的設(shè)備信息、動(dòng)態(tài)指標(biāo)、告警數(shù)據(jù)、監(jiān)控視頻、溫度云圖,資產(chǎn)系統(tǒng)中刪除一條資產(chǎn)數(shù)據(jù),它對應(yīng)的3D模型在虛擬空間中就自動(dòng)消失,增加一條資產(chǎn)數(shù)據(jù),它對應(yīng)的3D模型就自動(dòng)出現(xiàn)在數(shù)據(jù)指定的所屬機(jī)柜的所屬U位上。在配線表數(shù)據(jù)的驅(qū)動(dòng)下,幾十萬設(shè)備端口和配線也都在虛擬空間中自動(dòng)生成。
在這個(gè)實(shí)時(shí)數(shù)據(jù)驅(qū)動(dòng)的虛擬空間里同期誕生的,還有以“萬物可視”為初創(chuàng)目標(biāo)的UINO。經(jīng)過一年多的產(chǎn)品化研發(fā),我們在2012年底推出了DCV數(shù)據(jù)中心可視化系統(tǒng),到2015年已經(jīng)被應(yīng)用在上百個(gè)數(shù)據(jù)中心,對接了上千套IT和基礎(chǔ)設(shè)施軟件,不僅數(shù)據(jù)驅(qū)動(dòng)3D孿生場景,更已經(jīng)被用于反向控制各類設(shè)備,甚至啟停和切換應(yīng)用系統(tǒng)。
但直到2017年,我們已經(jīng)進(jìn)入數(shù)據(jù)中心之外的物聯(lián)網(wǎng)市場,并推出公眾可以使用的“模模搭”孿生場景編輯工具的時(shí)候,才意識(shí)到自己做的就是數(shù)字孿生,而且,從創(chuàng)業(yè)第一天起,就是在做有真實(shí)數(shù)據(jù)一一映射和雙向互動(dòng)的,用于現(xiàn)實(shí)世界的認(rèn)知、分析、管理和控制的,數(shù)字“真”孿生。
從那天起,我們也立下了要把真孿生能力提供給所有致力于萬物互聯(lián)的從業(yè)者的目標(biāo)。
1.真孿生
一切現(xiàn)實(shí)物體的虛擬化表達(dá),都可以算是廣義的數(shù)字孿生,但行業(yè)公認(rèn)的狹義數(shù)字孿生又有所不同,比如Autodesk在官網(wǎng)上就明確說,3D CAD不是數(shù)字孿生,為什么呢?解釋是說,他們認(rèn)為數(shù)字孿生應(yīng)該是有實(shí)時(shí)數(shù)據(jù)連接的,而CAD不是。Gartner在關(guān)于數(shù)字孿生的研究報(bào)告里,明確提出數(shù)字孿生體應(yīng)該是與現(xiàn)實(shí)物體一對一映射、實(shí)時(shí)數(shù)據(jù)連接、有數(shù)據(jù)模型和對應(yīng)的數(shù)據(jù)的。Microsoft、Amazon等描述的數(shù)字孿生,也都符合Gartner的這一基本定義。
數(shù)字孿生,就是數(shù)字雙胞胎。從大眾最樸素的認(rèn)知角度來看,什么叫真雙胞胎?像好多電視劇演的,不僅長相相似,還有神秘的遙感,大家就認(rèn)為是雙胞胎了。后者是不是真的存在,說不好,但在大眾觀念里確實(shí)接受這個(gè)說法。對應(yīng)到數(shù)字孿生,長相相似是可視化,神秘遙感是實(shí)時(shí)數(shù)據(jù)連接,再加上一對一,可以算是最基本的“真孿生”了。在這個(gè)基礎(chǔ)上,數(shù)字孿生系統(tǒng)還應(yīng)該支持一系列靈活的內(nèi)置和擴(kuò)展的分析、預(yù)測、仿真的能力,從而支持各種應(yīng)用場景,最終形成上層應(yīng)用和數(shù)字化的現(xiàn)實(shí)世界之間的中間層,就如同計(jì)算機(jī)操作系統(tǒng)在應(yīng)用軟件和底層硬件之間構(gòu)成的中間層,對應(yīng)用和用戶屏蔽硬件的復(fù)雜性,帶來更高的實(shí)現(xiàn)效率,以及和用戶之間類似從DOS到Windows的更快捷的交互操作方式。
要在各種物聯(lián)場景中構(gòu)建真孿生應(yīng)用,其實(shí)是個(gè)相當(dāng)復(fù)雜的工程。我們致力于要讓人人都能創(chuàng)造真孿生的應(yīng)用,從大量的實(shí)踐經(jīng)驗(yàn)和技術(shù)積累中提煉出一套數(shù)字孿生技術(shù)棧,包括引擎層、API層、工具層、資源層、生態(tài)層等多個(gè)層級(jí)及眾多技術(shù)工具和組件,構(gòu)建成一個(gè)可以支持復(fù)雜業(yè)務(wù)場景的技術(shù)體系,這些針對數(shù)字孿生應(yīng)用開發(fā)打造的系列技術(shù)和工具,正逐步通過ThingJS開放平臺(tái)提供給所有數(shù)字世界的建設(shè)者和管理者。
為適應(yīng)真孿生的要求,我們在底層技術(shù)和工具打造上做了大量針對性的研發(fā),比如以底層的3D引擎為例,由于瀏覽器去插件化,而數(shù)字孿生應(yīng)用要真正應(yīng)用到管理場景中,與各種管理軟件和組件無縫整合,并可以跨平臺(tái)使用,我們從2014年開始轉(zhuǎn)向?yàn)g覽器原生支持的WebGL引擎能力,在初期嘗試了threejs之后,發(fā)現(xiàn)也難以滿足復(fù)雜和大型場景中的許多需求,因此開始自研ThingJS的WebGL引擎,以提供對數(shù)字孿生可視化場景中許多獨(dú)特要求的支持,并通過自主引擎有力支撐上層工具的功能實(shí)現(xiàn)和擴(kuò)展。再比如數(shù)據(jù)處理部分,除了內(nèi)置大量數(shù)據(jù)接口的數(shù)據(jù)集成組件,我們實(shí)現(xiàn)了專用的數(shù)字孿生中臺(tái),可以定義孿生體和孿生關(guān)系的數(shù)據(jù)模型,通過數(shù)據(jù)處理器形成數(shù)字孿生知識(shí)圖譜,提供物理空間和邏輯空間分析能力,為上層業(yè)務(wù)應(yīng)用、可視化引擎和仿真預(yù)測分析組件提供數(shù)據(jù)API。這只是兩個(gè)例子,為了支持多樣化數(shù)字真孿生的應(yīng)用場景,我們的技術(shù)棧中幾乎每個(gè)部分都做了大量針對性的設(shè)計(jì)和優(yōu)化。
UINO提供的ThingJS數(shù)字孿生平臺(tái)包括幾個(gè)部分:
2.引擎層
我們提供了自研的ThingJS 3D底層渲染引擎。底層渲染能力是所有可視化產(chǎn)品的基石,我們在設(shè)計(jì)自研引擎時(shí)努力做到“概念領(lǐng)先,技術(shù)領(lǐng)先”,傾力打造一款面向數(shù)字孿生領(lǐng)域的渲染引擎,保證其在該領(lǐng)域強(qiáng)大的渲染能力。
我們注意到目前很多3D可視化廠商在Web端使用的是開源的3D引擎,比如three.js等,但這些引擎也存在一些問題:
- 缺乏數(shù)字孿生可視化應(yīng)用中常用的功能。沒有提供大批量物體渲染的完整優(yōu)化方案。
- 渲染器邏輯耦合嚴(yán)重,難以實(shí)現(xiàn)高性能的后期處理。
- 內(nèi)置材質(zhì)難以擴(kuò)展,不容易基于PBR材質(zhì)進(jìn)行二次修改。
- 渲染列表的生成與渲染邏輯深度耦合,容易造成性能浪費(fèi)。
ThingJS 3D的渲染引擎則針對這些痛點(diǎn),進(jìn)行了優(yōu)化與改進(jìn):
提供針對大型物聯(lián)網(wǎng)場景的技術(shù)特性,如分層細(xì)節(jié)LOD、延遲加載、顯示與邏輯對象分離等。
針對海量動(dòng)態(tài)物體創(chuàng)建和數(shù)據(jù)更新、海量靜態(tài)物體合并和單體拾取的優(yōu)化支持。
從渲染器抽離RenderPass的概念??蓤?zhí)行粒度更低的渲染命令,實(shí)現(xiàn)高性能的后期處理。另外,通用邏輯與底層渲染API解耦,可同時(shí)面向WebGL和WebGPU。
提供材質(zhì)繼承的機(jī)制,可快速實(shí)現(xiàn)對PBR材質(zhì)的定制化修改,實(shí)現(xiàn)掃光等材質(zhì)特效,提升渲染效果。
優(yōu)化場景圖的更新邏輯。通過實(shí)現(xiàn)內(nèi)置的矩陣標(biāo)臟系統(tǒng),提高場景更新效率。提供可擴(kuò)展的渲染層級(jí)列表,滿足數(shù)字孿生場景中的特定渲染需求。
ThingJS 3D引擎的2.0版本有計(jì)劃在明年開源。ThingJS希望為數(shù)字孿生應(yīng)用提供基礎(chǔ)平臺(tái),要消除用戶在選擇技術(shù)平臺(tái)時(shí)的擔(dān)憂,增強(qiáng)在技術(shù)可控性上的長期信心,開源是一種有效的手段,也是我們自己技術(shù)能力的一種體現(xiàn),希望通過引擎開源,可以進(jìn)一步拓寬用戶群體,降低用戶門檻
3.開發(fā)API層
ThingJS API是基于JavaScript語法封裝的開發(fā)API類庫。
常見的3D開發(fā)庫,往往需要開發(fā)者掌握一定程度的3D開發(fā)經(jīng)驗(yàn)。而在Web平臺(tái),應(yīng)用開發(fā)的主力軍通常是前端開發(fā)人員,比較熟悉Web開發(fā),對3D圖形開發(fā)了解并不多,從頭學(xué)習(xí)3D開發(fā)又需要投入大量精力和時(shí)間,致使項(xiàng)目難以推進(jìn)。
ThingJS API則致力于降低數(shù)字孿生應(yīng)用開發(fā)的門檻,所以在開發(fā)語言的選擇上,ThingJS API使用前端開發(fā)中最流行的JavaScript,而不是大多數(shù)前端開發(fā)者不熟悉的C++、C#等語言,便于前端開發(fā)者迅速上手。
在功能封裝方面,ThingJS API提供了1000+開發(fā)接口,針對數(shù)字孿生開發(fā)封裝了各種對象、效果和控制,最大程度封裝和簡化3D概念,并符合主流的前端開發(fā)風(fēng)格,讓沒有接觸過3D開發(fā)的用戶可以快速搭建出成熟的數(shù)字孿生可視化應(yīng)用。另外,ThingJS可運(yùn)行在瀏覽器或node.js等環(huán)境中,可以支持瀏覽器自帶的調(diào)試工具,方便開發(fā)者實(shí)時(shí)調(diào)用和調(diào)試。
4.工具層
數(shù)據(jù)驅(qū)動(dòng)的數(shù)字孿生應(yīng)用,涉及到前后端多個(gè)環(huán)節(jié)和多種資源,過程是非常復(fù)雜的。要對接多種物聯(lián)網(wǎng)子系統(tǒng)的數(shù)據(jù)接口,處理GIS、BIM和CAD數(shù)據(jù),制作3D模型、3D場景和2D組態(tài)圖,做點(diǎn)位識(shí)別和數(shù)據(jù)綁定,開發(fā)各種數(shù)字孿生場景的交互控制功能等。
為降低數(shù)字孿生開發(fā)的成本,我們十年來積累和打磨了許多用于建設(shè)數(shù)字孿生系統(tǒng)的編輯和配置工具,也正逐步開放給所有用戶使用。目前還有ThingUI界面編輯器、ThingJS Editor場景藍(lán)圖編輯器和DIX孿生數(shù)據(jù)處理器等尚未開放,以下簡單介紹的是已經(jīng)開放或提供了公眾Beta版的工具:
ThingJS-X 0代碼應(yīng)用配置工具
是否一定要程序員寫代碼才能開發(fā)數(shù)字孿生應(yīng)用?我們在過去自己交付的上千個(gè)數(shù)字孿生項(xiàng)目中發(fā)現(xiàn),按照孿生體–孿生體集合–孿生場景–孿生業(yè)務(wù)的基本范式,通過組裝孿生體數(shù)據(jù)、模型、界面和動(dòng)作,可以滿足大多數(shù)數(shù)字孿生應(yīng)用的需求。
我們基于這套范式打造了ThingJS-X這樣一款0代碼構(gòu)建數(shù)字孿生可視化系統(tǒng)的工具平臺(tái),內(nèi)置了一套項(xiàng)目中總結(jié)的系統(tǒng)和業(yè)務(wù)邏輯,集合了ThingJS技術(shù)棧提供的各種能力和資源,能夠集成多樣化物聯(lián)網(wǎng)數(shù)據(jù)和ThingJS工具生成的各種資源和場景,讓用戶能靈活配置組裝數(shù)字孿生場景和業(yè)務(wù),支持復(fù)雜的交互和業(yè)務(wù)邏輯、多樣的場景和業(yè)務(wù)編排、豐富的組件和對象組合,打通數(shù)字孿生整個(gè)生產(chǎn)鏈,讓不具備開發(fā)能力的用戶也可以快速搭建復(fù)雜的數(shù)字孿生應(yīng)用,支持地圖級(jí)、城市級(jí)、園區(qū)級(jí)、建筑級(jí)、設(shè)備級(jí)的多層級(jí)場景組合,可以覆蓋智慧城市、智慧園區(qū)、智慧工廠、智慧能源等眾多行業(yè)的大多數(shù)數(shù)字孿生應(yīng)用需求。ThingJS-X還提供了資源組件和功能插件的擴(kuò)展方式,可以靈活擴(kuò)展系統(tǒng)功能。
ThingJS-X大幅降低了數(shù)字孿生應(yīng)用的構(gòu)建成本和門檻,沒有專業(yè)經(jīng)驗(yàn)的人也可以在三天之內(nèi)上手,快速構(gòu)建一個(gè)數(shù)字孿生場景應(yīng)用,從而讓更多人有機(jī)會(huì)創(chuàng)建和使用數(shù)字孿生系統(tǒng)。
CampusBuilder園區(qū)建筑級(jí)場景編輯工具
許多數(shù)字孿生應(yīng)用開發(fā)團(tuán)隊(duì)并沒有專業(yè)的3D建模人員,學(xué)習(xí)使用3ds Max等建模工具的門檻較高,大量模型自建的成本較高,讓模型場景用于數(shù)據(jù)驅(qū)動(dòng)應(yīng)用開發(fā)過程也較為繁瑣和復(fù)雜。如何讓數(shù)字孿生的場景建模不再重度依賴專業(yè)美術(shù)人員?如何降低場景建模的成本?
我們打造了一款場景編輯工具CampusBuilder,讓沒有3D專業(yè)背景和經(jīng)驗(yàn)的用戶都可以簡單拖拉拽完成各種園區(qū)和室內(nèi)場景的搭建。為方便數(shù)字孿生應(yīng)用開發(fā),內(nèi)置的模型庫已經(jīng)提供上萬個(gè)3D模型資源,并支持用戶使用自有模型,每個(gè)模型對象都可以提供數(shù)據(jù)標(biāo)識(shí)和數(shù)據(jù)屬性,可用于與現(xiàn)實(shí)對象的數(shù)據(jù)對接。在場景搭建過程中自動(dòng)生成空間層級(jí)結(jié)構(gòu),可以支持其它工具和開發(fā)者調(diào)用來實(shí)現(xiàn)復(fù)雜的空間層級(jí)操作。
CityBuilder城市及地理場景編輯工具
要采用GIS數(shù)據(jù)生成大范圍的3D城市場景,往往需要GIS專業(yè)人員、開發(fā)人員和設(shè)計(jì)師的協(xié)作,往往設(shè)計(jì)師出的概念設(shè)計(jì)圖與GIS數(shù)據(jù)和引擎的表現(xiàn)力并不匹配,開發(fā)人員在調(diào)效時(shí)也耗費(fèi)大量資源。
我們?yōu)榻档痛笮?D場景的制作成本,提升場景調(diào)效的效率,提供了CityBuilder生產(chǎn)工具,可以讀取GIS數(shù)據(jù)實(shí)時(shí)秒級(jí)生成城市級(jí)和地球級(jí)的3D場景。開發(fā)者不需要專業(yè)的GIS和3D知識(shí),簡單操作,就可以全自助創(chuàng)建大型3D場景,設(shè)計(jì)師也可以用簡單的拖拉拽操作在真實(shí)的GIS數(shù)據(jù)上系統(tǒng)性調(diào)配效果。能支持對多類圖層的實(shí)時(shí)動(dòng)態(tài)效果編輯,包括常規(guī)點(diǎn)、海量點(diǎn)、熱力圖、點(diǎn)位聚合、網(wǎng)格聚合、插值圖、常規(guī)線、管狀線、道路線、3D圍欄、建筑面、區(qū)域面、水體效果、3D園區(qū)場景、粒子特效、動(dòng)效掃光等。
支持全局環(huán)境渲染設(shè)置,包括光照、后期、背景、大氣、霧效,以及底圖濾鏡效果、云層效果、漸變映射等,從而實(shí)現(xiàn)效果模版替換,可以一鍵換膚。讓數(shù)字孿生應(yīng)用開發(fā)者可以自助獲得各種炫酷三維城市場景,以更低成本更高效率完成大范圍3D場景的項(xiàng)目需求。
TopoBuilder 2D拓?fù)鋱D編輯工具
數(shù)字孿生應(yīng)用中,往往不僅需要3D場景,也需要2D拓?fù)鋱D或組態(tài)圖,以表達(dá)孿生體之間的邏輯拓?fù)潢P(guān)系,并能對接外部數(shù)據(jù),驅(qū)動(dòng)拓?fù)鋱D中的對象狀態(tài),實(shí)現(xiàn)組態(tài)監(jiān)控、場景聯(lián)動(dòng)等應(yīng)用需求。
TopoBuilder提供了Web版的2D拓?fù)鋱D編輯工具,讓人人都可以制作各種組態(tài)圖、拓?fù)鋱D、流程圖,并可以對接實(shí)時(shí)數(shù)據(jù),獨(dú)立或內(nèi)置于3D場景中使用,用于數(shù)字孿生應(yīng)用。編輯器內(nèi)置豐富的圖標(biāo)圖元,每個(gè)對象都可以對接外部數(shù)據(jù),適用于物聯(lián)網(wǎng)的廣泛行業(yè)場景。采用拖拉拽的方式,兼容繪圖編輯器的主流操作,操控靈活,體驗(yàn)流暢。支持多人協(xié)同工作,共同編輯,提供ThingJS API開發(fā)接口,支持在各種數(shù)字孿生應(yīng)用中靈活使用。
ThingDepot 3ds Max插件
數(shù)字孿生世界離不開基礎(chǔ)的3D模型,開發(fā)者往往要自己去構(gòu)建大量模型并導(dǎo)入數(shù)字孿生場景開發(fā)中使用。
ThingDepot是ThingJS體系內(nèi)的模型資源庫和管理系統(tǒng),提供了數(shù)萬個(gè)ThingJS官方模型,降低了場景構(gòu)建的門檻。同時(shí)為支持用戶靈活方便地使用自己的模型,我們提供了對接ThingDepot的3ds MAX插件,增加建模軟件本身不具備的功能,減少生產(chǎn)流的復(fù)雜性。
插件包含了模型和場景編輯、特效模型制作、模型自動(dòng)查錯(cuò)、模型優(yōu)化、動(dòng)畫切分、一鍵上傳等諸多能力,以解決過去模型用于數(shù)字孿生應(yīng)用時(shí)的工作復(fù)雜性,比如:通過與3D引擎(thingjs、unity、ue等)材質(zhì)動(dòng)畫系統(tǒng)的直接對接,可直接輸出最終效果,不需要像過去那樣,在建完模型導(dǎo)入到引擎調(diào)材質(zhì),還要再退回到建模軟件調(diào)UV等復(fù)雜流程;再比如:對于模型貼圖等有不符合引擎要求的,提供自動(dòng)化修復(fù)能力,省去人工查找修改工作;再比如:對需要對象化的模型場景提供自動(dòng)化識(shí)別、拆分能力,不再像過去那樣還要到引擎里手動(dòng)設(shè)置屬性,由程序員來代碼指定對象,大大提升效率。 美術(shù)人員通過使用該插件,可以提高生產(chǎn)效率和質(zhì)量效果,縮短模型、特效、場景生產(chǎn)的制作和使用周期,提供方便、快捷、可靠的資源利用方式。
5.資源層
目前我們已經(jīng)提供了ThingDepot模型庫,降低了開發(fā)者的建模成本。但在一些常用和通用的場景功能上,各個(gè)開發(fā)者還都要獨(dú)立開發(fā)實(shí)現(xiàn),ThingJS明年上半年將推出AppDepot應(yīng)用插件庫和UIDepot UI組件資源庫,通過資源商店實(shí)現(xiàn)資源的眾創(chuàng)眾享,讓ThingJS的用戶們能使用到更多資源,進(jìn)一步降低使用門檻,拓展應(yīng)用場景。
6.生態(tài)層
除了技術(shù)工具和虛擬資源,我們還正為物聯(lián)網(wǎng)生態(tài)中的各家企業(yè)打造一個(gè)數(shù)字孿生的虛擬世界,物聯(lián)森友會(huì),并將很快推出試用服務(wù)。在這個(gè)森世界里,物聯(lián)網(wǎng)企業(yè)可以構(gòu)建物聯(lián)網(wǎng)方案闡述的數(shù)字孿生虛擬場景,和物聯(lián)網(wǎng)商品的數(shù)字孿生版本,一方面讓ThingJS用戶快速找到合適的物聯(lián)網(wǎng)產(chǎn)品和方案,一方面為所有物聯(lián)網(wǎng)供應(yīng)商提供一個(gè)能快速觸達(dá)產(chǎn)業(yè)上下游生態(tài),并有效展示自己的方案和產(chǎn)品的數(shù)字化虛擬世界。物聯(lián)森友會(huì)的生態(tài)圈,將讓用戶不僅可以創(chuàng)建數(shù)字化的虛擬世界,還能實(shí)現(xiàn)高效資源匹配,解決物聯(lián)網(wǎng)應(yīng)用場景和產(chǎn)品方案在供需兩端的碎片化、長尾化、不對稱等問題,更好更快更省地創(chuàng)建數(shù)字化的現(xiàn)實(shí)世界。
現(xiàn)實(shí)世界有多大,數(shù)字孿生的世界就有多大,甚至,更大。數(shù)字孿生還是個(gè)在發(fā)展早期的領(lǐng)域,我們所做的,也還只是數(shù)字孿生里的一小部分,我們在努力把過去十年積累的技術(shù)和經(jīng)驗(yàn),轉(zhuǎn)化為能被更多人使用的能力和服務(wù),希望能通過數(shù)字孿生,讓所有人都更好更容易地認(rèn)知、管理和創(chuàng)造數(shù)字化的新世界。
十年磨一劍,霜刃未曾試。今日把示君,誰有孿生事?
