【前端】智能库房综合管理系统前端项目
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.

1735 lines
51 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. // 从这里开始
  2. var h1 = null;
  3. var h2 = null;
  4. var h3 = null;
  5. var oldtransformNodex = null;
  6. var oldtransformNodeOther = null;
  7. var drag = null;
  8. var notmoveGroup = null;
  9. var movedGroup = null;
  10. var movesingle = false;
  11. var dynamicTexture = null;
  12. var dynamicTexture2 = null;
  13. var dynamicTexture3 = null;
  14. var dynamicTexture4 = null;
  15. var show = 50;
  16. var showdd = 50;
  17. var PointerOverYangan = null;
  18. var deviceData = [];
  19. BABYLON.DefaultLoadingScreen.prototype.displayLoadingUI = function() {
  20. if (document.getElementById("customLoadingScreenDiv")) {
  21. document.getElementById("customLoadingScreenDiv").style.display = "initial";
  22. // 给vue页面传值,加载完成之前
  23. parent.getIframeLoading("true")
  24. return;
  25. }
  26. this._loadingDiv = document.createElement("div");
  27. //this._loadingDiv.style.height = '1750px';
  28. this._loadingDiv.id = "customLoadingScreenDiv";
  29. thecss = "lohingifpc";
  30. thecss2 = "zcpc";
  31. this._loadingDiv.innerHTML =
  32. "<div class='oka'><div class='" +
  33. thecss +
  34. "'><image src='./logok.gif' class='jiazaiimg'/></div><div class='" +
  35. thecss2 +
  36. "'>由 <image class='feitimg' src='./img/yxlogo.png'/> 阅行客 提供技术支持!</div></div>";
  37. this._resizeLoadingUI();
  38. window.addEventListener("resize", this._resizeLoadingUI);
  39. document.body.appendChild(this._loadingDiv);
  40. };
  41. var movebyName = function(nodeName) {
  42. var x = scene.getTransformNodeByName(nodeName);
  43. moveTrans(x);
  44. };
  45. var moveTrans = function(move_transformNode) {
  46. //alert(move_transformNode.name);
  47. if (movesingle == false) {
  48. movesingle = true;
  49. var tempstr = move_transformNode.name.replace("档案柜", "");
  50. var tempNum = parseInt(tempstr);
  51. if (move_transformNode.movex == "false") {
  52. for (var MoveNum = tempNum - 1; MoveNum >= 0; MoveNum--) {
  53. var tempNode = notmoveGroup[MoveNum];
  54. if (tempNode.movex == "false") {
  55. // console.log(tempNode.name);
  56. // console.log(tempNode.movex);
  57. const frameRate = 10;
  58. const xSlide = new BABYLON.Animation(
  59. "xSlide",
  60. "position.y",
  61. frameRate,
  62. BABYLON.Animation.ANIMATIONTYPE_FLOAT,
  63. BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT
  64. );
  65. const keyFrames = [];
  66. keyFrames.push({
  67. frame: 0,
  68. value: tempNode.position.y
  69. });
  70. keyFrames.push({
  71. frame: frameRate,
  72. value: tempNode.position.y - 653
  73. });
  74. xSlide.setKeys(keyFrames);
  75. tempNode.animations.push(xSlide);
  76. scene.beginAnimation(tempNode, 0, frameRate, false);
  77. //------------------------------------------------------------------------------
  78. thesprite = scene.spriteManagers[0].sprites[MoveNum];
  79. const frameRate1 = 10;
  80. var xSlide1 = new BABYLON.Animation(
  81. "xSlide1",
  82. "position.z",
  83. frameRate1,
  84. BABYLON.Animation.ANIMATIONTYPE_FLOAT,
  85. BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT
  86. );
  87. var keyFrames1 = [];
  88. keyFrames1.push({
  89. frame: 0,
  90. value: thesprite.position.z
  91. });
  92. keyFrames1.push({
  93. frame: frameRate1,
  94. value: thesprite.position.z - 1.7
  95. });
  96. xSlide1.setKeys(keyFrames1);
  97. thesprite.animations.push(xSlide1);
  98. scene.beginAnimation(thesprite, 0, frameRate1, false);
  99. tempNode.movex = "true";
  100. }
  101. }
  102. } else {
  103. for (var MoveNum = tempNum - 1; MoveNum <= 9; MoveNum++) {
  104. var tempNode = notmoveGroup[MoveNum];
  105. if (tempNode.movex == "true") {
  106. const frameRate = 10;
  107. const xSlide = new BABYLON.Animation(
  108. "xSlide",
  109. "position.y",
  110. frameRate,
  111. BABYLON.Animation.ANIMATIONTYPE_FLOAT,
  112. BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT
  113. );
  114. const keyFrames = [];
  115. keyFrames.push({
  116. frame: 0,
  117. value: tempNode.position.y
  118. });
  119. keyFrames.push({
  120. frame: frameRate,
  121. value: tempNode.position.y + 653
  122. });
  123. xSlide.setKeys(keyFrames);
  124. tempNode.animations.push(xSlide);
  125. scene.beginAnimation(tempNode, 0, frameRate, false);
  126. //------------------------------------------------------------------------------
  127. thesprite = scene.spriteManagers[0].sprites[MoveNum];
  128. const frameRate1 = 10;
  129. var xSlide1 = new BABYLON.Animation(
  130. "xSlide1",
  131. "position.z",
  132. frameRate1,
  133. BABYLON.Animation.ANIMATIONTYPE_FLOAT,
  134. BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT
  135. );
  136. var keyFrames1 = [];
  137. keyFrames1.push({
  138. frame: 0,
  139. value: thesprite.position.z
  140. });
  141. keyFrames1.push({
  142. frame: frameRate1,
  143. value: thesprite.position.z + 1.7
  144. });
  145. xSlide1.setKeys(keyFrames1);
  146. thesprite.animations.push(xSlide1);
  147. scene.beginAnimation(thesprite, 0, frameRate1, false);
  148. tempNode.movex = "false";
  149. }
  150. }
  151. }
  152. setTimeout(function() {
  153. movesingle = false;
  154. }, 2000);
  155. }
  156. };
  157. BABYLON.DefaultLoadingScreen.prototype.hideLoadingUI = function() {
  158. show = 50;
  159. document.getElementById("customLoadingScreenDiv").style.display = "none";
  160. document.getElementById("customLoadingScreenDiv_first").style.display = "none";
  161. document.title = "档案库";
  162. //scene.getMaterialByName("材质.023").roughness = 0;
  163. notmoveGroup = [
  164. scene.getTransformNodeByName("档案柜01"),
  165. scene.getTransformNodeByName("档案柜02"),
  166. scene.getTransformNodeByName("档案柜03"),
  167. scene.getTransformNodeByName("档案柜04"),
  168. scene.getTransformNodeByName("档案柜05"),
  169. scene.getTransformNodeByName("档案柜06"),
  170. scene.getTransformNodeByName("档案柜07"),
  171. scene.getTransformNodeByName("档案柜08"),
  172. scene.getTransformNodeByName("档案柜09"),
  173. scene.getTransformNodeByName("档案柜10")
  174. ];
  175. notmoveGroup.forEach(function(item, index, arr) {
  176. if (item.name == "档案柜10") {
  177. item.movex = "NotMove"; //设置movex
  178. } else {
  179. item.movex = "false"; //设置movex
  180. }
  181. });
  182. var prepareGroupButtonOther = function(transformNodex, color) {
  183. var mesheses = null;
  184. if (transformNodex.getClassName() == "TransformNode") {
  185. mesheses = transformNodex.getChildMeshes(false);
  186. } else {
  187. mesheses = [];
  188. mesheses.push(transformNodex);
  189. }
  190. for (var i = 0; i < mesheses.length; i++) {
  191. mesheses[i].actionManager = new BABYLON.ActionManager(scene);
  192. var theScaling = mesheses[i].scaling;
  193. if (true) {
  194. try {
  195. // 初始化数据 温度/湿度
  196. deviceData.forEach(item => {
  197. if (item.id === transformNodex.nameID) {
  198. transformNodex.wendu = item.wendu;
  199. transformNodex.sidu = item.sidu;
  200. transformNodex.baojing = item.alarmState;
  201. }
  202. });
  203. //mesheses[i].actionManager.registerAction(new BABYLON.InterpolateValueAction(BABYLON.ActionManager.OnPointerOutTrigger, mesheses[i], "scaling", new BABYLON.Vector3(theScaling.x, theScaling.y, theScaling.z), 100));
  204. mesheses[i].actionManager.registerAction(
  205. new BABYLON.ExecuteCodeAction(
  206. {
  207. trigger: BABYLON.ActionManager.OnPointerOverTrigger,
  208. parameter: ""
  209. },
  210. function() {
  211. clickbegin = true;
  212. if (true) {
  213. try {
  214. if (oldtransformNodeOther != null) {
  215. oldtransformNodeOther.removeBehavior(drag);
  216. var mesheses2 = null;
  217. if (
  218. oldtransformNodeOther.getClassName() == "TransformNode"
  219. ) {
  220. mesheses2 = oldtransformNodeOther.getChildMeshes(false);
  221. } else {
  222. mesheses2 = [];
  223. mesheses2.push(oldtransformNodeOther);
  224. }
  225. for (var i = 0; i < mesheses2.length; i++) {
  226. try {
  227. h2.removeMesh(mesheses2[i]);
  228. } catch (error) {
  229. // alert(error)
  230. }
  231. }
  232. }
  233. oldtransformNodeOther = transformNodex;
  234. //transformNodex.addBehavior(drag);
  235. var mesheses3 = null;
  236. if (transformNodex.getClassName() == "TransformNode") {
  237. mesheses3 = transformNodex.getChildMeshes(false);
  238. } else {
  239. mesheses3 = [];
  240. mesheses3.push(transformNodex);
  241. }
  242. for (var i = 0; i < mesheses3.length; i++) {
  243. try {
  244. if (transformNodex.baojing == true) {
  245. h2.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  246. } else {
  247. h2.addMesh(mesheses3[i], color);
  248. }
  249. } catch (error) {
  250. // alert(error)
  251. }
  252. }
  253. } catch (error) {
  254. // alert(error)
  255. }
  256. clickbegin = false;
  257. }
  258. if (transformNodex.name.indexOf("yangan") >= 0) {
  259. PointerOverYangan = transformNodex.name;
  260. if (transformNodex.baojing == true) {
  261. var location = transformNodex.absolutePosition;
  262. var xd = scene.getMeshByName("tapred");
  263. // x = x-0.6;; y = y+0.3 z=z+0.5
  264. xd.position = new BABYLON.Vector3(
  265. location.x - 0.6,
  266. location.y + 0.9,
  267. location.z + 0.5
  268. );
  269. var font_size = 36;
  270. var font = "bold " + font_size + "px Arial";
  271. dynamicTexture3.drawText(
  272. transformNodex.wendu + "°C",
  273. null,
  274. null,
  275. font,
  276. "#FFFFFF",
  277. "#000000",
  278. true
  279. );
  280. dynamicTexture4.drawText(
  281. transformNodex.sidu + "%",
  282. null,
  283. null,
  284. font,
  285. "#FFFFFF",
  286. "#000000",
  287. true
  288. );
  289. if(transformNodex.canshow == true){
  290. xd.setEnabled(true);
  291. }
  292. } else {
  293. var location = transformNodex.absolutePosition;
  294. var xd = scene.getMeshByName("tapblue");
  295. // x = x-0.6;; y = y+0.3 z=z+0.5
  296. xd.position = new BABYLON.Vector3(
  297. location.x - 0.6,
  298. location.y + 0.9,
  299. location.z + 0.5
  300. );
  301. var font_size = 36;
  302. var font = "bold " + font_size + "px Arial";
  303. dynamicTexture.drawText(
  304. transformNodex.wendu + "°C",
  305. null,
  306. null,
  307. font,
  308. "#FFFFFF",
  309. "#000000",
  310. true
  311. );
  312. dynamicTexture2.drawText(
  313. transformNodex.sidu + "%",
  314. null,
  315. null,
  316. font,
  317. "#FFFFFF",
  318. "#000000",
  319. true
  320. );
  321. if(transformNodex.canshow == true){
  322. xd.setEnabled(true);
  323. }
  324. }
  325. }
  326. }
  327. )
  328. );
  329. mesheses[i].actionManager.registerAction(
  330. new BABYLON.ExecuteCodeAction(
  331. {
  332. trigger: BABYLON.ActionManager.OnPointerOutTrigger,
  333. parameter: ""
  334. },
  335. function() {
  336. var mesheses2 = null;
  337. if (transformNodex.getClassName() == "TransformNode") {
  338. mesheses2 = transformNodex.getChildMeshes(false);
  339. } else {
  340. mesheses2 = [];
  341. mesheses2.push(transformNodex);
  342. }
  343. for (var i = 0; i < mesheses2.length; i++) {
  344. try {
  345. h2.removeMesh(mesheses2[i]);
  346. } catch (error) {
  347. // alert(error)
  348. }
  349. }
  350. if (transformNodex.name.indexOf("yangan") >= 0) {
  351. if (transformNodex.baojing == true) {
  352. var location = transformNodex.absolutePosition;
  353. var xd = scene.getMeshByName("tapred");
  354. // x = x-0.6;; y = y+0.3 z=z+0.5
  355. xd.setEnabled(false);
  356. } else {
  357. var location = transformNodex.absolutePosition;
  358. var xd = scene.getMeshByName("tapblue");
  359. // x = x-0.6;; y = y+0.3 z=z+0.5
  360. xd.setEnabled(false);
  361. }
  362. }
  363. }
  364. )
  365. );
  366. //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));
  367. } catch (error) {
  368. //alert(error)
  369. }
  370. }
  371. var clickbegin = false;
  372. mesheses[i].actionManager.registerAction(
  373. new BABYLON.ExecuteCodeAction(
  374. {
  375. trigger: BABYLON.ActionManager.OnPickTrigger,
  376. parameter: ""
  377. },
  378. function() {
  379. cameraClick(transformNodex);
  380. }
  381. )
  382. );
  383. }
  384. };
  385. var prepareGroupButton = function(transformNodex, color) {
  386. var mesheses = null;
  387. if (transformNodex.getClassName() == "TransformNode") {
  388. mesheses = transformNodex.getChildMeshes(false);
  389. } else {
  390. mesheses = [];
  391. mesheses.push(transformNodex);
  392. }
  393. for (var i = 0; i < mesheses.length; i++) {
  394. mesheses[i].actionManager = new BABYLON.ActionManager(scene);
  395. var theScaling = mesheses[i].scaling;
  396. if (true) {
  397. try {
  398. mesheses[i].actionManager.registerAction(
  399. new BABYLON.InterpolateValueAction(
  400. BABYLON.ActionManager.OnPointerOutTrigger,
  401. mesheses[i],
  402. "scaling",
  403. new BABYLON.Vector3(theScaling.x, theScaling.y, theScaling.z),
  404. 100
  405. )
  406. );
  407. mesheses[i].actionManager.registerAction(
  408. new BABYLON.InterpolateValueAction(
  409. BABYLON.ActionManager.OnPointerOverTrigger,
  410. mesheses[i],
  411. "scaling",
  412. new BABYLON.Vector3(
  413. theScaling.x * 1.01,
  414. theScaling.y * 1.01,
  415. theScaling.z * 1.01
  416. ),
  417. 100
  418. )
  419. );
  420. } catch (error) {
  421. //alert(error)
  422. }
  423. }
  424. var clickbegin = false;
  425. mesheses[i].actionManager.registerAction(
  426. new BABYLON.ExecuteCodeAction(
  427. {
  428. trigger: BABYLON.ActionManager.OnPickTrigger,
  429. parameter: ""
  430. },
  431. function() {
  432. clickbegin = true;
  433. if (true) {
  434. try {
  435. if (oldtransformNodex != null) {
  436. oldtransformNodex.removeBehavior(drag);
  437. var mesheses2 = null;
  438. if (oldtransformNodex.getClassName() == "TransformNode") {
  439. mesheses2 = oldtransformNodex.getChildMeshes(false);
  440. } else {
  441. mesheses2 = [];
  442. mesheses2.push(oldtransformNodex);
  443. }
  444. for (var i = 0; i < mesheses2.length; i++) {
  445. try {
  446. h1.removeMesh(mesheses2[i]);
  447. } catch (error) {
  448. // alert(error)
  449. }
  450. }
  451. }
  452. oldtransformNodex = transformNodex;
  453. //transformNodex.addBehavior(drag);
  454. var mesheses3 = null;
  455. if (transformNodex.getClassName() == "TransformNode") {
  456. mesheses3 = transformNodex.getChildMeshes(false);
  457. } else {
  458. mesheses3 = [];
  459. mesheses3.push(transformNodex);
  460. }
  461. for (var i = 0; i < mesheses3.length; i++) {
  462. try {
  463. h1.addMesh(mesheses3[i], BABYLON.Color3.White());
  464. } catch (error) {
  465. // alert(error)
  466. }
  467. }
  468. if (oldtransformNodex != null) {
  469. if (transformNodex.name == oldtransformNodex.name) {
  470. moveTrans(transformNodex);
  471. }
  472. }
  473. } catch (error) {
  474. // alert(error)
  475. }
  476. clickbegin = false;
  477. }
  478. }
  479. )
  480. );
  481. }
  482. };
  483. var dag1 = scene.getTransformNodeByName("档案柜01");
  484. var dag2 = scene.getTransformNodeByName("档案柜02");
  485. var dag3 = scene.getTransformNodeByName("档案柜03");
  486. var dag4 = scene.getTransformNodeByName("档案柜04");
  487. var dag5 = scene.getTransformNodeByName("档案柜05");
  488. var dag6 = scene.getTransformNodeByName("档案柜06");
  489. var dag7 = scene.getTransformNodeByName("档案柜07");
  490. var dag8 = scene.getTransformNodeByName("档案柜08");
  491. var dag9 = scene.getTransformNodeByName("档案柜09");
  492. var dag10 = scene.getTransformNodeByName("档案柜10");
  493. prepareGroupButton(dag1, BABYLON.Color3(1, 1, 0));
  494. prepareGroupButton(dag2, BABYLON.Color3(1, 1, 0));
  495. prepareGroupButton(dag3, BABYLON.Color3(1, 1, 0));
  496. prepareGroupButton(dag4, BABYLON.Color3(1, 1, 0));
  497. prepareGroupButton(dag5, BABYLON.Color3(1, 1, 0));
  498. prepareGroupButton(dag6, BABYLON.Color3(1, 1, 0));
  499. prepareGroupButton(dag7, BABYLON.Color3(1, 1, 0));
  500. prepareGroupButton(dag8, BABYLON.Color3(1, 1, 0));
  501. prepareGroupButton(dag9, BABYLON.Color3(1, 1, 0));
  502. prepareGroupButton(dag10, BABYLON.Color3(1, 1, 0));
  503. //test
  504. var camera01 = scene.getTransformNodeByName("camera01");
  505. camera01.nameID = "DAK_MO_CAM_001";
  506. var camera02 = scene.getTransformNodeByName("camera02");
  507. camera02.nameID = "DAK_MO_CAM_002";
  508. var camera03 = scene.getTransformNodeByName("camera03");
  509. camera03.nameID = "DAK_MO_CAM_003";
  510. var camera04 = scene.getTransformNodeByName("camera04");
  511. camera04.nameID = "DAK_MO_CAM_004";
  512. camera01.baojing = false;
  513. camera02.baojing = false;
  514. camera03.baojing = false;
  515. camera04.baojing = false;
  516. var yangan01 = scene.getTransformNodeByName("yangan01");
  517. yangan01.nameID = "DAK_MO_OAO_001";
  518. var yangan02 = scene.getTransformNodeByName("yangan02");
  519. yangan02.nameID = "DAK_MO_OAO_002";
  520. var yangan03 = scene.getTransformNodeByName("yangan03");
  521. yangan03.nameID = "DAK_MO_OAO_003";
  522. var yangan04 = scene.getTransformNodeByName("yangan04");
  523. yangan04.nameID = "DAK_MO_OAO_004";
  524. yangan01.baojing = false;
  525. yangan02.baojing = false;
  526. yangan03.baojing = false;
  527. yangan04.baojing = false;
  528. yangan01.canshow = true;
  529. yangan02.canshow = true;
  530. yangan03.canshow = true;
  531. yangan04.canshow = true;
  532. yangan01.wendu = 0;
  533. yangan01.sidu = 0;
  534. yangan02.wendu = 0;
  535. yangan02.sidu = 0;
  536. yangan03.wendu = 0;
  537. yangan03.sidu = 0;
  538. yangan04.wendu = 0;
  539. yangan04.sidu = 0;
  540. prepareGroupButtonOther(camera01, new BABYLON.Color3(0, 0, 1));
  541. prepareGroupButtonOther(camera02, new BABYLON.Color3(0, 0, 1));
  542. prepareGroupButtonOther(camera03, new BABYLON.Color3(0, 0, 1));
  543. prepareGroupButtonOther(camera04, new BABYLON.Color3(0, 0, 1));
  544. prepareGroupButtonOther(yangan01, new BABYLON.Color3(0, 0, 1));
  545. prepareGroupButtonOther(yangan02, new BABYLON.Color3(0, 0, 1));
  546. prepareGroupButtonOther(yangan03, new BABYLON.Color3(0, 0, 1));
  547. prepareGroupButtonOther(yangan04, new BABYLON.Color3(0, 0, 1));
  548. var x = scene.getMeshByName("档案架01_primitive0");
  549. x.overlayColor = BABYLON.Color3.White();
  550. x.renderOverlay = true;
  551. x = scene.getMeshByName("档案架02_primitive0");
  552. x.overlayColor = BABYLON.Color3.White();
  553. x.renderOverlay = true;
  554. x = scene.getMeshByName("档案架03_primitive0");
  555. x.overlayColor = BABYLON.Color3.White();
  556. x.renderOverlay = true;
  557. x = scene.getMeshByName("档案架04_primitive0");
  558. x.overlayColor = BABYLON.Color3.White();
  559. x.renderOverlay = true;
  560. x = scene.getMeshByName("档案架05_primitive0");
  561. x.overlayColor = BABYLON.Color3.White();
  562. x.renderOverlay = true;
  563. x = scene.getMeshByName("档案架06_primitive0");
  564. x.overlayColor = BABYLON.Color3.White();
  565. x.renderOverlay = true;
  566. x = scene.getMeshByName("档案架07_primitive0");
  567. x.overlayColor = BABYLON.Color3.White();
  568. x.renderOverlay = true;
  569. x = scene.getMeshByName("档案架08_primitive0");
  570. x.overlayColor = BABYLON.Color3.White();
  571. x.renderOverlay = true;
  572. x = scene.getMeshByName("档案架09_primitive0");
  573. x.overlayColor = BABYLON.Color3.White();
  574. x.renderOverlay = true;
  575. x = scene.getMeshByName("档案架10_primitive0");
  576. x.overlayColor = BABYLON.Color3.White();
  577. x.renderOverlay = true;
  578. x = scene.getMeshByName("前门01_primitive0");
  579. x.overlayColor = BABYLON.Color3.White();
  580. x.renderOverlay = true;
  581. x = scene.getMeshByName("后门01_primitive0");
  582. x.overlayColor = BABYLON.Color3.White();
  583. x.renderOverlay = true;
  584. // x = scene.getMeshByName("墙体");
  585. // x.overlayColor = BABYLON.Color3.White();
  586. // x.renderOverlay = true;
  587. //修改贴图
  588. var bluexMat = new BABYLON.PBRMaterial("bluex", scene);
  589. var tempddxa = new BABYLON.Texture("./asset/blue.png", scene);
  590. var tempddxb = new BABYLON.Texture("./asset/blue.png", scene);
  591. tempddxa.hasAlpha = true;
  592. tempddxa.hasAlpha = true;
  593. tempddxa.uAng = (180 * Math.PI) / 180;
  594. tempddxb.uAng = (180 * Math.PI) / 180;
  595. bluexMat.useAlphaFromAlbedoTexture = true;
  596. bluexMat.albedoTexture = tempddxa;
  597. bluexMat.reflectionColor = new BABYLON.Color3(0, 0, 0);
  598. bluexMat.lightmapTexture = tempddxb;
  599. scene.getMeshByName("平面_1").material = bluexMat;
  600. var redMat = new BABYLON.PBRMaterial("redMat", scene);
  601. var tempddx2 = new BABYLON.Texture("./asset/red.png", scene);
  602. var tempddx3 = new BABYLON.Texture("./asset/red.png", scene);
  603. tempddx2.hasAlpha = true;
  604. tempddx3.hasAlpha = true;
  605. tempddx2.uAng = (180 * Math.PI) / 180;
  606. tempddx3.uAng = (180 * Math.PI) / 180;
  607. redMat.useAlphaFromAlbedoTexture = true;
  608. redMat.reflectionColor = new BABYLON.Color3(0, 0, 0);
  609. //redMat.emissiveTexture =tempddx2;
  610. redMat.albedoTexture = tempddx2;
  611. redMat.lightmapTexture = tempddx3;
  612. scene.getMeshByName("平面_1_2").material = redMat;
  613. //平面2
  614. //Set font
  615. var font_size = 48;
  616. var font = "bold " + font_size + "px Arial";
  617. //Set height for plane
  618. var planeHeight = 3;
  619. //Set height for dynamic texture
  620. var DTHeight = 1.5 * font_size; //or set as wished
  621. //Calcultae ratio
  622. var ratio = planeHeight / DTHeight;
  623. //Set text
  624. var text = "10";
  625. //Use a temporay dynamic texture to calculate the length of the text on the dynamic texture canvas
  626. var temp = new BABYLON.DynamicTexture("DynamicTexture", 64, scene);
  627. var tmpctx = temp.getContext();
  628. tmpctx.font = font;
  629. var DTWidth = tmpctx.measureText(text).width + 58;
  630. //Calculate width the plane has to be
  631. var planeWidth = DTWidth * ratio;
  632. //Create dynamic texture and write the text
  633. dynamicTexture = new BABYLON.DynamicTexture(
  634. "DynamicTexture",
  635. { width: DTWidth, height: DTHeight },
  636. scene,
  637. false
  638. );
  639. var mat = new BABYLON.StandardMaterial("mat", scene);
  640. //var mat = new BABYLON.PBRMaterial("mat", scene);
  641. //mat.albedoColor = new BABYLON.Color4(0.7968, 0.3685, 0.1105, 1);
  642. mat.disableLighting = true;
  643. mat.emissiveTexture = dynamicTexture;
  644. // mat.alpha = 0.75;
  645. // mat.alphaMode = 6;
  646. // mat.diffuseColor = new BABYLON.Color3(0, 0, 0);
  647. mat.reflectivityColor = new BABYLON.Color3(0, 0, 0);
  648. dynamicTexture.uAng = (166.39 * Math.PI) / 180;
  649. //Create plane and set dynamic texture as material
  650. //var plane = BABYLON.MeshBuilder.CreatePlane("plane", {width:planeWidth, height:planeHeight}, scene);
  651. var vxd = scene.getMeshByName("平面_2"); //blue
  652. vxd.material = mat;
  653. //平面3
  654. dynamicTexture2 = new BABYLON.DynamicTexture(
  655. "DynamicTexture2",
  656. { width: DTWidth, height: DTHeight },
  657. scene,
  658. false
  659. );
  660. //var mat = new BABYLON.StandardMaterial("mat", scene);
  661. //mat.disableLighting = true;
  662. var mat2 = new BABYLON.StandardMaterial("mat2", scene);
  663. //mat.albedoColor = new BABYLON.Color4(0.7968, 0.3685, 0.1105, 1);
  664. mat2.disableLighting = true;
  665. //mat2.ambientTexture = dynamicTexture2;
  666. mat2.emissiveTexture = dynamicTexture2;
  667. // mat2.alpha = 0.75;
  668. // mat2.alphaMode=6;
  669. // mat2.diffuseColor = new BABYLON.Color3(0, 0, 0);
  670. mat2.reflectivityColor = new BABYLON.Color3(0, 0, 0);
  671. dynamicTexture2.uAng = (166.39 * Math.PI) / 180;
  672. //Create plane and set dynamic texture as material
  673. //var plane = BABYLON.MeshBuilder.CreatePlane("plane", {width:planeWidth, height:planeHeight}, scene);
  674. var vxd2 = scene.getMeshByName("平面_3");
  675. vxd2.material = mat2;
  676. //-------------------------------------------------------------------------------------
  677. dynamicTexture3 = new BABYLON.DynamicTexture(
  678. "DynamicTexture3",
  679. { width: DTWidth, height: DTHeight },
  680. scene,
  681. false
  682. );
  683. //var mat = new BABYLON.StandardMaterial("mat", scene);
  684. //mat.disableLighting = true;
  685. var mat3 = new BABYLON.StandardMaterial("mat3", scene);
  686. //mat.albedoColor = new BABYLON.Color4(0.7968, 0.3685, 0.1105, 1);
  687. mat3.disableLighting = true;
  688. //mat2.ambientTexture = dynamicTexture2;
  689. mat3.emissiveTexture = dynamicTexture3;
  690. // mat3.alpha = 0.75;
  691. // mat3.alphaMode=6;
  692. // mat3.diffuseColor = new BABYLON.Color3(0, 0, 0);
  693. mat3.reflectivityColor = new BABYLON.Color3(0, 0, 0);
  694. dynamicTexture3.uAng = (166.39 * Math.PI) / 180;
  695. //Create plane and set dynamic texture as material
  696. //var plane = BABYLON.MeshBuilder.CreatePlane("plane", {width:planeWidth, height:planeHeight}, scene);
  697. var vxd3 = scene.getMeshByName("平面_2_2"); //blue
  698. vxd3.material = mat3;
  699. //-------------------------------------------------------------------------------------
  700. dynamicTexture4 = new BABYLON.DynamicTexture(
  701. "dynamicTexture4",
  702. { width: DTWidth, height: DTHeight },
  703. scene,
  704. false
  705. );
  706. //var mat = new BABYLON.StandardMaterial("mat", scene);
  707. //mat.disableLighting = true;
  708. var mat4 = new BABYLON.StandardMaterial("mat4", scene);
  709. //mat.albedoColor = new BABYLON.Color4(0.7968, 0.3685, 0.1105, 1);
  710. mat4.disableLighting = true;
  711. //mat2.ambientTexture = dynamicTexture2;
  712. mat4.emissiveTexture = dynamicTexture4;
  713. // mat4.alpha = 0.75;
  714. // mat4.alphaMode=6;
  715. // mat4.diffuseColor = new BABYLON.Color3(0, 0, 0);
  716. mat4.reflectivityColor = new BABYLON.Color3(0, 0, 0);
  717. dynamicTexture4.uAng = (166.39 * Math.PI) / 180;
  718. //Create plane and set dynamic texture as material
  719. //var plane = BABYLON.MeshBuilder.CreatePlane("plane", {width:planeWidth, height:planeHeight}, scene);
  720. var vxd4 = scene.getMeshByName("平面_3_2");
  721. vxd4.material = mat4;
  722. scene.getMeshByName("tapblue").setEnabled(false);
  723. scene.getMeshByName("tapred").setEnabled(false);
  724. var light = new BABYLON.HemisphericLight(
  725. "HemiLight",
  726. new BABYLON.Vector3(0, 1, 0),
  727. scene
  728. );
  729. light.intensity = 2;
  730. light.diffuse = new BABYLON.Color3(0.92, 0.92, 0.92);
  731. var material1 = scene.getMaterialByName("材质.075");
  732. material1.albedoColor = new BABYLON.Color3(160 / 255, 160 / 255, 160 / 255);
  733. material1.roughness = 1;
  734. //地
  735. var material2 = scene.getMaterialByName("材质.074");
  736. material2.metallic = 0.52;
  737. material2.roughness = 0;
  738. //material2.metallicReflectanceColor=new BABYLON.Color3(1,0,0);
  739. material2.albedoColor = new BABYLON.Color3(0.8, 0.8, 0.8);
  740. var material3 = scene.getMaterialByName("材质.084");
  741. material3.emissiveColor = new BABYLON.Color3(0.278, 0.278, 0.278);
  742. material3.metallic = 0.87;
  743. material3.roughness = 0;
  744. // 给vue页面传值,加载完成之后
  745. parent.getIframeLoading("false")
  746. };
  747. // createScene function that creates and return the scene
  748. var createScene = function() {
  749. engine.displayLoadingUI();
  750. // create a basic BJS Scene object
  751. var scene = new BABYLON.Scene(engine);
  752. // scene.debugLayer.show();
  753. var camera = new BABYLON.ArcRotateCamera(
  754. "Camera",
  755. 0,
  756. 0,
  757. 5,
  758. new BABYLON.Vector3(0, -1, 0),
  759. scene
  760. );
  761. camera.setTarget(new BABYLON.Vector3(0, 2, 0));
  762. camera.attachControl(canvas, true);
  763. camera.lowerRadiusLimit = 2.0; // 这里是最大的位置,值越大,物体越小
  764. camera.upperRadiusLimit = 40;
  765. camera.radius = 10.48;
  766. camera.alpha = (Math.PI * -211.4) / 180;
  767. camera.beta = (Math.PI * 66) / 180;
  768. camera.inertia = 0.1; // 缩放的快慢
  769. camera.useAutoRotationBehavior = true; // 自动旋转
  770. camera.panningDistanceLimit = 2; //平移半径
  771. camera.panningInertia = 0;
  772. camera.autoTransitionRange = 1;
  773. camera.pinchToPanMaxDistance = 0.1;
  774. camera.pinchDeltaPercentage = 0.001;
  775. camera.useAutoRotationBehavior = false;
  776. scene.activeCamera = camera;
  777. // 改变场景背景颜色 - 背景颜色opacity值设为0,达到透明背景的效果
  778. scene.clearColor = new BABYLON.Color4(0, 0, 0, 0);
  779. scene.activeCamera.useInputToRestoreState = true;
  780. var camera1_status = scene.activeCamera.storeState();
  781. var assetsManager = new BABYLON.AssetsManager(scene);
  782. var meshTask = assetsManager.addMeshTask(
  783. "skull task",
  784. "",
  785. "asset/",
  786. "mjj.glb"
  787. );
  788. meshTask.onSuccess = function(task) {
  789. task.loadedMeshes[0].scaling = new BABYLON.Vector3(0.2, 0.2, -0.2);
  790. task.loadedMeshes[0].position = new BABYLON.Vector3(0.0, 2, 0);
  791. };
  792. meshTask.onError = function(task, message, exception) {
  793. console.log(message, exception);
  794. };
  795. /*var meshTask_tap = assetsManager.addMeshTask("skull task", "", "asset/", "tapx.glb");
  796. meshTask_tap.onSuccess = function (task) {
  797. task.loadedMeshes[0].scaling = new BABYLON.Vector3(0.2, 0.2, -0.2);
  798. task.loadedMeshes[0].position = new BABYLON.Vector3(-1.929, 4.029, 0.968);
  799. //-2.5,3.77,1.45
  800. // x = x-0.6;; y = y+0.3 z=z+0.5
  801. task.loadedMeshes[0].rotation = new BABYLON.Vector3(0, 0, 0);
  802. task.loadedMeshes[0].name = "test";
  803. var vx = scene.getTransformNodeByName("空白_2_2");
  804. vx.position = new BABYLON.Vector3(0, 0, 0);
  805. vx.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);
  806. }
  807. meshTask_tap.onError = function (task, message, exception) {
  808. console.log(message, exception);
  809. }*/
  810. var meshTask_tapblue = assetsManager.addMeshTask(
  811. "skull task",
  812. "",
  813. "asset/",
  814. "tapBlue.glb"
  815. );
  816. meshTask_tapblue.onSuccess = function(task) {
  817. task.loadedMeshes[0].scaling = new BABYLON.Vector3(0.2, 0.2, -0.2);
  818. task.loadedMeshes[0].position = new BABYLON.Vector3(0, 0, 0);
  819. //-2.5,3.77,1.45
  820. // x = x-0.6;; y = y+0.3 z=z+0.5
  821. task.loadedMeshes[0].rotation = new BABYLON.Vector3(0, 0, 0);
  822. task.loadedMeshes[0].name = "tapblue";
  823. var vx = scene.getTransformNodeByName("蓝");
  824. vx.position = new BABYLON.Vector3(0, 0, 0);
  825. vx.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);
  826. vx.scaling = new BABYLON.Vector3(0.015, 0.015, 0.015);
  827. };
  828. meshTask_tapblue.onError = function(task, message, exception) {
  829. console.log(message, exception);
  830. };
  831. var meshTask_tapred = assetsManager.addMeshTask(
  832. "skull task",
  833. "",
  834. "asset/",
  835. "tapRed.glb"
  836. );
  837. meshTask_tapred.onSuccess = function(task) {
  838. task.loadedMeshes[0].scaling = new BABYLON.Vector3(0.2, 0.2, -0.2);
  839. task.loadedMeshes[0].position = new BABYLON.Vector3(-1.929, 4.029, 0.968);
  840. //-2.5,3.77,1.45
  841. // x = x-0.6;; y = y+0.3 z=z+0.5
  842. task.loadedMeshes[0].rotation = new BABYLON.Vector3(0, 0, 0);
  843. task.loadedMeshes[0].name = "tapred";
  844. var vx = scene.getTransformNodeByName("红");
  845. vx.position = new BABYLON.Vector3(0, 0, 0);
  846. vx.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);
  847. vx.scaling = new BABYLON.Vector3(0.015, 0.015, 0.015);
  848. };
  849. meshTask_tapred.onError = function(task, message, exception) {
  850. console.log(message, exception);
  851. };
  852. var hdrTexture = new BABYLON.CubeTexture.CreateFromPrefilteredData(
  853. "textures/environmentSpecular.env",
  854. scene
  855. );
  856. //var hdrTexture = new BABYLON.CubeTexture.CreateFromPrefilteredData("textures/environment2.env", scene);
  857. scene.environmentTexture = hdrTexture;
  858. var spriteManagerPlayer = new BABYLON.SpriteManager(
  859. "playerManager",
  860. "./img/bl9.png",
  861. 10,
  862. {
  863. width: 100,
  864. height: 100
  865. },
  866. scene
  867. );
  868. //spriteManagerPlayer.renderingGroupId = 2;
  869. spriteManagerPlayer.isPickable = true;
  870. //1
  871. player_balloon_js1 = new BABYLON.Sprite(
  872. "player_balloon_js1",
  873. spriteManagerPlayer
  874. );
  875. player_balloon_js1.size = 0.1;
  876. player_balloon_js1.name = "1";
  877. player_balloon_js1.nameID = "cabinet01";
  878. player_balloon_js1.cellIndex = 0;
  879. player_balloon_js1.position = new BABYLON.Vector3(-2.5, 3.5, -0.72);
  880. player_balloon_js1.isPickable = true;
  881. player_balloon_js1.width = 0.2;
  882. player_balloon_js1.height = 0.2;
  883. player_balloon_js1.playAnimation(0, 6, true, 200);
  884. //2
  885. player_balloon_js2 = new BABYLON.Sprite(
  886. "player_balloon_js2",
  887. spriteManagerPlayer
  888. );
  889. player_balloon_js2.size = 0.1;
  890. player_balloon_js2.name = "2";
  891. player_balloon_js2.nameID = "cabinet02";
  892. player_balloon_js2.cellIndex = 0;
  893. player_balloon_js2.position = new BABYLON.Vector3(-2.5, 3.5, -0.38);
  894. player_balloon_js2.isPickable = true;
  895. player_balloon_js2.width = 0.2;
  896. player_balloon_js2.height = 0.2;
  897. player_balloon_js2.playAnimation(0, 6, true, 200);
  898. //3
  899. player_balloon_js3 = new BABYLON.Sprite(
  900. "player_balloon_js3",
  901. spriteManagerPlayer
  902. );
  903. player_balloon_js3.size = 0.1;
  904. player_balloon_js3.name = "3";
  905. player_balloon_js3.nameID = "cabinet03";
  906. player_balloon_js3.cellIndex = 0;
  907. player_balloon_js3.position = new BABYLON.Vector3(-2.5, 3.5, -0.03);
  908. player_balloon_js3.isPickable = true;
  909. player_balloon_js3.width = 0.2;
  910. player_balloon_js3.height = 0.2;
  911. player_balloon_js3.playAnimation(0, 6, true, 200);
  912. //4
  913. player_balloon_js4 = new BABYLON.Sprite(
  914. "player_balloon_js4",
  915. spriteManagerPlayer
  916. );
  917. player_balloon_js4.size = 0.1;
  918. player_balloon_js4.name = "4";
  919. player_balloon_js4.nameID = "cabinet04";
  920. player_balloon_js4.cellIndex = 0;
  921. player_balloon_js4.position = new BABYLON.Vector3(-2.5, 3.5, 0.3);
  922. player_balloon_js4.isPickable = true;
  923. player_balloon_js4.width = 0.2;
  924. player_balloon_js4.height = 0.2;
  925. player_balloon_js4.playAnimation(0, 6, true, 200);
  926. //5
  927. player_balloon_js5 = new BABYLON.Sprite(
  928. "player_balloon_js5",
  929. spriteManagerPlayer
  930. );
  931. player_balloon_js5.size = 0.1;
  932. player_balloon_js5.name = "5";
  933. player_balloon_js5.nameID = "cabinet05";
  934. player_balloon_js5.cellIndex = 0;
  935. player_balloon_js5.position = new BABYLON.Vector3(-2.5, 3.5, 0.64);
  936. player_balloon_js5.isPickable = true;
  937. player_balloon_js5.width = 0.2;
  938. player_balloon_js5.height = 0.2;
  939. player_balloon_js5.playAnimation(0, 6, true, 200);
  940. //6
  941. player_balloon_js6 = new BABYLON.Sprite(
  942. "player_balloon_js6",
  943. spriteManagerPlayer
  944. );
  945. player_balloon_js6.size = 0.1;
  946. player_balloon_js6.name = "6";
  947. player_balloon_js6.nameID = "cabinet06";
  948. player_balloon_js6.cellIndex = 0;
  949. player_balloon_js6.position = new BABYLON.Vector3(-2.5, 3.5, 0.98);
  950. player_balloon_js6.isPickable = true;
  951. player_balloon_js6.width = 0.2;
  952. player_balloon_js6.height = 0.2;
  953. player_balloon_js6.playAnimation(0, 6, true, 200);
  954. //7
  955. player_balloon_js7 = new BABYLON.Sprite(
  956. "player_balloon_js7",
  957. spriteManagerPlayer
  958. );
  959. player_balloon_js7.size = 0.1;
  960. player_balloon_js7.name = "7";
  961. player_balloon_js7.nameID = "cabinet07";
  962. player_balloon_js7.cellIndex = 0;
  963. player_balloon_js7.position = new BABYLON.Vector3(-2.5, 3.5, 1.32);
  964. player_balloon_js7.isPickable = true;
  965. player_balloon_js7.width = 0.2;
  966. player_balloon_js7.height = 0.2;
  967. player_balloon_js7.playAnimation(0, 6, true, 200);
  968. //8
  969. player_balloon_js8 = new BABYLON.Sprite(
  970. "player_balloon_js8",
  971. spriteManagerPlayer
  972. );
  973. player_balloon_js8.size = 0.1;
  974. player_balloon_js8.name = "8";
  975. player_balloon_js8.nameID = "cabinet08";
  976. player_balloon_js8.cellIndex = 0;
  977. player_balloon_js8.position = new BABYLON.Vector3(-2.5, 3.5, 1.66);
  978. player_balloon_js8.isPickable = true;
  979. player_balloon_js8.width = 0.2;
  980. player_balloon_js8.height = 0.2;
  981. player_balloon_js8.playAnimation(0, 6, true, 200);
  982. //9
  983. player_balloon_js9 = new BABYLON.Sprite(
  984. "player_balloon_js",
  985. spriteManagerPlayer
  986. );
  987. player_balloon_js9.size = 0.1;
  988. player_balloon_js9.name = "9";
  989. player_balloon_js9.nameID = "cabinet09";
  990. player_balloon_js9.cellIndex = 0;
  991. player_balloon_js9.position = new BABYLON.Vector3(-2.5, 3.5, 2);
  992. //-2.3895861905112934, 3.402393519214794, z: 0.3225995832152506
  993. player_balloon_js9.isPickable = true;
  994. player_balloon_js9.width = 0.2;
  995. player_balloon_js9.height = 0.2;
  996. player_balloon_js9.playAnimation(0, 6, true, 200);
  997. //10
  998. player_balloon_js10 = new BABYLON.Sprite(
  999. "player_balloon_js10",
  1000. spriteManagerPlayer
  1001. );
  1002. player_balloon_js10.size = 0.1;
  1003. player_balloon_js10.name = "10";
  1004. player_balloon_js10.nameID = "cabinet10";
  1005. player_balloon_js10.cellIndex = 0;
  1006. player_balloon_js10.position = new BABYLON.Vector3(-2.5, 3.5, 2.33);
  1007. player_balloon_js10.isPickable = true;
  1008. player_balloon_js10.width = 0.2;
  1009. player_balloon_js10.height = 0.2;
  1010. player_balloon_js10.playAnimation(0, 6, true, 200);
  1011. scene.onPointerDown = function(evt) {
  1012. var pickResult = scene.pickSprite(this.pointerX, this.pointerY);
  1013. var pick = scene.pick(scene.pointerX, scene.pointerY);
  1014. console.log(pick.pickedPoint);
  1015. if (pickResult.pickedSprite != null) {
  1016. if (pickResult.hit) {
  1017. cabinetClick(pickResult.pickedSprite);
  1018. }
  1019. }
  1020. };
  1021. // renderCanvas.style.backgroundImage = 'url("./textures/' + '4' + '.jpg")';
  1022. assetsManager.load();
  1023. drag = new BABYLON.PointerDragBehavior({
  1024. dragPlaneNormal: new BABYLON.Vector3(0, 0, 1)
  1025. });
  1026. //drag.useObjectOrienationForDragging = false;
  1027. drag.validateDrag = targetPosition => {
  1028. console.log(targetPosition);
  1029. if (targetPosition.x > 10.5 || targetPosition.x < -10.5) {
  1030. return false;
  1031. }
  1032. if (targetPosition.z > 10.5 || targetPosition.z < -10.5) {
  1033. return false;
  1034. }
  1035. if (oldtransformNodex != null) {
  1036. return true;
  1037. }
  1038. };
  1039. drag.onDragEndObservable.add(event => {
  1040. console.log("dragEnd");
  1041. //console.log(event);
  1042. //console.log(line03_position)
  1043. });
  1044. //GUI
  1045. h1 = new BABYLON.HighlightLayer("hl1", scene);
  1046. h2 = new BABYLON.HighlightLayer("hl2", scene);
  1047. h3 = new BABYLON.HighlightLayer("hl3", scene);
  1048. var step = 0.1;
  1049. var currentx = 1;
  1050. var step2 = 0.1;
  1051. var currentx2 = 0.1;
  1052. h1.blurHorizontalSize = 0.1;
  1053. var showx = 0;
  1054. var showx2 = 2;
  1055. scene.registerAfterRender(() => {
  1056. h1.blurHorizontalSize = h1.blurVerticalSize + currentx;
  1057. h2.blurHorizontalSize = h2.blurVerticalSize + currentx2;
  1058. h3.blurHorizontalSize = h3.blurVerticalSize + currentx2;
  1059. var nodealert = scene.getTransformNodeByName("yangan01");
  1060. if (nodealert != null) {
  1061. var mesheses3 = null;
  1062. if (nodealert.getClassName() == "TransformNode") {
  1063. mesheses3 = nodealert.getChildMeshes(false);
  1064. } else {
  1065. mesheses3 = [];
  1066. mesheses3.push(nodealert);
  1067. }
  1068. for (var i = 0; i < mesheses3.length; i++) {
  1069. try {
  1070. if (nodealert.baojing == true) {
  1071. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  1072. } else {
  1073. h3.removeMesh(mesheses3[i]);
  1074. }
  1075. } catch (error) {
  1076. // alert(error)
  1077. }
  1078. }
  1079. }
  1080. var nodealert = scene.getTransformNodeByName("yangan02");
  1081. if (nodealert != null) {
  1082. var mesheses3 = null;
  1083. if (nodealert.getClassName() == "TransformNode") {
  1084. mesheses3 = nodealert.getChildMeshes(false);
  1085. } else {
  1086. mesheses3 = [];
  1087. mesheses3.push(nodealert);
  1088. }
  1089. for (var i = 0; i < mesheses3.length; i++) {
  1090. try {
  1091. if (nodealert.baojing == true) {
  1092. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  1093. } else {
  1094. h3.removeMesh(mesheses3[i]);
  1095. }
  1096. } catch (error) {
  1097. // alert(error)
  1098. }
  1099. }
  1100. }
  1101. var nodealert = scene.getTransformNodeByName("yangan03");
  1102. if (nodealert != null) {
  1103. var mesheses3 = null;
  1104. if (nodealert.getClassName() == "TransformNode") {
  1105. mesheses3 = nodealert.getChildMeshes(false);
  1106. } else {
  1107. mesheses3 = [];
  1108. mesheses3.push(nodealert);
  1109. }
  1110. for (var i = 0; i < mesheses3.length; i++) {
  1111. try {
  1112. if (nodealert.baojing == true) {
  1113. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  1114. } else {
  1115. h3.removeMesh(mesheses3[i]);
  1116. }
  1117. } catch (error) {
  1118. // alert(error)
  1119. }
  1120. }
  1121. }
  1122. var nodealert = scene.getTransformNodeByName("yangan04");
  1123. if (nodealert != null) {
  1124. var mesheses3 = null;
  1125. if (nodealert.getClassName() == "TransformNode") {
  1126. mesheses3 = nodealert.getChildMeshes(false);
  1127. } else {
  1128. mesheses3 = [];
  1129. mesheses3.push(nodealert);
  1130. }
  1131. for (var i = 0; i < mesheses3.length; i++) {
  1132. try {
  1133. if (nodealert.baojing == true) {
  1134. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  1135. } else {
  1136. h3.removeMesh(mesheses3[i]);
  1137. }
  1138. } catch (error) {
  1139. // alert(error)
  1140. }
  1141. }
  1142. }
  1143. var nodealert = scene.getTransformNodeByName("camera01");
  1144. if (nodealert != null) {
  1145. var mesheses3 = null;
  1146. if (nodealert.getClassName() == "TransformNode") {
  1147. mesheses3 = nodealert.getChildMeshes(false);
  1148. } else {
  1149. mesheses3 = [];
  1150. mesheses3.push(nodealert);
  1151. }
  1152. for (var i = 0; i < mesheses3.length; i++) {
  1153. try {
  1154. if (nodealert.baojing == true) {
  1155. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  1156. } else {
  1157. h3.removeMesh(mesheses3[i]);
  1158. }
  1159. } catch (error) {
  1160. // alert(error)
  1161. }
  1162. }
  1163. }
  1164. var nodealert = scene.getTransformNodeByName("camera02");
  1165. if (nodealert != null) {
  1166. var mesheses3 = null;
  1167. if (nodealert.getClassName() == "TransformNode") {
  1168. mesheses3 = nodealert.getChildMeshes(false);
  1169. } else {
  1170. mesheses3 = [];
  1171. mesheses3.push(nodealert);
  1172. }
  1173. for (var i = 0; i < mesheses3.length; i++) {
  1174. try {
  1175. if (nodealert.baojing == true) {
  1176. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  1177. } else {
  1178. h3.removeMesh(mesheses3[i]);
  1179. }
  1180. } catch (error) {
  1181. // alert(error)
  1182. }
  1183. }
  1184. }
  1185. var nodealert = scene.getTransformNodeByName("camera03");
  1186. if (nodealert != null) {
  1187. var mesheses3 = null;
  1188. if (nodealert.getClassName() == "TransformNode") {
  1189. mesheses3 = nodealert.getChildMeshes(false);
  1190. } else {
  1191. mesheses3 = [];
  1192. mesheses3.push(nodealert);
  1193. }
  1194. for (var i = 0; i < mesheses3.length; i++) {
  1195. try {
  1196. if (nodealert.baojing == true) {
  1197. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  1198. } else {
  1199. h3.removeMesh(mesheses3[i]);
  1200. }
  1201. } catch (error) {
  1202. // alert(error)
  1203. }
  1204. }
  1205. }
  1206. var nodealert = scene.getTransformNodeByName("camera04");
  1207. if (nodealert != null) {
  1208. var mesheses3 = null;
  1209. if (nodealert.getClassName() == "TransformNode") {
  1210. mesheses3 = nodealert.getChildMeshes(false);
  1211. } else {
  1212. mesheses3 = [];
  1213. mesheses3.push(nodealert);
  1214. }
  1215. for (var i = 0; i < mesheses3.length; i++) {
  1216. try {
  1217. if (nodealert.baojing == true) {
  1218. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  1219. } else {
  1220. h3.removeMesh(mesheses3[i]);
  1221. }
  1222. } catch (error) {
  1223. // alert(error)
  1224. }
  1225. }
  1226. }
  1227. var a = scene.getMaterialByName("carpaint_baseRed");
  1228. if (a != null) {
  1229. if (a.albedoColor == b) {
  1230. b = new BABYLON.Color3(0, 1, 0);
  1231. a.albedoColor = b;
  1232. }
  1233. }
  1234. var v2 = scene.getMeshByName("tapblue");
  1235. if (v2 != null) {
  1236. v2.lookAt(camera.globalPosition, 0, 0, Math.PI);
  1237. }
  1238. var v3 = scene.getMeshByName("tapred");
  1239. if (v3 != null) {
  1240. v3.lookAt(camera.globalPosition, 0, 0, Math.PI);
  1241. }
  1242. if (currentx > 0.5) {
  1243. step *= -1;
  1244. }
  1245. if (currentx < 0) {
  1246. step *= -1;
  1247. }
  1248. currentx += step;
  1249. if (currentx2 > 5) {
  1250. step2 *= -1;
  1251. }
  1252. if (currentx2 < 0) {
  1253. step2 *= -1;
  1254. }
  1255. currentx2 += step2;
  1256. if (dynamicTexture != null && PointerOverYangan != null) {
  1257. var textx = scene.getTransformNodeByName(PointerOverYangan).wendu;
  1258. var font_size = 48;
  1259. var font = "bold " + font_size + "px Arial";
  1260. dynamicTexture.drawText(
  1261. textx + "°C",
  1262. null,
  1263. null,
  1264. font,
  1265. "#FFFFFF",
  1266. "#000000",
  1267. true
  1268. );
  1269. showx++;
  1270. show = 50;
  1271. }
  1272. if (dynamicTexture2 != null && PointerOverYangan != null) {
  1273. var textx = scene.getTransformNodeByName(PointerOverYangan).sidu;
  1274. var font_size = 50;
  1275. var font = "bold " + font_size + "px Arial";
  1276. dynamicTexture2.drawText(
  1277. textx + "%",
  1278. null,
  1279. null,
  1280. font,
  1281. "#FFFFFF",
  1282. "#000000",
  1283. true
  1284. );
  1285. }
  1286. if (dynamicTexture3 != null && PointerOverYangan != null) {
  1287. var textx = scene.getTransformNodeByName(PointerOverYangan).wendu;
  1288. var font_size = 48;
  1289. var font = "bold " + font_size + "px Arial";
  1290. dynamicTexture3.drawText(
  1291. textx + "°C",
  1292. null,
  1293. null,
  1294. font,
  1295. "#FFFFFF",
  1296. "#000000",
  1297. true
  1298. );
  1299. }
  1300. if (dynamicTexture4 != null && PointerOverYangan != null) {
  1301. var textx = scene.getTransformNodeByName(PointerOverYangan).sidu;
  1302. var font_size = 50;
  1303. var font = "bold " + font_size + "px Arial";
  1304. dynamicTexture4.drawText(
  1305. textx + "%",
  1306. null,
  1307. null,
  1308. font,
  1309. "#FFFFFF",
  1310. "#000000",
  1311. true
  1312. );
  1313. }
  1314. /*show--;
  1315. showdd--;*/
  1316. });
  1317. return scene;
  1318. };
  1319. var canvas = document.getElementById("renderCanvas");
  1320. // load the 3D engine
  1321. var engine = new BABYLON.Engine(canvas, true, {
  1322. stencil: true
  1323. });
  1324. // call the createScene function
  1325. var scene = createScene();
  1326. scene.autoClear = true;
  1327. scene.imageProcessingConfiguration.exposure = 1;
  1328. scene.imageProcessingConfiguration.contrast = 1;
  1329. scene.environmentIntensity = 0.4;
  1330. engine.runRenderLoop(function() {
  1331. scene.render();
  1332. });
  1333. window.addEventListener("resize", function() {
  1334. engine.resize();
  1335. });
  1336. function HashMap() {
  1337. //定义长度
  1338. var length = 0;
  1339. //创建一个对象
  1340. var obj = new Object();
  1341. //判断Map是否为空
  1342. this.isEmpty = function() {
  1343. return length == 0;
  1344. };
  1345. //判断对象中是否包含给定Key
  1346. this.containsKey = function(key) {
  1347. return key in obj;
  1348. };
  1349. //判断对象中是否包含给定的Value
  1350. this.containsValue = function(value) {
  1351. for (var key in obj) {
  1352. if (obj[key] == value) {
  1353. return true;
  1354. }
  1355. }
  1356. return false;
  1357. };
  1358. //向map中添加数据
  1359. this.put = function(key, value) {
  1360. if (!this.containsKey(key)) {
  1361. length++;
  1362. }
  1363. obj[key] = value;
  1364. };
  1365. //根据给定的key获取Value
  1366. this.get = function(key) {
  1367. return this.containsKey(key) ? obj[key] : null;
  1368. };
  1369. //根据给定的Key删除一个值
  1370. this.remove = function(key) {
  1371. if (this.containsKey(key) && delete obj[key]) {
  1372. length--;
  1373. }
  1374. };
  1375. //获得Map中所有的value
  1376. this.values = function() {
  1377. var _values = new Array();
  1378. for (var key in obj) {
  1379. _values.push(obj[key]);
  1380. }
  1381. return _values;
  1382. };
  1383. //获得Map中的所有key
  1384. this.keySet = function() {
  1385. var _keys = new Array();
  1386. for (var key in obj) {
  1387. _keys.push(key);
  1388. }
  1389. return _keys;
  1390. };
  1391. //获得Map的长度
  1392. this.size = function() {
  1393. return length;
  1394. };
  1395. //清空Map
  1396. this.clear = function() {
  1397. length = 0;
  1398. obj = new Object();
  1399. };
  1400. }
  1401. var yangans = new HashMap();
  1402. yangans.put("DAK_MO_OAO_001", "yangan01");
  1403. yangans.put("DAK_MO_OAO_002", "yangan02");
  1404. yangans.put("DAK_MO_OAO_003", "yangan03");
  1405. yangans.put("DAK_MO_OAO_004", "yangan04");
  1406. yangans.put("DAK_MO_CAM_001", "camera01");
  1407. yangans.put("DAK_MO_CAM_002", "camera02");
  1408. yangans.put("DAK_MO_CAM_003", "camera03");
  1409. yangans.put("DAK_MO_CAM_004", "camera04");
  1410. //功能转入报警
  1411. function Myalert(MathineID, baojing) {
  1412. scene.getMeshByName("tapblue").setEnabled(false);
  1413. scene.getMeshByName("tapred").setEnabled(false);
  1414. var theName = yangans.get(MathineID);
  1415. if (theName == "yangan01") {
  1416. scene.getTransformNodeByName("yangan01").baojing = baojing;
  1417. }
  1418. if (theName == "yangan02") {
  1419. scene.getTransformNodeByName("yangan02").baojing = baojing;
  1420. }
  1421. if (theName == "yangan03") {
  1422. scene.getTransformNodeByName("yangan03").baojing = baojing;
  1423. }
  1424. if (theName == "yangan04") {
  1425. scene.getTransformNodeByName("yangan04").baojing = baojing;
  1426. }
  1427. if (theName == "camera01") {
  1428. scene.getTransformNodeByName("camera01").baojing = baojing;
  1429. }
  1430. if (theName == "camera02") {
  1431. scene.getTransformNodeByName("camera02").baojing = baojing;
  1432. }
  1433. if (theName == "camera03") {
  1434. scene.getTransformNodeByName("camera03").baojing = baojing;
  1435. }
  1436. if (theName == "camera04") {
  1437. scene.getTransformNodeByName("camera04").baojing = baojing;
  1438. }
  1439. }
  1440. //报警 true:表示报警, false :表示不报警
  1441. //Myalert("DAK_MO_OAO_001",true)
  1442. //设置温湿度
  1443. function setAlertValue(MathineID, wendu, sidu) {
  1444. var theName = yangans.get(MathineID);
  1445. if (theName == "yangan01") {
  1446. scene.getTransformNodeByName("yangan01").wendu = wendu;
  1447. scene.getTransformNodeByName("yangan01").sidu = sidu;
  1448. }
  1449. if (theName == "yangan02") {
  1450. scene.getTransformNodeByName("yangan02").wendu = wendu;
  1451. scene.getTransformNodeByName("yangan02").sidu = sidu;
  1452. }
  1453. if (theName == "yangan03") {
  1454. scene.getTransformNodeByName("yangan03").wendu = wendu;
  1455. scene.getTransformNodeByName("yangan03").sidu = sidu;
  1456. }
  1457. if (theName == "yangan04") {
  1458. scene.getTransformNodeByName("yangan04").wendu = wendu;
  1459. scene.getTransformNodeByName("yangan04").sidu = sidu;
  1460. }
  1461. }
  1462. //设置温湿度: setAlertValue("DAK_MO_OAO_001",4,5)
  1463. // 设置是否显示
  1464. function setYangGanCanshow(MathineID, canshow){
  1465. var theName = yangans.get(MathineID);
  1466. if(theName.indexOf("yangan") >= 0){
  1467. scene.getTransformNodeByName(theName).canshow = canshow;
  1468. }
  1469. }
  1470. // setYangGanCanshow("DAK_MO_OAO_001",false)
  1471. //功能:档案柜标点点击
  1472. // function cabinetClick(cabinet) {
  1473. // alert(cabinet.nameID);
  1474. // }
  1475. function cabinetClick(cabinet) {
  1476. window.parent.postMessage(
  1477. {
  1478. data: cabinet.nameID
  1479. },
  1480. "*"
  1481. );
  1482. }
  1483. // 摄像头和温湿度点击
  1484. // function cameraClick(TheCamera) {
  1485. // alert(TheCamera.nameID);
  1486. // }
  1487. function cameraClick(TheCamera) {
  1488. window.parent.postMessage(
  1489. {
  1490. data: TheCamera.nameID
  1491. },
  1492. "*"
  1493. );
  1494. }
  1495. // 监测父页面传来得初始化得温度湿度值
  1496. window.addEventListener(
  1497. "message",
  1498. function(e) {
  1499. deviceData = e.data.data;
  1500. },
  1501. false
  1502. );