基於WebGL的3D可視化告警系統關鍵技術解析 ThingJS

2021-01-21 ThingJS

#三維可視化# #3D開發#

WebGL 3D技術新一代3D框架-ThingJS3D可視化告警系統案例基於ThingJS的通用架構設計

WebGL 3D技術

WebGL是一種在網頁瀏覽器中渲染3D圖形的 JavaScript API,無需加裝插件,只需編寫網頁代碼即可實現3D圖形的展示。WebGL技術相較於傳統的Web3D技術有兩大優點:第一,通過JavaScript腳本語言實現網絡交互式三維動畫製作,無需依賴任何瀏覽器插件;第二,WebGL基於底層的 OpenGL接口實現,具有底層圖形硬體(GPU)加速功能。

WebGL繪製3D模型的過程分為四個步驟如下:

第一,獲取頂點坐標。頂點坐標通常來自三維軟體導出,在獲取到頂點坐標後,存儲到顯存以便GPU更快讀取;第二,圖元裝配,畫出一個個三角形。圖元裝配就是由頂點生成一個個圖元(即三角形),這個過程是由頂點著色器完成的。頂點著色器會先將頂點坐標通過矩陣變換為屏幕坐標,然後由GPU進行圖元裝配;第三,進行光柵化,即生成片元 (一個個像素點)。第四,在圖元生成完畢之後,還需要給模型「上色」,由運行在GPU的「片元著色器」來完成。

新一代3D框架

如果直接使用 WebGL開發3D效率比較低,需要開發者對圖形學知識有很深入的了解,碎片化的概念並不易於開發。為了解決開發效率低的問題,出現了基於 JavaScript語言的第三方庫-three.js,這是開源的技術,受到了廣大前端轉3D開發師的追捧。

three.js是一個跨瀏覽器的腳本,它封裝了底層的圖形接口,對 WebGL有很好的支持,不需要掌握複雜的圖形學知識就能實現三維場景的渲染。如渲染黑色背景下的白色正方體和三角形, WebGL需要編程代碼大約150行,而 threejs編程只需要30行左右的代碼,工作量只有 WebGL的五分之一,大幅提高了開發效率。

相較而言,近兩年新興的3D框架-ThingJS,封裝了幾乎所有的3D概念,開發人員甚至不需要3D專業知識儲備,直接使用JavaScript調用3D源碼,輕鬆實現3D效果,順利完成二次開發。如加載3D場景,three.js需要100行左右的代碼,ThingJS僅需1行,直接JavaScript腳本調用3D場景URL。

3D可視化告警系統案例

3D可視化告警系統常見於城市交通指揮、地鐵通信、智能家居、消防安全領域,工業自動化設備運維管理過程中,常遇到故障設備定位困難、監控數據不形象不直觀等問題,基於 WebGL技術的3D框架開發,本案例實現了一個通用的3D可視化告警系統設計方案,不僅擺脫了傳統3D可視化方案依賴插件的束縛,解決了出錯率高、數據難以沉澱等問題。

從用戶角度出發,採用 WebGL技術在瀏覽器端對工業生產設備進行虛擬化仿真模擬,並基於綜合監控管理平臺採集到的設備運行數據進行車間設備運行情況的形象立體化展示,3D場景動效給管理者以良好的沉浸感和交互感,擺脫表格、文本等比較傳統的管理方式

某港口的數字告警監控可視化應用界面

基於ThingJS的通用架構設計

一個通用的告警系統,分為數據存儲層、數據處理層和數據展示層。

數據存儲層主要使用 mysql資料庫存儲設備、數據基本信息和採集到的告警信息,使用json文件存儲3D模型數據信息;數據處理層主要結合Ajax數據對接方式在線判斷告警信息,利用JavaScript腳本對數據進行處理分析以及業務邏輯的實現;數據展示層主要使用基於 WebGL的 ThingJS平臺組件完成對3D場景的加載渲染,並提供在線項目分享功能,用戶可以生成唯一URL和二維碼,在其他web系統嵌入iframe連結進行演示。【官網註冊連結】

1. 基礎功能構建

基礎操作含3大功能模塊:設備管理模塊、3D場景漫遊模塊以及設備健康狀態管理。

(1) 設備管理。用戶可以查看設備基本信息,通過拖拽的形式改變設備在場景中的位置,實現設備的縮放和旋轉操作,還可以根據自己的需要添加和刪除設備。ThingJS的開發師調用js腳本,控制物體的位置、旋轉、縮放,包括Z軸方向移動。【查看完整示例】

// 位置app.on('click', function(event) { if (event.picked) car.position = event.pickedPosition;});// 移動,z軸方向function obj_translate() { car.translate([0, 0, -1]);}// 旋轉,y軸方向function obj_rotate() { car.rotateY(45.0);}// 縮放function obj_scale() { car.scale = [1, 2, 1];}

(2) 3D場景自由漫遊。用戶通過滑鼠完成對整個3D場景的移動,縮放和旋轉操作,從而滿足用戶360度查看場景的需要,給用戶帶來良好的交互感和浸入感。ThingJS示例採用js腳本讓攝像機自動環繞某看點位置(世界坐標系下)或某物體旋轉。【3D演示】

某能源儲能電站告警系統可視化應用

(3) 設備健康狀態管理。用戶可自由查看機房內任意設備的健康度,健康度分為三個區間,分別用紅黃綠三種顏色來表示設備的健康狀態。當系統檢測到設備出現告警信息時,在該設備的上方彈出對應的告警標誌,用戶點擊告警標誌,彈出告警詳情,包括告警時間、告警類別、告警原因等。ThingJS平臺內,基於Ajax技術可以完成基本的數據請求,對設備溫度、健康狀態進行判斷,並設定一個報警界限值。【查看完整示例】

function updateData(obj) { // 如果網站是 https 接口則對應 https 請求 // 如果網站是 http 接口則對應 http 請求即可 $.ajax({ type: "get", url: "https://3dmmd.cn/getMonitorDataById", data: { "id": obj.id }, dataType: "json", // 返回的數據類型 json success: function (d) { console.log(d); var temper = d.data.temper; // 設置物體身上的監控數據 obj.setAttribute("monitorData/溫度", temper); changeColor(obj); // 每隔3s 請求一次數據 timer = setTimeout(function () { updateData(obj) }, 3000); } });}// 停止請求數據function stopUpdate() { clearTimeout(timer);}// 如果溫度>25 改變顏色function changeColor(obj) { var temper = obj.getAttribute("monitorData/溫度"); var value = temper.substr(0, temper.indexOf("℃")); if (value > 25) { obj.style.color = 'rgb(255,0,0)'; } else { obj.style.color = null; }}

2. 自動巡航功能

不僅僅是自動駕駛系統,工業設備可視化也可以加入自動巡航功能,以勻速的狀態移動前進。

用戶可以根據廠房環境和設備布局情況,設定巡航路徑,當用戶點擊自動巡航按鈕時,可以沿著設定好的路徑進行巡視,無需用戶手動操作,就能夠對路徑上的設備健康情況進行全局了解,大大減少了用戶的工作量,提高了工作效率。

ThingJS利用js腳本中的攝像機概念來確定觀察3D場景的視角,讓攝像機一直跟隨物體,達到設定巡航路線的目的。【查看完整示例】

new THING.widget.Button('攝像機跟隨物體', function () { // 每一幀設置攝像機位置 和 目標點 car.on('update', function () { // 攝像機位置為 移動小車後上方 // 為了便於計算 這裡用了坐標轉換 將相對於小車的位置 轉換為 世界坐標 app.camera.position = car.selfToWorld([0, 5, -10]); // 攝像機目標點為 移動小車的坐標 app.camera.target = car.position }, '自定義攝影機跟隨'); }); new THING.widget.Button('停止', function () { car.off('update', null, '自定義攝影機跟隨'); });});

ThingJS項目主要採用B/S架構,基於WebGL技術並採用更高效的3D封裝庫實現,用戶直接在瀏覽器上通過url地址訪問項目,不需要安裝任何插件。

ThingJS平臺的在線開發方案在瀏覽器端對自動化設備以及各個監控系統採集到的設備運行數據進行三維仿真模擬,不僅使得3D數據的展示更加形象、立體,達到了輔助運維的目的;同時一次在線開發,可以在多種終端設備、多種屏幕尺寸的系統上運行,隨時隨地查看監控畫面,大大降低了運營成本,減少了3D可視化項目的實施時間和成本。

相關焦點

  • 基於WebGL的倉儲糧食溫度告警可視化 ThingJS
    #三維可視化##3D開發#Web端糧堆溫度可視化什麼是B樣條曲線ThingJS 3D引擎技術糧堆的溫度可視化告警Web端糧堆溫度3D可視化為了控制穀物儲藏溫度,需要創造一個不利於蟲黴生長低溫環境的儲糧技術環境,然而出於成本考慮以及進出糧的需要,糧堆內的溫度傳感器設置數量有限,因此在儲糧當中測得的溫度值只是傳感器附近的溫度,其他部分則需要利用相應的方法進行數值模擬
  • 基於webgl的三維室內空間邏輯建模 three.js ThingJS
    與室外空間相比,[ThingJS平臺]的室內空間的三維可視化要求更加精細,如果不能很好地表達容易對用戶造成誤導!與室外空間相比,室內空間的層次結構較為明顯,各樓層間主要是通過樓梯、電梯等這些通道進行連接,除建築本身結構外還有門窗、欄杆、樓梯等要素,要注意這些人工要素的功能性表達。
  • ThingJS:基於WebGL的3D技術在網頁中的運用
    3D加速渲染,這樣Web開發人員可以藉助系統顯卡在瀏覽器裡更流暢地展示3D場景和模型。3D圖形引擎庫 - Three.js以Three.js為例,繪圖的流程如下所示:threejs是基於WebGL的 3D Javascript庫,它封裝了場景、相機、幾何、3D模型加載器、燈光、材質、著色器、動畫、粒子、數學工具等。
  • 基於WebGL的虛擬太陽系漫遊技術實現 ThingJS 科幻片
    #三維可視化##3D開發#虛擬功能需求2. 太陽系運行需求3. 3D模型呈現4. ThingJS技術分析5. 系統實現步驟3D可視化技術逐漸應用到現代多媒體的課堂教學中。(1)基於webGL技術,ThingJS可以將虛擬太陽系各星體3D模型和腳本運行情況相結合,最終呈現虛擬太陽系的3D可視化效果。(2)場景漫遊是系統藉助3D技術中的攝像機控制原理,通過控制滑鼠和鍵盤上的預定按鍵,以及移動攝像機的位置來實現,同時對應位置控制和視向控制的場景漫遊技術。位置控制。
  • webgl、Javascript、HTML、ThingJS、cesium都是什麼鬼?
    所有這些名詞都源於你要做可視化應用,如果不是請繞行。不是搞技術的朋友念一念就好了,搞技術開發的你得好好念。webgl——是一種3D繪圖協議,這種繪圖技術標準允許把JavaScript和OpenGL ES 2.0結合在一起,通過增加OpenGL ES 2.0的一個JavaScript綁定,WebGL可以為HTML5。
  • 基於WebGL的智慧校園可視化全景漫遊技術實踐 ThingJS
    #三維可視化##3D開發#智慧校園總體設計與規劃用戶與虛擬場景的互動實現全局場景的漫遊模式國內各大高校,近幾年紛紛搭建了3D智慧校園,如清華大學智慧校園系統,更是實現了虛擬課堂功能。新華三集團與優鍩ThingJS達成技術戰略合作,利用ThingJS平臺構建3D智慧校園,創建一個足不出戶就可以了解校園地理信息與文化背景的虛擬平臺。1. 總體設計與規劃智慧校園系統的架構設計分為基礎層、數據層、服務層、應用層和表示層五個層次。
  • 基於WebGL的三維數據可視化大屏開發流 ThingJS
    三維數據大屏可視化系統包含多源數據連接、生成二維/三維視圖、構建可視化大屏、大屏功能應用等一體化服務,基於多年可視化項目經驗,ThingJS平臺得出從數據源上傳到可視化大屏應用的完整流程,供參考。界面側邊欄提供應有盡有的可視化視圖列表,包含了太陽圖、柱狀圖、餅圖、玫瑰圖、折線圖、雷達圖、靜態和動態地圖、環狀圖、文本標籤雲等常用圖形。用戶點擊可視化視圖選項後,系統會進行視圖類型與數據結構匹配。
  • 藉助WebGL三維可視化技術檢索3D動態圖像
    大數據可視化平臺是通過三維表現技術來表示複雜的信息,實現對海量數據的立體呈現。可視化技術藉助人腦的視覺思維能力,通過挖掘數據之間重要的關聯關係將若干關聯性的可視化數據進行匯總處理,揭示數據中隱含的規律和發展趨勢,從而提高數據的使用效率。
  • 結合Echarts、Ajax技術實現可視化大屏監控 ThingJS 3d 開發
    基於數據流設計用戶獲取數據信息生成系統所需的頁面,需要通過登陸前臺界面觸發與後臺的交互,讀取數據傳輸信息,因此需要設計一個數據流模型圖,這裡就不展開來講。接下來,基於數據流設計,利用Echarts可視化技術實現可視化界面展現給用戶。
  • 3D可視化數字工廠智慧園區的優勢
    3D可視化技術的正在快速的發展和普及,已經廣泛應用與數字工廠、智慧交通、智慧園區、3D物聯網、智能監控等行業,商迪3D通過這些行業積累了豐富的創作經驗,取得了顯著的成果。商迪3D通過3D可視化技術將會幫助各大行業企業提升到高科技,方便快捷的日常運營管理領域,使其如虎添翼。
  • 教你製作NASA樣本實驗室3D渲染圖!3D ThingJS
    本文就來解析一下,如何完成在物聯網領域,更多是連結傳感器設備進行數據傳輸,進行可視化的直觀展示,而NASA展示Bennu小行星樣本實驗室渲染圖,也許僅僅是新聞發布的演示需求,告訴人們更多有關於宇宙探索的動作——
  • WebGL 入門 – WebGL框架
    但是,也有很多人基於WebGL開發出了各種開源框架,現在,我們就來看看目前有哪些框架能夠為我們所用。Three.js Three.js 是一個開源的JavaScript 3D引擎,該項目的目標是創建一個低複雜、輕量級的3D庫,用最簡單、直觀的方式封裝WebGL中的常用方法。
  • 智慧氣象大屏可視化決策系統
    綜合態勢監測  支持基於地理信息系統,對責任區、警戒區等重點區域以及極值站、隱患點、信息員等要素的位置、範圍、狀態等信息進行監測;支持融合氣象管理部門業務系統、氣象觀測站、天氣雷達等數據資源,對降水、氣溫、氣壓、天氣狀況、相對溼度、風力以及氣象防災減災、輿情等領域的關鍵指標進行綜合監測分析,支持災害氣象預警告警,輔助管理者全面掌控氣象態勢,實現氣象準確預測、及時響應,綜合氣象態勢一屏掌握
  • 公共衛生安全大屏可視化決策系統
    醫療資源監測支持基於地理信息系統,直觀展示各類醫療機構、公共衛生部門、醫療物資生產企業等管理要素的位置、分布、範圍;支持整合各類醫療衛生資源,對從醫人員、醫療費用、醫療床位、醫療設備等醫療資源進行可視化監測,對醫療資源的庫存、調度、消耗以及生產能力進行可視監測和閾值告警,輔助管理者綜合掌控轄區內醫療資源狀況,為突發情況下醫療資源應急提供決策支持。2.2.2.
  • three.js為何如此奇妙
    WebGL是在瀏覽器中實現三維效果的一套規範,而最初使用WebGL原生的API來寫3D程序是一件非常痛苦的事情,在辛苦的付出下WebGL開源框架出現了,其中three.js就是非常優秀的一個,它掩蓋了很多麻煩的細節,那麼,就讓我們一起來看看,什麼是three.js吧!
  • Threejs開發3D地圖實踐總結
    【技術沙龍】AI開發者實戰營-7分鐘打造1個定製技能。7月22號,我們等你一起! 前段時間連續上了一個月班,加班加點完成了一個3D攻堅項目。也算是由傳統web轉型到webgl圖形學開發中,坑不少,做了一下總結分享。
  • 手寫動態 3D 蛛網圖 | THREE.js
    原創 服老思 P話 收錄於話題#3D1#可視化1#算法2#數據2��雷達圖容易誤用,所以我一般不用。從數據可視化的最佳實踐來說,不推薦 3D,因為透視關係導致無法準確比較。同時,不推薦動態圖,人老了後看起來眼花,當然某些場景下引入時間維度後,可以增強信息密度,如��動態柱狀圖和��動態折線圖。
  • 基於RFID技術的新型室分天線監控系統應用
    基於RFID技術的新型室分天線監控系統實現了室分天線監控的可視化,解決了無源室分天饋系統故障無法及時發現與上報的問題,縮減了故障排查時間,提升了用戶感知。故障發現由被動轉變為主動,故障分析由定性轉變為定量,故障定位由盲目轉變為精準,提高了5G室分系統維護和巡檢的效率。
  • webgl 迷宮項目開發總結
    收穫webgl 三個js庫webgl-utils.jswebgl-debug.jscuon-utils.js圖片加載var img = new Image();這樣可以防止webgl在渲染的時候圖片還沒加載完而出現黑屏的問題。監聽鍵盤事件保證事件代碼只運行一次。否則會重複綁定多個事件,也就是按鍵一次會觸發多次事件處理。
  • 八大瘋狂的 HTML5 Canvas 及 WebGL 動畫效果
    現在瀏覽器和web技術的不斷發展。瀏覽器如Firefox、Chrome、Safari和IE10,web技術如Canvas、SVG和WebGL。 網速越來越快。一些體驗需要實時數據流和預加載資源,更好的網絡狀況能有更好的體驗。 我們挑選了8個由WebGL、HTML5 Canvas和Javascript製作的絕妙效果。每一個都非常簡單但卻發人深省,瘋狂並且極具創意。