0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于HTML5 WebGL的醫(yī)療物流系統(tǒng),觀察醫(yī)療物流過程

圖撲-數(shù)字孿生 ? 來源:圖撲科技 ? 作者:物聯(lián)網(wǎng)袋鼠 ? 2020-09-29 14:51 ? 次閱讀

物聯(lián)網(wǎng)( IoT ),簡單的理解就是物體之間通過互聯(lián)網(wǎng)進行鏈接。世界上的萬事萬物,都可以通過數(shù)據(jù)的改變進行智能化管理。IoT 的興起在醫(yī)療行業(yè)中具有拯救生命的潛在作用。不斷的收集用戶信息并且實時的進行診斷,所以未來 IoT 肯定在醫(yī)療行業(yè)的應(yīng)用會呈覆蓋性。下面是一個醫(yī)療物流系統(tǒng)案例,用來觀察醫(yī)療物流過程。

實現(xiàn)過程

增加光源

整個原場景其實是非常暗的,所以需要使用燈光的效果照亮整個場景,使其接近真實世界的場景。

我們看下對比。

light的一些屬性:

type代表燈光的類型

color代表燈光的顏色

intensity代表燈光的強度(1是最大值)

range代表范圍

addLight() { const skyBox = this.dm.getDataByTag('skyBox') // 限制視野在天空球之內(nèi) this.gv.setSkyBox(skyBox) const light = new ht.Light() const lightSource = this.dm.getDataByTag('sunlight').p3() const config = { 'light.type': 'point', 'light.color': 'white', 'light.intensity': 0.3, 'light.range': 10000 } light.s(config) light.p3(lightSource)this.dm.add(light) }

看向物體

看到左下角的一個小窗口,其實是另一個 3D 場景,把它定位到左下角的,兩個場景都使用了反序列化(deserialize)。

因為要定位醫(yī)療箱移動,所以這里使用到了flyTo方法 。

var renderCanvas = function (medical, duration) { ht.Default.startAnim({ duration, easing(v, t) { return t }, action(v, t) { outScreenG3d.flyTo(medical, { direction: [-5, 3, 5], distance: 300 }) } }) }

封裝動畫

如果要實現(xiàn)這么多的動畫,首先想到的是一個個物體進行移動的過程。醫(yī)療箱的行走、電梯的升降、傳送帶運送醫(yī)療箱等我們都可以對它們的動作進行封裝。如圖可以看到醫(yī)療箱總是在動,所以定義了一個行走的動畫,每次醫(yī)療箱行走的距離、行走方向、動畫的配置都進行傳參。

這里要說明的參數(shù)

1.node(對應(yīng)的元素)

2.fn(動畫執(zhí)行完進行回調(diào)的函數(shù))

3.config(動畫配置)

4.coord(方向軸)

// 行走動畫 walkAnim(node, fn, config, coord) { const { duration, space } = config const positionArray = node.p3()let isShadow = false let ShadowNode = null // 如果移動的元素是icu車或者供應(yīng)車的話 獲取它的陰影跟隨元素移動 if (node.getTag() === 'supply' || node.getTag() === 'icuCar') { isShadow = true ShadowNode = this.dm.getDataByTag(`${node.getTag()}Shadow`) } ht.Default.startAnim({ duration, easing: function (t) { return t }, action(v, t) { if (coord === 'x') { node.p3(positionArray[0] + t * space, positionArray[1], positionArray[2]) isShadow && ShadowNode.p3(positionArray[0] + t * space, positionArray[1], positionArray[2]) } else if (coord === 'y') { node.p3(positionArray[0], positionArray[1] + t * space, positionArray[2]) isShadow && ShadowNode.p3(positionArray[0], positionArray[1] + t * space, positionArray[2]) } else { node.p3(positionArray[0], positionArray[1], positionArray[2] + t * space) isShadow && ShadowNode.p3(positionArray[0], positionArray[1], positionArray[2] + t * space) } }, finishFunc() { typeof fn === 'function' && fn(node) } })}

物體之間的影響

電梯的升降會影響很多東西,比如平臺的移動會帶著傳送帶和醫(yī)療箱,這里我用到了sethost吸附方法(吸附:節(jié)點指定宿主,宿主進行改變會影響節(jié)點)。很多場景下非常合適,我需要電梯升降的過程中帶用醫(yī)療箱和平臺一起上升,還有醫(yī)療箱放到傳送帶的時候,醫(yī)療箱要動起來,感覺是這真的傳送帶在帶動醫(yī)療箱進行運動。

這里要說明的參數(shù):

1.node(操作的電梯元素)

2.medicalKit(醫(yī)療箱)

3.fn(動畫執(zhí)行完進行回調(diào)的函數(shù))

4.status(電梯上升和下降的狀態(tài))

5.config(動畫配置)

// 電梯升降動畫 elevatorAnim(node, medicalKit, fn, status, config) { const self = this // 獲取電梯的index 讓對應(yīng)的頻臺也跟著動 const elevatorIndex = node.getTag().replace(/[^0-9]/ig, '') - 0 // 獲取醫(yī)療箱的index 控制電梯升降的距離 const medicalKitIndex = medicalKit.getTag().replace(/[^0-9]/ig, '') - 0 const positionArray = node.p3() const station = self.dm.getDataByTag(`station${elevatorIndex}`) //吸附宿主 station.setHost(node) medicalKit.setHost(node) // 設(shè)置升降狀態(tài) if (elevatorIndex === 3) self.elevatorRunning = true // 升降距離 status 為 0 的時候是下降 最低部位的距離是固定的 所以只需要控制上升的距離 const medicalKitLevel = self.returnMedicalKitLevel(medicalKitIndex) // 電梯的屬性 // 最低點的位置 Lowest // 如果有軌道的話 就去軌道的位置 否則就按照層數(shù) orbitalP // 第一層的位置 distance let space const addSpace = medicalKitIndex === 7 ? 100 : 0 if (status == 1) { space = config.orbitalP ? config.orbitalP : config.distance + addSpace + (400 * medicalKitLevel) } else { space = config.Lowest } // 下降狀態(tài)時 醫(yī)療箱不會做動作 if (status === 0) { medicalKit.setHost() } return ht.Default.startAnim({ duration: config.orbitalP ? 2000 : (medicalKitLevel === 0 && elevatorIndex == 3 ? 700 : 2500 + (medicalKitLevel * 1000)), action(v, t) { node.p3( positionArray[0], positionArray[1] + ((space - positionArray[1]) * t), positionArray[2] ) }, finishFunc() { station.setHost() typeof fn === 'function' && fn(node) } }) }

動畫方法

動畫的過程中有個問題需要處理就是等待電梯的動畫,醫(yī)療箱在動畫過程中,需要判斷電梯是否在上升,如果不在地面的話,需要等待。

我的思路是,當醫(yī)療箱走到離電梯一段距離的時候,需要判斷電梯是否在上升狀態(tài),如果是的話,需要調(diào)用動畫暫停的方法。當elevatorRunning為 false 的時候代表電梯沒有運動,否則在運動中。電梯動畫開始的時候設(shè)置為 true,結(jié)束后設(shè)置變量為 false, 就可以監(jiān)控它的狀態(tài)了。ht.Default.startAnim方法返回一個實例,利用action方法, 實現(xiàn)輪詢監(jiān)聽動畫狀態(tài),然后進行操作。當elevatorRunning為 true 的話, 使用anim.pause()暫停當前動畫。當elevatorRunning為 false 的話, 使用anim.resume()繼續(xù)當前動畫。

const anim = ht.Default.startAnim({ duration,action(v, t) {node.p3( positionArray[0], positionArray[1], positionArray[2] - (tpMax - positionArray[2]) * t ); if (index > 1 && self.elevatorRunning === true) { if (node.p3()[2] <= stopMax) { ? ? ?     anim.pause(); ? ? ?     const t = setInterval(() => { if (self.elevatorRunning === false) { anim.resume(); clearInterval(t); } }, 100); } } }, finishFunc() { typeof fn === "function" && fn(); } });

事件監(jiān)聽(發(fā)布、訂閱)

因為需要監(jiān)聽某個當前動畫的結(jié)束,然后進行相機位移。如圖,我需要監(jiān)聽第一個 3D 場景中顯示提示文字動畫結(jié)束,然后執(zhí)行第二個 3D 場景的顯示。因為2個是不同的場景,是不能用回調(diào)的方法監(jiān)聽到的,所以這里就用到了eventBus事件總線。

下面是eventBus的使用,第一個參數(shù)代表要監(jiān)聽的注冊函數(shù)名,第二個是回調(diào)函數(shù)。// 事件總線 監(jiān)聽事件 eventbus.on('animation1', _ => { const medical = dm.getDataByTag('medicalKit1') renderView(medical, dm, gv)})下面是 eventBus 觸發(fā)的使用,第一個參數(shù)代表要觸發(fā)的函數(shù)名,第二個是發(fā)射給函數(shù)的參數(shù)。// 觸發(fā)事件 eventbus.emit("animation1", null);做完這個 demo 之后,除了對 HT for Web 更加熟練之外,對物聯(lián)網(wǎng)也有了更深刻的概念。

fqj

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關(guān)推薦

    應(yīng)用案例 如何監(jiān)測高敏感醫(yī)療設(shè)備運輸過程中的沖擊和振動?

    敏感的高科技醫(yī)療設(shè)備需要高水平的能力和現(xiàn)代化的運輸物流。瑞士Uroviva Services AG專業(yè)從事醫(yī)療設(shè)備的運輸,他們使用HK-MSR數(shù)據(jù)記錄儀監(jiān)測運輸途中的沖擊和振動,保障設(shè)備平穩(wěn)運輸。
    的頭像 發(fā)表于 07-26 11:50 ?253次閱讀
    應(yīng)用案例 如何監(jiān)測高敏感<b class='flag-5'>醫(yī)療</b>設(shè)備運輸<b class='flag-5'>過程</b>中的沖擊和振動?

    深入探索智慧園區(qū)物流系統(tǒng)的卓越園區(qū)管理效能

    在當今的物流領(lǐng)域,TMS智慧園區(qū)物流系統(tǒng)以其卓越的園區(qū)管理功能,為物流運營帶來了更高的效率和更好的管理。
    的頭像 發(fā)表于 04-07 10:45 ?359次閱讀
    深入探索智慧園區(qū)<b class='flag-5'>物流</b><b class='flag-5'>系統(tǒng)</b>的卓越園區(qū)管理效能

    鴻蒙OS元服務(wù)開發(fā):【WebGL網(wǎng)頁圖形庫開發(fā)概述】

    HTML5的canvas元素對象中使用,無需使用插件,支持跨平臺。WebGL程序是由JavaScript代碼組成的,其中使用的API可以利用用戶設(shè)備提供的GPU硬件完成圖形渲染和加速?;靖拍钊缦?。
    的頭像 發(fā)表于 04-02 17:26 ?388次閱讀
    鴻蒙OS元服務(wù)開發(fā):【<b class='flag-5'>WebGL</b>網(wǎng)頁圖形庫開發(fā)概述】

    淺談物流中心園區(qū)智慧用電系統(tǒng)的設(shè)計

    淺談物流中心園區(qū)智慧用電系統(tǒng)的設(shè)計 張穎姣 安科瑞電氣股份有限公司 上海嘉定201801 摘 要:煙草物流配送中心儲存的卷煙具有價值高、易燃等特點,因此加強煙草物流配送中心的防火是安防
    的頭像 發(fā)表于 03-12 10:24 ?256次閱讀
    淺談<b class='flag-5'>物流</b>中心園區(qū)智慧用電<b class='flag-5'>系統(tǒng)</b>的設(shè)計

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-WebGL網(wǎng)頁圖形庫開發(fā)概述

    HTML5的canvas元素對象中使用,無需使用插件,支持跨平臺。WebGL程序是由JavaScript代碼組成的,其中使用的API可以利用用戶設(shè)備提供的GPU硬件完成圖形渲染和加速?;靖拍钊缦?/div>
    發(fā)表于 03-08 14:24

    TMS智慧園區(qū)物流車輛管理系統(tǒng)物流行業(yè)的未來已來?

    在當今高速發(fā)展的物流行業(yè)中,效率和精確性是成功的關(guān)鍵。隨著科技的不斷進步,智慧園區(qū)物流車輛管理系統(tǒng)應(yīng)運而生,為物流行業(yè)帶來了革命性的變革。
    的頭像 發(fā)表于 03-08 09:59 ?471次閱讀

    鴻蒙開發(fā)【WebGL】簡單了解

    HTML5的canvas元素對象中使用,無需使用插件,支持跨平臺。WebGL程序是由JavaScript代碼組成的,其中使用的API可以利用用戶設(shè)備提供的GPU硬件完成圖形渲染和加速。 基本概念
    發(fā)表于 02-25 21:56

    智慧物流系統(tǒng)——智慧物流有哪些基本功能?

    智慧物流以信息技術(shù)為支撐,將各個物流階段系統(tǒng)感知,實現(xiàn)迅速、靈活、準確地了解物流問題。智能物流運用科學的思維方式、方法和先進技術(shù),創(chuàng)造更好的
    的頭像 發(fā)表于 01-23 16:40 ?1166次閱讀
    智慧<b class='flag-5'>物流</b><b class='flag-5'>系統(tǒng)</b>——智慧<b class='flag-5'>物流</b>有哪些基本功能?

    智慧園區(qū)物流管理系統(tǒng)有哪些功能?

    隨著物流行業(yè)的快速發(fā)展,智慧園區(qū)物流管理系統(tǒng)的應(yīng)用越來越廣泛。智慧園區(qū)物流管理系統(tǒng)是一種基于物聯(lián)網(wǎng)、人工智能、大數(shù)據(jù)等技術(shù)的
    的頭像 發(fā)表于 01-22 20:37 ?1087次閱讀
    智慧園區(qū)<b class='flag-5'>物流</b>管理<b class='flag-5'>系統(tǒng)</b>有哪些功能?

    物流行業(yè)的革命性創(chuàng)新:智慧園區(qū)物流管理系統(tǒng)

    智慧園區(qū)物流管理系統(tǒng)作為當今社會一項重要的創(chuàng)新技術(shù),融合了大數(shù)據(jù)、云計算和人工智能等多項先進技術(shù),成功地實現(xiàn)了對園區(qū)內(nèi)物流活動的全方位掌控與智能化管理。以下,國辰智企科技將從三個方面向您展示這一
    的頭像 發(fā)表于 01-13 21:30 ?351次閱讀
    <b class='flag-5'>物流</b>行業(yè)的革命性創(chuàng)新:智慧園區(qū)<b class='flag-5'>物流</b>管理<b class='flag-5'>系統(tǒng)</b>

    智慧工業(yè)之智慧物流解決方案-新導物聯(lián)

    管理不規(guī)范、信息流不暢、運輸效率低下等。針對這些問題,新導物聯(lián)智慧物流解決方案應(yīng)運而生。通過應(yīng)用智能技術(shù)和物聯(lián)網(wǎng),實現(xiàn)物流過程的自動化、智能化和可視化,為企業(yè)提供更有效、精確的物流服務(wù)。 具體設(shè)置: 智慧
    的頭像 發(fā)表于 01-10 13:33 ?912次閱讀

    物聯(lián)網(wǎng)技術(shù)在醫(yī)療廢物管理系統(tǒng)中的應(yīng)用與優(yōu)勢

    廢物混合、醫(yī)療物流失等問題,這些問題可能導致醫(yī)療廢物的二次污染和細菌傳播等風險。因此,為了加強醫(yī)療廢物的監(jiān)管,實現(xiàn)醫(yī)療廢物信息化管理,陜西
    的頭像 發(fā)表于 12-25 16:10 ?724次閱讀
    物聯(lián)網(wǎng)技術(shù)在<b class='flag-5'>醫(yī)療</b>廢物管理<b class='flag-5'>系統(tǒng)</b>中的應(yīng)用與優(yōu)勢

    物通博聯(lián)工業(yè)網(wǎng)關(guān)助力物流分揀系統(tǒng)智能運維,提升物流系統(tǒng)穩(wěn)定性!

    在當今快速發(fā)展的物聯(lián)網(wǎng)時代,智能物流分揀系統(tǒng)成為了提高物流效率和準確性的關(guān)鍵。對于物流分揀中心來說,每天處理千萬級包裹,有可能面臨輸送履帶運行情況不可控,發(fā)生異常停止或擁塞等情況后處理
    的頭像 發(fā)表于 12-08 17:18 ?513次閱讀
    物通博聯(lián)工業(yè)網(wǎng)關(guān)助力<b class='flag-5'>物流</b>分揀<b class='flag-5'>系統(tǒng)</b>智能運維,提升<b class='flag-5'>物流</b><b class='flag-5'>系統(tǒng)</b>穩(wěn)定性!

    tms物流運輸管理系統(tǒng):助力物流行業(yè)升級

    tms物流運輸管理系統(tǒng),作為一項創(chuàng)新性的數(shù)字化解決方案,正在以其高效、智能的特點迅速贏得物流行業(yè)的青睞。它不僅為物流企業(yè)提供了全方位的管理和監(jiān)控能力,還為客戶提供了更便捷、可靠的
    的頭像 發(fā)表于 12-06 21:16 ?886次閱讀
    tms<b class='flag-5'>物流</b>運輸管理<b class='flag-5'>系統(tǒng)</b>:助力<b class='flag-5'>物流</b>行業(yè)升級

    醫(yī)療廢物智能管理系統(tǒng)提高醫(yī)廢監(jiān)管水平

    醫(yī)療機構(gòu)所產(chǎn)生的醫(yī)療廢物仍然采用手工交接的模式,而醫(yī)療廢物在院內(nèi)收集、處理過程中,又容易成為疾病的傳染源,造成交叉感染或二次污染。如何追溯醫(yī)療
    的頭像 發(fā)表于 11-21 16:15 ?380次閱讀
    <b class='flag-5'>醫(yī)療</b>廢物智能管理<b class='flag-5'>系統(tǒng)</b>提高醫(yī)廢監(jiān)管水平