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

1657 lines
49 KiB

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