吴忠躺衫网络科技有限公司

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

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

3天內不再提示

基于HTML5 WebGL的醫療物流系統,觀察醫療物流過程

圖撲-數字孿生 ? 來源:圖撲科技 ? 作者:物聯網袋鼠 ? 2020-09-29 14:51 ? 次閱讀

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

實現過程

增加光源

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

我們看下對比。

light的一些屬性:

type代表燈光的類型

color代表燈光的顏色

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

range代表范圍

addLight() { const skyBox = this.dm.getDataByTag('skyBox') // 限制視野在天空球之內 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)。

因為要定位醫療箱移動,所以這里使用到了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 }) } }) }

封裝動畫

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

這里要說明的參數

1.node(對應的元素)

2.fn(動畫執行完進行回調的函數)

3.config(動畫配置)

4.coord(方向軸)

// 行走動畫 walkAnim(node, fn, config, coord) { const { duration, space } = config const positionArray = node.p3()let isShadow = false let ShadowNode = null // 如果移動的元素是icu車或者供應車的話 獲取它的陰影跟隨元素移動 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) } })}

物體之間的影響

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

這里要說明的參數:

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

2.medicalKit(醫療箱)

3.fn(動畫執行完進行回調的函數)

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

5.config(動畫配置)

// 電梯升降動畫 elevatorAnim(node, medicalKit, fn, status, config) { const self = this // 獲取電梯的index 讓對應的頻臺也跟著動 const elevatorIndex = node.getTag().replace(/[^0-9]/ig, '') - 0 // 獲取醫療箱的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) // 設置升降狀態 if (elevatorIndex === 3) self.elevatorRunning = true // 升降距離 status 為 0 的時候是下降 最低部位的距離是固定的 所以只需要控制上升的距離 const medicalKitLevel = self.returnMedicalKitLevel(medicalKitIndex) // 電梯的屬性 // 最低點的位置 Lowest // 如果有軌道的話 就去軌道的位置 否則就按照層數 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 } // 下降狀態時 醫療箱不會做動作 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) } }) }

動畫方法

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

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

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(); } });

事件監聽(發布、訂閱)

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

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

fqj

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 物聯網
    +關注

    關注

    2913

    文章

    44937

    瀏覽量

    377067
  • 智慧醫療
    +關注

    關注

    9

    文章

    1071

    瀏覽量

    46607
  • 數據可視化
    +關注

    關注

    0

    文章

    471

    瀏覽量

    10365
收藏 人收藏

    評論

    相關推薦

    京東物流與通用物流達成戰略合作

    近日,京東物流與通用技術集團國際物流有限公司(簡稱“通用物流”)在北京舉行了戰略簽約合作儀式。此次合作標志著雙方將在物流領域展開深度合作,共同推動
    的頭像 發表于 12-13 10:16 ?238次閱讀

    未來物流發展趨勢與TMS的關系

    隨著全球化的加速和電子商務的蓬勃發展,物流行業正經歷著前所未有的變革。未來物流的發展趨勢不僅影響著供應鏈的效率和成本,也對企業的競爭力產生深遠影響。運輸管理系統(Transportation
    的頭像 發表于 11-26 09:40 ?564次閱讀

    丹佛斯傳動全面賦能智慧物流,助力物流業高質量發展

    上海2024年11月5日?/美通社/ -- 全球變頻技術和電氣化解決方案領導者丹佛斯傳動今日正式亮相2024亞洲國際物流技術與運輸系統展覽會(CeMAT?ASIA?2024,以下簡稱"物流
    的頭像 發表于 11-05 15:33 ?282次閱讀
    丹佛斯傳動全面賦能智慧<b class='flag-5'>物流</b>,助力<b class='flag-5'>物流</b>業高質量發展

    物流溫濕度監控系統有哪些功能特點

    隨著我國物流行業的快速發展,貨物在運輸過程中的安全問題日益受到關注。尤其是在食品等對溫濕度敏感的行業,一款高性能的物流溫濕度監控系統顯得尤為重要。
    的頭像 發表于 10-08 16:45 ?243次閱讀

    如何利用智能數據化分析物流狀態增加安全性

    數據化分析確保物流運輸安全的關鍵 隨著貿易全球化的發展,物流行業發展也緊跟貿易的腳步,物流商對于物流過程中的安全及時效性要求越來越高。集裝箱物流
    的頭像 發表于 09-09 16:17 ?242次閱讀
    如何利用智能數據化分析<b class='flag-5'>物流</b>狀態增加安全性

    應用案例 如何監測高敏感醫療設備運輸過程中的沖擊和振動?

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

    解析智慧物流園區系統的多方位優勢

    智慧物流園區系統是基于物聯網、大數據、人工智能等先進技術的應用系統,旨在實現物流園區的高效、智能化管理。隨著物流行業的快速發展,傳統
    的頭像 發表于 05-28 11:18 ?450次閱讀
    解析智慧<b class='flag-5'>物流</b>園區<b class='flag-5'>系統</b>的多方位優勢

    深入探索智慧園區物流系統的卓越園區管理效能

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

    宜科FX20插片式IO助力物流倉儲系統高效運行

    倉儲系統物流系統中不可缺少的部分,物流行業的現代化離不開倉儲物流的現代化,現代倉儲的發展必然會推動現代
    的頭像 發表于 04-03 15:09 ?666次閱讀

    鴻蒙OS元服務開發:【WebGL網頁圖形庫開發概述】

    HTML5的canvas元素對象中使用,無需使用插件,支持跨平臺。WebGL程序是由JavaScript代碼組成的,其中使用的API可以利用用戶設備提供的GPU硬件完成圖形渲染和加速。基本概念如下。
    的頭像 發表于 04-02 17:26 ?496次閱讀
    鴻蒙OS元服務開發:【<b class='flag-5'>WebGL</b>網頁圖形庫開發概述】

    分布式I/O技術革新:提升物流倉儲系統效能的關鍵角色

    隨著工業4.0概念的深入人心,物流行業正在經歷前所未有的變革。在這個過程中,物流企業必須積極走向工業自動化、智能化,進而提高物流效率,降低物流
    的頭像 發表于 03-14 18:40 ?441次閱讀
    分布式I/O技術革新:提升<b class='flag-5'>物流</b>倉儲<b class='flag-5'>系統</b>效能的關鍵角色

    淺談物流中心園區智慧用電系統的設計

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

    鴻蒙原生應用元服務開發-WebGL網頁圖形庫開發概述

    HTML5的canvas元素對象中使用,無需使用插件,支持跨平臺。WebGL程序是由JavaScript代碼組成的,其中使用的API可以利用用戶設備提供的GPU硬件完成圖形渲染和加速。基本概念如下
    發表于 03-08 14:24

    TMS智慧園區物流車輛管理系統物流行業的未來已來?

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

    鴻蒙開發【WebGL】簡單了解

    HTML5的canvas元素對象中使用,無需使用插件,支持跨平臺。WebGL程序是由JavaScript代碼組成的,其中使用的API可以利用用戶設備提供的GPU硬件完成圖形渲染和加速。 基本概念
    發表于 02-25 21:56
    易发百家乐| 扶绥县| 百家乐真人投注网站| 永利博百家乐官网现金网| 老虎机价格| 赌场百家乐赢钱| 茅台百家乐官网的玩法技巧和规则| 最好的网上真人赌博| 百樂坊百家乐的玩法技巧和规则 | 博彩公司评级| 在线百家乐作弊| 百家乐官网英皇娱乐城| 修武县| 大发888大发888m摩卡游戏博彩官方下载| 诚信百家乐在线平台| 贝博百家乐官网的玩法技巧和规则| 百家乐官网模拟游戏下载| 足球心水| 大发888加盟合作| 钱柜百家乐的玩法技巧和规则| 澳门百家乐官网是骗人的| 大发888游戏下载官网免费| 送彩金百家乐平台| 精英百家乐现金网| 喜来登百家乐官网的玩法技巧和规则| 百家乐官网西园二手房| 百家乐官网赚钱项目| 百家乐论坛| 巴登娱乐城信誉怎么样| 大发888娱乐场出纳| 红桃K百家乐的玩法技巧和规则 | 百家乐官网tt娱乐场开户注册 | 哈尔滨市| 百家乐玩法| 八大胜官网| 新利国际| 真人二八杠| 大发888出纳| 大发888注册送58网站| 大发888大发8668| 大发888真钱账户注册|