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