华农3D项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

776 lines
24 KiB

3 months ago
  1. // 从这里开始
  2. var h1 = null
  3. var h2 = null
  4. var h3 = null
  5. var oldtransformNodex = null
  6. // var oldtransformNodeOther = null
  7. // var oldMesh = null
  8. var oldMeshOther = null
  9. var drag = null
  10. // var notmoveGroup = null
  11. // var movedGroup = null
  12. // var movesingle = false
  13. // var dynamicTexture = null
  14. // var dynamicTexture2 = null
  15. // var show = 50
  16. // var showdd = 50
  17. var isRotating = true
  18. var camera
  19. BABYLON.DefaultLoadingScreen.prototype.displayLoadingUI = function() {
  20. if (document.getElementById('customLoadingScreenDiv')) {
  21. document.getElementById('customLoadingScreenDiv').style.display = 'initial'
  22. return
  23. }
  24. this._loadingDiv = document.createElement('div')
  25. // this._loadingDiv.style.height = '1750px';
  26. this._loadingDiv.id = 'customLoadingScreenDiv'
  27. thecss = 'lohingifpc'
  28. thecss2 = 'zcpc'
  29. this._loadingDiv.innerHTML = "<div class='oka'><div class='" + thecss + "'><image src='./logok.gif' class='jiazaiimg'/></div></div>"
  30. this._resizeLoadingUI()
  31. window.addEventListener('resize', this._resizeLoadingUI)
  32. document.body.appendChild(this._loadingDiv)
  33. }
  34. // var movebyName = function(nodeName) {
  35. // var x = scene.getTransformNodeByName(nodeName)
  36. // moveTrans(x)
  37. // }
  38. function prepareGroupButton2(transformNodex, color, qu) {
  39. var mesheses = null
  40. if (transformNodex.getClassName() === 'TransformNode') {
  41. mesheses = transformNodex.getChildMeshes(false)
  42. } else {
  43. mesheses = []
  44. mesheses.push(transformNodex)
  45. }
  46. for (var i = 0; i < mesheses.length; i++) {
  47. mesheses[i].actionManager = new BABYLON.ActionManager(scene)
  48. // var theScaling = mesheses[i].scaling
  49. /* if (true) {
  50. try {
  51. mesheses[i].actionManager.registerAction(new BABYLON.InterpolateValueAction(BABYLON.ActionManager.OnPointerOutTrigger, mesheses[i], "scaling", new BABYLON.Vector3(theScaling.x, theScaling.y, theScaling.z), 100));
  52. mesheses[i].actionManager.registerAction(new BABYLON.InterpolateValueAction(BABYLON.ActionManager.OnPointerOverTrigger, mesheses[i], "scaling", new BABYLON.Vector3(theScaling.x * 1.01, theScaling.y * 1.01, theScaling.z * 1.01), 100));
  53. } catch (error) {
  54. //alert(error)
  55. }
  56. }*/
  57. // var clickbegin = false
  58. mesheses[i].actionManager.registerAction(
  59. new BABYLON.ExecuteCodeAction({
  60. trigger: BABYLON.ActionManager.OnPointerOverTrigger,
  61. parameter: ''
  62. },
  63. function() {
  64. // clickbegin = true
  65. // if (true) {
  66. // if (oldtransformNodeOther != null) {
  67. // oldtransformNodeOther.removeBehavior(drag)
  68. // var mesheses2 = null
  69. // if (oldtransformNodeOther.getClassName() === 'TransformNode') {
  70. // mesheses2 = oldtransformNodeOther.getChildMeshes(false)
  71. // } else {
  72. // mesheses2 = []
  73. // mesheses2.push(oldtransformNodeOther)
  74. // }
  75. // for (var i = 0; i < mesheses2.length; i++) {
  76. // try {
  77. // h2.removeMesh(mesheses2[i])
  78. // } catch (error) {
  79. // // alert(error)
  80. // }
  81. // }
  82. // }
  83. // oldtransformNodeOther = transformNodex
  84. // // transformNodex.addBehavior(drag);
  85. // var mesheses3 = null
  86. // if (transformNodex.getClassName() === 'TransformNode') {
  87. // mesheses3 = transformNodex.getChildMeshes(false)
  88. // } else {
  89. // mesheses3 = []
  90. // mesheses3.push(transformNodex)
  91. // }
  92. // for (var i = 0; i < mesheses3.length; i++) {
  93. // try {
  94. // h2.addMesh(mesheses3[i], color)
  95. // } catch (error) {
  96. // // alert(error)
  97. // }
  98. // }
  99. isRotating = false
  100. camera.useAutoRotationBehavior = isRotating
  101. // }
  102. }
  103. )
  104. )
  105. // 移出事件
  106. mesheses[i].actionManager.registerAction(
  107. new BABYLON.ExecuteCodeAction({
  108. trigger: BABYLON.ActionManager.OnPointerOutTrigger,
  109. parameter: ''
  110. },
  111. function() {
  112. // clickbegin = true
  113. // if (true) {
  114. // var mesheses4 = null
  115. // if (transformNodex.getClassName() === 'Mesh') {
  116. // mesheses4 = []
  117. // mesheses4.push(transformNodex)
  118. // }
  119. // for (var i = 0; i < mesheses4.length; i++) {
  120. // try {
  121. // h2.removeMesh(mesheses4[i])
  122. // } catch (error) {
  123. // // alert(error)
  124. // }
  125. // }
  126. // clickbegin = false
  127. isRotating = true
  128. camera.useAutoRotationBehavior = isRotating
  129. // }
  130. }
  131. )
  132. )
  133. mesheses[i].actionManager.registerAction(
  134. new BABYLON.ExecuteCodeAction({
  135. trigger: BABYLON.ActionManager.OnPickTrigger,
  136. parameter: ''
  137. },
  138. function() {
  139. clickbegin = true
  140. // if (true) {
  141. try {
  142. cameraClick(transformNodex)
  143. } catch (error) {
  144. // alert(error)
  145. }
  146. // clickbegin = false
  147. // }
  148. })
  149. )
  150. }
  151. }
  152. BABYLON.DefaultLoadingScreen.prototype.hideLoadingUI = function() {
  153. show = 50
  154. document.getElementById('customLoadingScreenDiv').style.display = 'none'
  155. document.getElementById('customLoadingScreenDiv_first').style.display = 'none'
  156. document.title = '水泵房'
  157. // var prepareGroupButton = function(transformNodex, color, qu) {
  158. // var mesheses = null
  159. // if (transformNodex.getClassName() === 'TransformNode') {
  160. // mesheses = transformNodex.getChildMeshes(false)
  161. // } else {
  162. // mesheses = []
  163. // mesheses.push(transformNodex)
  164. // }
  165. // for (var i = 0; i < mesheses.length; i++) {
  166. // mesheses[i].actionManager = new BABYLON.ActionManager(scene)
  167. // // var theScaling = mesheses[i].scaling
  168. // /* if (true) {
  169. // try {
  170. // mesheses[i].actionManager.registerAction(new BABYLON.InterpolateValueAction(BABYLON.ActionManager.OnPointerOutTrigger, mesheses[i], "scaling", new BABYLON.Vector3(theScaling.x, theScaling.y, theScaling.z), 100));
  171. // mesheses[i].actionManager.registerAction(new BABYLON.InterpolateValueAction(BABYLON.ActionManager.OnPointerOverTrigger, mesheses[i], "scaling", new BABYLON.Vector3(theScaling.x * 1.01, theScaling.y * 1.01, theScaling.z * 1.01), 100));
  172. // } catch (error) {
  173. // //alert(error)
  174. // }
  175. // }*/
  176. // var clickbegin = false
  177. // mesheses[i].actionManager.registerAction(
  178. // new BABYLON.ExecuteCodeAction({
  179. // trigger: BABYLON.ActionManager.OnPointerOverTrigger,
  180. // parameter: ''
  181. // },
  182. // function() {
  183. // clickbegin = true
  184. // if (true) {
  185. // if (oldtransformNodeOther != null) {
  186. // oldtransformNodeOther.removeBehavior(drag)
  187. // var mesheses2 = null
  188. // if (oldtransformNodeOther.getClassName() == 'TransformNode') {
  189. // mesheses2 = oldtransformNodeOther.getChildMeshes(false)
  190. // } else {
  191. // mesheses2 = []
  192. // mesheses2.push(oldtransformNodeOther)
  193. // }
  194. // for (var i = 0; i < mesheses2.length; i++) {
  195. // try {
  196. // h2.removeMesh(mesheses2[i])
  197. // } catch (error) {
  198. // // alert(error)
  199. // }
  200. // }
  201. // }
  202. // oldtransformNodeOther = transformNodex
  203. // // transformNodex.addBehavior(drag);
  204. // var mesheses3 = null
  205. // if (transformNodex.getClassName() === 'TransformNode') {
  206. // mesheses3 = transformNodex.getChildMeshes(false)
  207. // } else {
  208. // mesheses3 = []
  209. // mesheses3.push(transformNodex)
  210. // }
  211. // for (var i = 0; i < mesheses3.length; i++) {
  212. // try {
  213. // h2.addMesh(mesheses3[i], color)
  214. // } catch (error) {
  215. // // alert(error)
  216. // }
  217. // }
  218. // clickbegin = false
  219. // }
  220. // }
  221. // )
  222. // )
  223. // mesheses[i].actionManager.registerAction(
  224. // new BABYLON.ExecuteCodeAction({
  225. // trigger: BABYLON.ActionManager.OnPickTrigger,
  226. // parameter: ''
  227. // },
  228. // function() {
  229. // clickbegin = true
  230. // if (true) {
  231. // try {
  232. // quClick(qu)
  233. // } catch (error) {
  234. // // alert(error)
  235. // }
  236. // clickbegin = false
  237. // }
  238. // }
  239. // )
  240. // )
  241. // }
  242. // }
  243. var prepareGroupButton2ByMesh = function(transformNodex, color, qu) {
  244. var mesheses = null
  245. if (transformNodex.getClassName() === 'Mesh') {
  246. mesheses = []
  247. mesheses.push(transformNodex)
  248. }
  249. for (var i = 0; i < mesheses.length; i++) {
  250. mesheses[i].actionManager = new BABYLON.ActionManager(scene)
  251. // var theScaling = mesheses[i].scaling
  252. /* if (true) {
  253. try {
  254. mesheses[i].actionManager.registerAction(new BABYLON.InterpolateValueAction(BABYLON.ActionManager.OnPointerOutTrigger, mesheses[i], "scaling", new BABYLON.Vector3(theScaling.x, theScaling.y, theScaling.z), 100));
  255. mesheses[i].actionManager.registerAction(new BABYLON.InterpolateValueAction(BABYLON.ActionManager.OnPointerOverTrigger, mesheses[i], "scaling", new BABYLON.Vector3(theScaling.x * 1.01, theScaling.y * 1.01, theScaling.z * 1.01), 100));
  256. } catch (error) {
  257. //alert(error)
  258. }
  259. }*/
  260. // let clickbegin = false
  261. mesheses[i].actionManager.registerAction(
  262. new BABYLON.ExecuteCodeAction({
  263. trigger: BABYLON.ActionManager.OnPointerOverTrigger,
  264. parameter: ''
  265. },
  266. function() {
  267. // clickbegin = true
  268. // if (true) {
  269. if (oldMeshOther != null) {
  270. oldMeshOther.removeBehavior(drag)
  271. var mesheses2 = null
  272. if (oldMeshOther.getClassName() === 'Mesh') {
  273. mesheses2 = []
  274. mesheses2.push(oldMeshOther)
  275. }
  276. for (var i = 0; i < mesheses2.length; i++) {
  277. try {
  278. h2.removeMesh(mesheses2[i])
  279. } catch (error) {
  280. // alert(error)
  281. }
  282. }
  283. }
  284. oldMeshOther = transformNodex
  285. // transformNodex.addBehavior(drag);
  286. var mesheses3 = null
  287. if (transformNodex.getClassName() === 'Mesh') {
  288. mesheses3 = []
  289. mesheses3.push(transformNodex)
  290. }
  291. for (let i = 0; i < mesheses3.length; i++) {
  292. try {
  293. h2.addMesh(mesheses3[i], color)
  294. } catch (error) {
  295. // alert(error)
  296. }
  297. }
  298. // clickbegin = false
  299. isRotating = false
  300. camera.useAutoRotationBehavior = isRotating
  301. // }
  302. }
  303. )
  304. )
  305. // 移出事件
  306. mesheses[i].actionManager.registerAction(
  307. new BABYLON.ExecuteCodeAction({
  308. trigger: BABYLON.ActionManager.OnPointerOutTrigger,
  309. parameter: ''
  310. },
  311. function() {
  312. // clickbegin = true
  313. // if (true) {
  314. var mesheses4 = null
  315. if (transformNodex.getClassName() === 'Mesh') {
  316. mesheses4 = []
  317. mesheses4.push(transformNodex)
  318. }
  319. for (var i = 0; i < mesheses4.length; i++) {
  320. try {
  321. h2.removeMesh(mesheses4[i])
  322. } catch (error) {
  323. // alert(error)
  324. }
  325. }
  326. // clickbegin = false
  327. isRotating = true
  328. camera.useAutoRotationBehavior = isRotating
  329. // }
  330. }
  331. )
  332. )
  333. mesheses[i].actionManager.registerAction(
  334. new BABYLON.ExecuteCodeAction({
  335. trigger: BABYLON.ActionManager.OnPickTrigger,
  336. parameter: ''
  337. },
  338. function() {
  339. // clickbegin = true
  340. // if (true) {
  341. try {
  342. // quClick(transformNodex.name)
  343. cameraClick(transformNodex)
  344. } catch (error) {
  345. // alert(error)
  346. }
  347. // clickbegin = false
  348. // }
  349. }
  350. )
  351. )
  352. }
  353. }
  354. // 绑功能点
  355. // var cl = new BABYLON.Color3(0, 0, 1)
  356. // var c2 = new BABYLON.Color3(1, 0, 0)
  357. var smokeAlarms = []
  358. scene.transformNodes.forEach(function(node) {
  359. if (node.name.startsWith('smokealarm')) {
  360. smokeAlarms.push(node)
  361. }
  362. })
  363. var length = smokeAlarms.length
  364. console.log('以 smokealarm 开头的对象数量:', length)
  365. smokeAlarms.forEach(function(jk01, index) {
  366. console.log('smokeAlarms', jk01)
  367. var parts = jk01.name.split('smokealarm')
  368. if (parts.length > 1) {
  369. const paddedIndex = String(index + 1).padStart(3, '0')
  370. jk01.nameID = `S${paddedIndex}`
  371. // jk01.nameID = 'S' + parts[1]
  372. } else {
  373. jk01.nameID = 'S000'
  374. }
  375. jk01.baojing = false
  376. prepareGroupButton2(jk01)
  377. })
  378. // 存储所有 camera 相关的 Mesh
  379. const cameraMeshes = []
  380. scene.meshes.forEach(mesh => {
  381. if (mesh.name.startsWith('camera')) {
  382. cameraMeshes.push(mesh)
  383. }
  384. })
  385. const cameraCount = cameraMeshes.length
  386. console.log('以 camera 开头的 Mesh 数量:', cameraCount)
  387. // 定义颜色
  388. // const colorRed = new BABYLON.Color3(1, 0, 0) // 红
  389. const colorBlue = new BABYLON.Color3(0, 0, 1)
  390. cameraMeshes.forEach((cam, index) => {
  391. const paddedIndex = String(index + 1).padStart(3, '0')
  392. cam.nameID = `C${paddedIndex}`
  393. prepareGroupButton2ByMesh(cam, colorBlue, '摄像头1')
  394. })
  395. var light = new BABYLON.HemisphericLight('HemiLight', new BABYLON.Vector3(0, 1, 0), scene)
  396. light.intensity = 2
  397. light.diffuse = new BABYLON.Color3(0.92, 0.92, 0.92)
  398. // 给vue页面传值,加载完成之后
  399. parent.getIframeLoading('false')
  400. }
  401. BABYLON.DracoCompression.Configuration.decoder.wasmUrl = './js/draco_wasm_wrapper_gltf.js'
  402. BABYLON.DracoCompression.Configuration.decoder.wasmBinaryUrl = './js/draco_decoder_gltf.wasm'
  403. BABYLON.DracoCompression.Configuration.decoder.fallbackUrl = './js/draco_decoder_gltf.js'
  404. // createScene function that creates and return the scene
  405. var createScene = function() {
  406. engine.displayLoadingUI()
  407. var scene = new BABYLON.Scene(engine)
  408. camera = new BABYLON.ArcRotateCamera('Camera', 0, 0, 5, new BABYLON.Vector3(0, -1, 0), scene)
  409. camera.setTarget(new BABYLON.Vector3(0, 0, 0))
  410. camera.attachControl(canvas, true)
  411. camera.lowerRadiusLimit = 5.0 // 这里是最大的位置,值越大,物体越小
  412. camera.upperRadiusLimit = 200
  413. camera.radius = 10 // 增加 radius 值,模型变小 减小 radius 值,模型变大
  414. camera.alpha = Math.PI * -218.4 / 180 // 改Y轴角度
  415. camera.beta = Math.PI * 40 / 180 // XZ 平面的倾斜角度
  416. camera.inertia = 0.1 // 缩放的快慢
  417. camera.useAutoRotationBehavior = isRotating // 自动旋转
  418. camera.panningDistanceLimit = 2 // 平移半径
  419. camera.panningInertia = 0
  420. camera.autoTransitionRange = 1
  421. camera.pinchToPanMaxDistance = 0.1
  422. camera.pinchDeltaPercentage = 0.001
  423. camera.useAutoRotationBehavior = true
  424. // 改变场景背景颜色 - 背景颜色opacity值设为0,达到透明背景的效果
  425. scene.clearColor = new BABYLON.Color4(0, 0, 0, 0)
  426. scene.activeCamera = camera
  427. scene.activeCamera.useInputToRestoreState = true
  428. // var camera1_status = scene.activeCamera.storeState()
  429. var assetsManager = new BABYLON.AssetsManager(scene)
  430. var meshTask = assetsManager.addMeshTask('skull task', '', 'asset/', 'F5.glb')
  431. meshTask.onSuccess = function(task) {
  432. task.loadedMeshes[0].scaling = new BABYLON.Vector3(0.4, 0.4, 0.4)
  433. task.loadedMeshes[0].position = new BABYLON.Vector3(0, 0.35, 0)
  434. }
  435. meshTask.onError = function(task, message, exception) {
  436. console.log(message, exception)
  437. }
  438. var hdrTexture = new BABYLON.CubeTexture.CreateFromPrefilteredData('textures/environmentSpecular.env', scene)
  439. scene.environmentTexture = hdrTexture
  440. var spriteManagerPlayer = new BABYLON.SpriteManager('playerManager', './img/bl9.png', 10, {
  441. width: 100,
  442. height: 100
  443. }, scene)
  444. // spriteManagerPlayer.renderingGroupId = 2;
  445. spriteManagerPlayer.isPickable = true
  446. scene.onPointerDown = function(evt) {
  447. var pickResult = scene.pickSprite(this.pointerX, this.pointerY)
  448. var pick = scene.pick(scene.pointerX, scene.pointerY)
  449. console.log('pick', pick.pickedPoint)
  450. if (pickResult.pickedSprite != null) {
  451. if (pickResult.hit) {
  452. alert(pickResult.pickedSprite.name)
  453. }
  454. }
  455. }
  456. // renderCanvas.style.backgroundImage = 'url("./textures/' + '4' + '.jpg")'
  457. // console.log("x2");
  458. assetsManager.load()
  459. drag = new BABYLON.PointerDragBehavior({
  460. dragPlaneNormal: new BABYLON.Vector3(0, 0, 1)
  461. })
  462. // drag.useObjectOrienationForDragging = false;
  463. drag.validateDrag = (targetPosition) => {
  464. // console.log(targetPosition)
  465. if (targetPosition.x > 10.5 || targetPosition.x < -10.5) {
  466. return false
  467. }
  468. if (targetPosition.z > 10.5 || targetPosition.z < -10.5) {
  469. return false
  470. }
  471. if (oldtransformNodex != null) {
  472. return true
  473. }
  474. }
  475. drag.onDragEndObservable.add((event) => {
  476. // console.log("dragEnd");
  477. // console.log(event);
  478. // console.log(line03_position)
  479. })
  480. // console.log("x3");
  481. // GUI
  482. h1 = new BABYLON.HighlightLayer('hl1', scene)
  483. h2 = new BABYLON.HighlightLayer('hl2', scene)
  484. h3 = new BABYLON.HighlightLayer('hl2', scene)
  485. var step = 0.1
  486. var currentx = 1
  487. // var step2 = 0.1
  488. // var currentx2 = 0.1
  489. h1.blurHorizontalSize = 0.1
  490. // var showx = 0
  491. // var showx2 = 2
  492. // console.log("x4");
  493. scene.registerAfterRender(() => {
  494. h1.blurHorizontalSize = h1.blurVerticalSize + currentx
  495. var nodealert = scene.getTransformNodeByName('yan')
  496. if (nodealert != null) {
  497. var mesheses3 = null
  498. if (nodealert.getClassName() === 'TransformNode') {
  499. mesheses3 = nodealert.getChildMeshes(false)
  500. } else {
  501. mesheses3 = []
  502. mesheses3.push(nodealert)
  503. }
  504. for (var i = 0; i < mesheses3.length; i++) {
  505. try {
  506. if (nodealert.baojing === true) {
  507. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0))
  508. } else {
  509. h3.removeMesh(mesheses3[i])
  510. }
  511. } catch (error) {
  512. // alert(error)
  513. }
  514. }
  515. }
  516. })
  517. if (currentx > 0.5) {
  518. step *= -1
  519. }
  520. if (currentx < 0) {
  521. step *= -1
  522. }
  523. currentx += step
  524. // console.log("here");
  525. return scene
  526. }
  527. var canvas = document.getElementById('renderCanvas')
  528. // load the 3D engine
  529. var engine = new BABYLON.Engine(canvas, true, {
  530. stencil: true
  531. })
  532. // call the createScene function
  533. var scene = createScene()
  534. scene.autoClear = true
  535. scene.imageProcessingConfiguration.exposure = 1
  536. scene.imageProcessingConfiguration.contrast = 1
  537. scene.environmentIntensity = 0.4
  538. engine.runRenderLoop(function() {
  539. scene.render()
  540. })
  541. window.addEventListener('resize', function() {
  542. engine.resize()
  543. })
  544. // 功能:点区以后跳转到新页
  545. // quName :转过来的区号
  546. // function quClick(quName) {
  547. // if (quName === '现行w文件室内') {
  548. // window.location.href = 'http://ikki2000.gitee.io/101/webA/index.html'
  549. // }
  550. // if (quName === '待销文件室') {
  551. // window.location.href = 'http://ikki2000.gitee.io/101/webB/index.html'
  552. // }
  553. // }
  554. // 功能:点camera后事件
  555. // function cameraClick(camera) {
  556. // alert(camera.nameID)
  557. // }
  558. // function HashMap() {
  559. // // 定义长度
  560. // var length = 0
  561. // // 创建一个对象
  562. // var obj = {}
  563. // // 判断Map是否为空
  564. // this.isEmpty = function() {
  565. // return length === 0
  566. // }
  567. // // 判断对象中是否包含给定Key
  568. // this.containsKey = function(key) {
  569. // return (key in obj)
  570. // }
  571. // // 判断对象中是否包含给定的Value
  572. // this.containsValue = function(value) {
  573. // for (var key in obj) {
  574. // if (obj[key] === value) {
  575. // return true
  576. // }
  577. // }
  578. // return false
  579. // }
  580. // 向map中添加数据
  581. // this.put = function(key, value) {
  582. // if (!this.containsKey(key)) {
  583. // length++
  584. // }
  585. // obj[key] = value
  586. // }
  587. // // 根据给定的key获取Value
  588. // this.get = function(key) {
  589. // return this.containsKey(key) ? obj[key] : null
  590. // }
  591. // // 根据给定的Key删除一个值
  592. // this.remove = function(key) {
  593. // if (this.containsKey(key) && (delete obj[key])) {
  594. // length--
  595. // }
  596. // }
  597. // // 获得Map中所有的value
  598. // this.values = function() {
  599. // var _values = []
  600. // for (var key in obj) {
  601. // _values.push(obj[key])
  602. // }
  603. // return _values
  604. // }
  605. // // 获得Map中的所有key
  606. // this.keySet = function() {
  607. // var _keys = []
  608. // for (var key in obj) {
  609. // _keys.push(key)
  610. // }
  611. // return _keys
  612. // }
  613. // // 获得Map的长度
  614. // this.size = function() {
  615. // return length
  616. // }
  617. // // 清空Map
  618. // this.clear = function() {
  619. // length = 0
  620. // obj = {}
  621. // }
  622. // }
  623. // var yangans = new HashMap()
  624. // yangans.put('CAM_000', 'yan')
  625. // console.log("here2");
  626. // yangans.put('DAK_MO_CAM_002', 'camera02');
  627. // yangans.put('DAK_MO_CAM_003', 'camera03');
  628. // yangans.put('DAK_MO_CAM_004', 'camera04');
  629. // yangans.put('ZLS_MO_CAM_001', 'camera05');
  630. // yangans.put('ZLS_MO_CAM_002', 'camera06');
  631. // yangans.put('YLS_MO_CAM_001', 'camera07');
  632. // yangans.put('YLS_MO_CAM_002', 'camera08');
  633. // yangans.put('ZL_MO_CAM_001', 'camera09');
  634. // 功能转入报警
  635. // function Myalert(MathineID, baojingx) {
  636. // var theName = yangans.get(MathineID)
  637. // if (theName === 'yan') {
  638. // // console.log(scene);
  639. // xx = scene.getTransformNodeByName('yan').baojing = baojingx
  640. // }
  641. // }
  642. // scene.debugLayer.show();
  643. // 报警 true:表示报警, false :表示不报警
  644. // Myalert('CAM_000', true)
  645. function cameraClick(TheCamera) {
  646. window.parent.postMessage(
  647. {
  648. data: TheCamera.nameID
  649. },
  650. '*'
  651. )
  652. }
  653. function handleAlarm(deviceId, isAlarm) {
  654. console.log('rrrrr')
  655. var cl = new BABYLON.Color3(0, 0, 1)
  656. var c2 = new BABYLON.Color3(1, 0, 0)
  657. const targetDevice = scene.transformNodes.find(node => node.nameID === deviceId)
  658. if (targetDevice) {
  659. targetDevice.baojing = isAlarm
  660. var mesheses = null
  661. if (targetDevice.getClassName() === 'TransformNode') {
  662. mesheses = targetDevice.getChildMeshes(false)
  663. } else {
  664. mesheses = []
  665. mesheses.push(targetDevice)
  666. }
  667. if (isAlarm) {
  668. console.log('111')
  669. for (var i = 0; i < mesheses.length; i++) {
  670. h2.addMesh(mesheses[i], c2)
  671. }
  672. } else {
  673. console.log('222')
  674. for (var j = 0; j < mesheses.length; j++) {
  675. h2.removeMesh(mesheses[j])
  676. h2.addMesh(mesheses[j], cl)
  677. }
  678. }
  679. } else {
  680. console.log(`未找到设备 ID 为 ${deviceId} 的设备`)
  681. }
  682. }
  683. // 监测父页面传来得初始化得温度湿度值
  684. window.addEventListener(
  685. 'message',
  686. function(e) {
  687. console.log('ddd', e.data.data)
  688. const deviceData = e.data.data
  689. if (Array.isArray(deviceData)) {
  690. deviceData.forEach(device => {
  691. handleAlarm(device.deviceId, device.isAlarm)
  692. })
  693. } else {
  694. handleAlarm(deviceData.deviceId, deviceData.isAlarm)
  695. }
  696. },
  697. false
  698. )
  699. window.handleAlarm = handleAlarm