Browse Source

支持人员、钩子移动及报警

57862207 1 year ago
parent
commit
25586353dc
1 changed files with 85 additions and 16 deletions
  1. 85 16
      src/uwb-sample.js

+ 85 - 16
src/uwb-sample.js

@@ -62,6 +62,7 @@ Date.prototype.Format = function (fmt) {
 let dracoLoader = null;
 let g_sqlResult = null;
 let g_childMeshTmp = null;
+let g_childMeshTmpMan = null;
 
 function getsqlData() {
   if(g_PosArrayResult == null)
@@ -117,6 +118,7 @@ function getsqlData() {
       fbxLoader1.setDRACOLoader(dracoLoader);
       
       var bMovingMan = false;
+      var bMovingHook = false;
 
       fbxLoader1.load("../models/man.gltf", function (fbx) {
 
@@ -243,28 +245,25 @@ function getsqlData() {
 
           sdkInstance.sceneRenderer.scene.add(childMeshTmp)
 
-          
-          
-
           if(bMovingMan == false)
           {
-            g_childMeshTmp = childMeshTmp
+            g_childMeshTmpMan = childMeshTmp
             bMovingMan = true;
-            var startX = 8.7;
-            var startY = 50;
-            var endX = 20;
-            var endY = 15;
+            var startX = 20;
+            var startY = 30;
+            var endX = 8.7;
+            var endY = 50;
             var speed = 1;
             var distance = Math.sqrt((endX - startX)*(endX - startX)+(endY - startY)*(endY - startY))
             var sin = (endX - startX)/distance
             var cos = (endY - startY)/distance
             var direct = 1;
-            var curX = 8.7;
-            var curY = 50;
+            var curX = 20;
+            var curY = 30;
             var distanceOffset = 5;
             var xOffset = 10
             setInterval(()=>{
-              if(curX>endX || curX<startX)
+              if(curX<endX || curX>startX)
               {
                 direct*=-1;
               }
@@ -276,14 +275,15 @@ function getsqlData() {
                 z=-1;
               }
 
-              g_childMeshTmp.position.set(curX, z, curY)
+              g_childMeshTmpMan.position.set(curX, z, curY)
               var distanceCur = Math.sqrt((endX - curX)*(endX - curX)+(endY - curY)*(endY - curY))
               var objText = document.getElementById('collisionmenuid')
+              if(false)
               if(distanceCur<distanceOffset)
               {
                 objText.textContent = ''
                 setTimeout(()=>{
-                  objText.textContent = '碰撞危险报警,距离塔吊'+distanceCur.toFixed(2)+'米'
+                  objText.textContent = '碰撞危险报警,钩子距离高压线'+distanceCur.toFixed(2)+'米'
                   objText.style.color = 'red';
                 },100)
                 
@@ -292,12 +292,13 @@ function getsqlData() {
               {
                 objText.textContent = ''
                 setTimeout(()=>{
-                  objText.textContent = '未检测到碰撞危险,距离塔吊'+distanceCur.toFixed(2)+'米'
+                  objText.textContent = '未检测到碰撞危险,钩子距离高压线'+distanceCur.toFixed(2)+'米'
                   objText.style.color = 'white';
                 },100)
               }
             },1000)
           }
+          
         }
         
       };
@@ -395,8 +396,16 @@ function getsqlData() {
           let geometryArrayTop = []; // 将你的要合并的多个geometry放入到该数组
           let materialArrayTop = []; // 将你的要赋值的多个material放入到该数组
           
-          for(let iTop = 0;iTop<arrTop.length;iTop++){
-          //for(let iTop = 0;iTop<1;iTop++){
+
+          let iTop = 0;
+          let iLength = arrTop.length;
+          if(bMovingHook == false)
+          {
+            iTop = 4;
+            iLength = 5;
+          }
+          //for(let iTop = 0;iTop<arrTop.length;iTop++){
+          for(;iTop<iLength;iTop++){
             let geometryArray = []; // 将你的要合并的多个geometry放入到该数组
             let materialArray = []; // 将你的要赋值的多个material放入到该数组
             if(iTop == 9)
@@ -466,6 +475,66 @@ function getsqlData() {
           childMeshTmp.userData = customData;
 
           sdkInstance.sceneRenderer.scene.add(childMeshTmp)
+
+          
+
+          if(bMovingHook == false)
+          {
+            g_childMeshTmp = childMeshTmp
+            bMovingHook = true;
+            var startX = 8.7;
+            var startY = 50;
+            var endX = 20;
+            var endY = 15;
+            var speed = 1;
+            var distance = Math.sqrt((endX - startX)*(endX - startX)+(endY - startY)*(endY - startY))
+            var sin = (endX - startX)/distance
+            var cos = (endY - startY)/distance
+            var direct = 1;
+            var curX = 8.7;
+            var curY = 50;
+            var distanceOffset = 5;
+            var xOffset = 10
+            var zPos = 7;
+            setInterval(()=>{
+              if(curX>endX || curX<startX)
+              {
+                direct*=-1;
+              }
+              curX+=direct*sin*speed;
+              curY+=direct*cos*speed;
+              let z = 0.75;
+              if(curX>xOffset)
+              {
+                z=8;
+              }
+
+              g_childMeshTmp.position.set(curX, z, curY)
+              var distanceCur = Math.sqrt((endX - curX)*(endX - curX)+(endY - curY)*(endY - curY))
+              var objText = document.getElementById('collisionmenuid')
+              if(distanceCur<distanceOffset)
+              {
+                objText.textContent = ''
+                setTimeout(()=>{
+                  objText.textContent = '碰撞危险报警,钩子距离高压线X:'+(Math.abs(endX - curX)).toFixed(2)+'米;'
+                  +'Y:'+(Math.abs(endY - curY)).toFixed(2)+'米;'
+                  +'Y:'+(Math.abs(z - zPos)).toFixed(2)+'米;'
+                  objText.style.color = 'red';
+                },100)
+                
+              }
+              else
+              {
+                objText.textContent = ''
+                setTimeout(()=>{
+                  objText.textContent = '碰撞危险报警,钩子距离高压线X:'+(Math.abs(endX - curX)).toFixed(2)+'米;'
+                  +'Y:'+(Math.abs(endY - curY)).toFixed(2)+'米;'
+                  +'Z:'+(Math.abs(z - zPos)).toFixed(2)+'米;'
+                  objText.style.color = 'white';
+                },100)
+              }
+            },1000)
+          }
         }
       };
       setTimeout(()=>