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

1711 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
  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.PBRMaterial("bluex", scene);
  580. var tempddxa = new BABYLON.Texture("./asset/blue.png", scene);
  581. var tempddxb = new BABYLON.Texture("./asset/blue.png", scene);
  582. tempddxa.hasAlpha = true;
  583. tempddxa.hasAlpha = true;
  584. tempddxa.uAng = (180 * Math.PI) / 180;
  585. tempddxb.uAng = (180 * Math.PI) / 180;
  586. bluexMat.useAlphaFromAlbedoTexture = true;
  587. bluexMat.albedoTexture = tempddxa;
  588. bluexMat.reflectionColor = new BABYLON.Color3(0, 0, 0);
  589. bluexMat.lightmapTexture = tempddxb;
  590. scene.getMeshByName("平面_1").material = bluexMat;
  591. var redMat = new BABYLON.PBRMaterial("redMat", scene);
  592. var tempddx2 = new BABYLON.Texture("./asset/red.png", scene);
  593. var tempddx3 = new BABYLON.Texture("./asset/red.png", scene);
  594. tempddx2.hasAlpha = true;
  595. tempddx3.hasAlpha = true;
  596. tempddx2.uAng = (180 * Math.PI) / 180;
  597. tempddx3.uAng = (180 * Math.PI) / 180;
  598. redMat.useAlphaFromAlbedoTexture = true;
  599. redMat.reflectionColor = new BABYLON.Color3(0, 0, 0);
  600. //redMat.emissiveTexture =tempddx2;
  601. redMat.albedoTexture = tempddx2;
  602. redMat.lightmapTexture = tempddx3;
  603. scene.getMeshByName("平面_1_2").material = redMat;
  604. //平面2
  605. //Set font
  606. var font_size = 48;
  607. var font = "bold " + font_size + "px Arial";
  608. //Set height for plane
  609. var planeHeight = 3;
  610. //Set height for dynamic texture
  611. var DTHeight = 1.5 * font_size; //or set as wished
  612. //Calcultae ratio
  613. var ratio = planeHeight / DTHeight;
  614. //Set text
  615. var text = "10";
  616. //Use a temporay dynamic texture to calculate the length of the text on the dynamic texture canvas
  617. var temp = new BABYLON.DynamicTexture("DynamicTexture", 64, scene);
  618. var tmpctx = temp.getContext();
  619. tmpctx.font = font;
  620. var DTWidth = tmpctx.measureText(text).width + 58;
  621. //Calculate width the plane has to be
  622. var planeWidth = DTWidth * ratio;
  623. //Create dynamic texture and write the text
  624. dynamicTexture = new BABYLON.DynamicTexture(
  625. "DynamicTexture",
  626. { width: DTWidth, height: DTHeight },
  627. scene,
  628. false
  629. );
  630. var mat = new BABYLON.StandardMaterial("mat", scene);
  631. //var mat = new BABYLON.PBRMaterial("mat", scene);
  632. //mat.albedoColor = new BABYLON.Color4(0.7968, 0.3685, 0.1105, 1);
  633. mat.disableLighting = true;
  634. mat.emissiveTexture = dynamicTexture;
  635. // mat.alpha = 0.75;
  636. // mat.alphaMode = 6;
  637. // mat.diffuseColor = new BABYLON.Color3(0, 0, 0);
  638. mat.reflectivityColor = new BABYLON.Color3(0, 0, 0);
  639. dynamicTexture.uAng = (166.39 * Math.PI) / 180;
  640. //Create plane and set dynamic texture as material
  641. //var plane = BABYLON.MeshBuilder.CreatePlane("plane", {width:planeWidth, height:planeHeight}, scene);
  642. var vxd = scene.getMeshByName("平面_2"); //blue
  643. vxd.material = mat;
  644. //平面3
  645. dynamicTexture2 = new BABYLON.DynamicTexture(
  646. "DynamicTexture2",
  647. { width: DTWidth, height: DTHeight },
  648. scene,
  649. false
  650. );
  651. //var mat = new BABYLON.StandardMaterial("mat", scene);
  652. //mat.disableLighting = true;
  653. var mat2 = new BABYLON.StandardMaterial("mat2", scene);
  654. //mat.albedoColor = new BABYLON.Color4(0.7968, 0.3685, 0.1105, 1);
  655. mat2.disableLighting = true;
  656. //mat2.ambientTexture = dynamicTexture2;
  657. mat2.emissiveTexture = dynamicTexture2;
  658. // mat2.alpha = 0.75;
  659. // mat2.alphaMode=6;
  660. // mat2.diffuseColor = new BABYLON.Color3(0, 0, 0);
  661. mat2.reflectivityColor = new BABYLON.Color3(0, 0, 0);
  662. dynamicTexture2.uAng = (166.39 * Math.PI) / 180;
  663. //Create plane and set dynamic texture as material
  664. //var plane = BABYLON.MeshBuilder.CreatePlane("plane", {width:planeWidth, height:planeHeight}, scene);
  665. var vxd2 = scene.getMeshByName("平面_3");
  666. vxd2.material = mat2;
  667. //-------------------------------------------------------------------------------------
  668. dynamicTexture3 = new BABYLON.DynamicTexture(
  669. "DynamicTexture3",
  670. { width: DTWidth, height: DTHeight },
  671. scene,
  672. false
  673. );
  674. //var mat = new BABYLON.StandardMaterial("mat", scene);
  675. //mat.disableLighting = true;
  676. var mat3 = new BABYLON.StandardMaterial("mat3", scene);
  677. //mat.albedoColor = new BABYLON.Color4(0.7968, 0.3685, 0.1105, 1);
  678. mat3.disableLighting = true;
  679. //mat2.ambientTexture = dynamicTexture2;
  680. mat3.emissiveTexture = dynamicTexture3;
  681. // mat3.alpha = 0.75;
  682. // mat3.alphaMode=6;
  683. // mat3.diffuseColor = new BABYLON.Color3(0, 0, 0);
  684. mat3.reflectivityColor = new BABYLON.Color3(0, 0, 0);
  685. dynamicTexture3.uAng = (166.39 * Math.PI) / 180;
  686. //Create plane and set dynamic texture as material
  687. //var plane = BABYLON.MeshBuilder.CreatePlane("plane", {width:planeWidth, height:planeHeight}, scene);
  688. var vxd3 = scene.getMeshByName("平面_2_2"); //blue
  689. vxd3.material = mat3;
  690. //-------------------------------------------------------------------------------------
  691. dynamicTexture4 = new BABYLON.DynamicTexture(
  692. "dynamicTexture4",
  693. { width: DTWidth, height: DTHeight },
  694. scene,
  695. false
  696. );
  697. //var mat = new BABYLON.StandardMaterial("mat", scene);
  698. //mat.disableLighting = true;
  699. var mat4 = new BABYLON.StandardMaterial("mat4", scene);
  700. //mat.albedoColor = new BABYLON.Color4(0.7968, 0.3685, 0.1105, 1);
  701. mat4.disableLighting = true;
  702. //mat2.ambientTexture = dynamicTexture2;
  703. mat4.emissiveTexture = dynamicTexture4;
  704. // mat4.alpha = 0.75;
  705. // mat4.alphaMode=6;
  706. // mat4.diffuseColor = new BABYLON.Color3(0, 0, 0);
  707. mat4.reflectivityColor = new BABYLON.Color3(0, 0, 0);
  708. dynamicTexture4.uAng = (166.39 * Math.PI) / 180;
  709. //Create plane and set dynamic texture as material
  710. //var plane = BABYLON.MeshBuilder.CreatePlane("plane", {width:planeWidth, height:planeHeight}, scene);
  711. var vxd4 = scene.getMeshByName("平面_3_2");
  712. vxd4.material = mat4;
  713. scene.getMeshByName("tapblue").setEnabled(false);
  714. scene.getMeshByName("tapred").setEnabled(false);
  715. var light = new BABYLON.HemisphericLight(
  716. "HemiLight",
  717. new BABYLON.Vector3(0, 1, 0),
  718. scene
  719. );
  720. light.intensity = 2;
  721. light.diffuse = new BABYLON.Color3(0.92, 0.92, 0.92);
  722. var material1 = scene.getMaterialByName("材质.075");
  723. material1.albedoColor = new BABYLON.Color3(160 / 255, 160 / 255, 160 / 255);
  724. material1.roughness = 1;
  725. //地
  726. var material2 = scene.getMaterialByName("材质.074");
  727. material2.metallic = 0.52;
  728. material2.roughness = 0;
  729. //material2.metallicReflectanceColor=new BABYLON.Color3(1,0,0);
  730. material2.albedoColor = new BABYLON.Color3(0.8, 0.8, 0.8);
  731. var material3 = scene.getMaterialByName("材质.084");
  732. material3.emissiveColor = new BABYLON.Color3(0.278, 0.278, 0.278);
  733. material3.metallic = 0.87;
  734. material3.roughness = 0;
  735. };
  736. // createScene function that creates and return the scene
  737. var createScene = function() {
  738. engine.displayLoadingUI();
  739. // create a basic BJS Scene object
  740. var scene = new BABYLON.Scene(engine);
  741. // scene.debugLayer.show();
  742. var camera = new BABYLON.ArcRotateCamera(
  743. "Camera",
  744. 0,
  745. 0,
  746. 5,
  747. new BABYLON.Vector3(0, -1, 0),
  748. scene
  749. );
  750. camera.setTarget(new BABYLON.Vector3(0, 2, 0));
  751. camera.attachControl(canvas, true);
  752. camera.lowerRadiusLimit = 2.0; // 这里是最大的位置,值越大,物体越小
  753. camera.upperRadiusLimit = 40;
  754. camera.radius = 10.48;
  755. camera.alpha = (Math.PI * -211.4) / 180;
  756. camera.beta = (Math.PI * 66) / 180;
  757. camera.inertia = 0.1; // 缩放的快慢
  758. camera.useAutoRotationBehavior = true; // 自动旋转
  759. camera.panningDistanceLimit = 2; //平移半径
  760. camera.panningInertia = 0;
  761. camera.autoTransitionRange = 1;
  762. camera.pinchToPanMaxDistance = 0.1;
  763. camera.pinchDeltaPercentage = 0.001;
  764. camera.useAutoRotationBehavior = false;
  765. scene.activeCamera = camera;
  766. // 改变场景背景颜色 - 背景颜色opacity值设为0,达到透明背景的效果
  767. scene.clearColor = new BABYLON.Color4(0, 0, 0, 0);
  768. scene.activeCamera.useInputToRestoreState = true;
  769. var camera1_status = scene.activeCamera.storeState();
  770. var assetsManager = new BABYLON.AssetsManager(scene);
  771. var meshTask = assetsManager.addMeshTask(
  772. "skull task",
  773. "",
  774. "asset/",
  775. "mjj.glb"
  776. );
  777. meshTask.onSuccess = function(task) {
  778. task.loadedMeshes[0].scaling = new BABYLON.Vector3(0.2, 0.2, -0.2);
  779. task.loadedMeshes[0].position = new BABYLON.Vector3(0.0, 2, 0);
  780. };
  781. meshTask.onError = function(task, message, exception) {
  782. console.log(message, exception);
  783. };
  784. /*var meshTask_tap = assetsManager.addMeshTask("skull task", "", "asset/", "tapx.glb");
  785. meshTask_tap.onSuccess = function (task) {
  786. task.loadedMeshes[0].scaling = new BABYLON.Vector3(0.2, 0.2, -0.2);
  787. task.loadedMeshes[0].position = new BABYLON.Vector3(-1.929, 4.029, 0.968);
  788. //-2.5,3.77,1.45
  789. // x = x-0.6;; y = y+0.3 z=z+0.5
  790. task.loadedMeshes[0].rotation = new BABYLON.Vector3(0, 0, 0);
  791. task.loadedMeshes[0].name = "test";
  792. var vx = scene.getTransformNodeByName("空白_2_2");
  793. vx.position = new BABYLON.Vector3(0, 0, 0);
  794. vx.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);
  795. }
  796. meshTask_tap.onError = function (task, message, exception) {
  797. console.log(message, exception);
  798. }*/
  799. var meshTask_tapblue = assetsManager.addMeshTask(
  800. "skull task",
  801. "",
  802. "asset/",
  803. "tapBlue.glb"
  804. );
  805. meshTask_tapblue.onSuccess = function(task) {
  806. task.loadedMeshes[0].scaling = new BABYLON.Vector3(0.2, 0.2, -0.2);
  807. task.loadedMeshes[0].position = new BABYLON.Vector3(0, 0, 0);
  808. //-2.5,3.77,1.45
  809. // x = x-0.6;; y = y+0.3 z=z+0.5
  810. task.loadedMeshes[0].rotation = new BABYLON.Vector3(0, 0, 0);
  811. task.loadedMeshes[0].name = "tapblue";
  812. var vx = scene.getTransformNodeByName("蓝");
  813. vx.position = new BABYLON.Vector3(0, 0, 0);
  814. vx.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);
  815. vx.scaling = new BABYLON.Vector3(0.015, 0.015, 0.015);
  816. };
  817. meshTask_tapblue.onError = function(task, message, exception) {
  818. console.log(message, exception);
  819. };
  820. var meshTask_tapred = assetsManager.addMeshTask(
  821. "skull task",
  822. "",
  823. "asset/",
  824. "tapRed.glb"
  825. );
  826. meshTask_tapred.onSuccess = function(task) {
  827. task.loadedMeshes[0].scaling = new BABYLON.Vector3(0.2, 0.2, -0.2);
  828. task.loadedMeshes[0].position = new BABYLON.Vector3(-1.929, 4.029, 0.968);
  829. //-2.5,3.77,1.45
  830. // x = x-0.6;; y = y+0.3 z=z+0.5
  831. task.loadedMeshes[0].rotation = new BABYLON.Vector3(0, 0, 0);
  832. task.loadedMeshes[0].name = "tapred";
  833. var vx = scene.getTransformNodeByName("红");
  834. vx.position = new BABYLON.Vector3(0, 0, 0);
  835. vx.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);
  836. vx.scaling = new BABYLON.Vector3(0.015, 0.015, 0.015);
  837. };
  838. meshTask_tapred.onError = function(task, message, exception) {
  839. console.log(message, exception);
  840. };
  841. var hdrTexture = new BABYLON.CubeTexture.CreateFromPrefilteredData(
  842. "textures/environmentSpecular.env",
  843. scene
  844. );
  845. //var hdrTexture = new BABYLON.CubeTexture.CreateFromPrefilteredData("textures/environment2.env", scene);
  846. scene.environmentTexture = hdrTexture;
  847. var spriteManagerPlayer = new BABYLON.SpriteManager(
  848. "playerManager",
  849. "./img/bl9.png",
  850. 10,
  851. {
  852. width: 100,
  853. height: 100
  854. },
  855. scene
  856. );
  857. //spriteManagerPlayer.renderingGroupId = 2;
  858. spriteManagerPlayer.isPickable = true;
  859. //1
  860. player_balloon_js1 = new BABYLON.Sprite(
  861. "player_balloon_js1",
  862. spriteManagerPlayer
  863. );
  864. player_balloon_js1.size = 0.1;
  865. player_balloon_js1.name = "1";
  866. player_balloon_js1.nameID = "cabinet01";
  867. player_balloon_js1.cellIndex = 0;
  868. player_balloon_js1.position = new BABYLON.Vector3(-2.5, 3.5, -0.72);
  869. player_balloon_js1.isPickable = true;
  870. player_balloon_js1.width = 0.2;
  871. player_balloon_js1.height = 0.2;
  872. player_balloon_js1.playAnimation(0, 6, true, 200);
  873. //2
  874. player_balloon_js2 = new BABYLON.Sprite(
  875. "player_balloon_js2",
  876. spriteManagerPlayer
  877. );
  878. player_balloon_js2.size = 0.1;
  879. player_balloon_js2.name = "2";
  880. player_balloon_js2.nameID = "cabinet02";
  881. player_balloon_js2.cellIndex = 0;
  882. player_balloon_js2.position = new BABYLON.Vector3(-2.5, 3.5, -0.38);
  883. player_balloon_js2.isPickable = true;
  884. player_balloon_js2.width = 0.2;
  885. player_balloon_js2.height = 0.2;
  886. player_balloon_js2.playAnimation(0, 6, true, 200);
  887. //3
  888. player_balloon_js3 = new BABYLON.Sprite(
  889. "player_balloon_js3",
  890. spriteManagerPlayer
  891. );
  892. player_balloon_js3.size = 0.1;
  893. player_balloon_js3.name = "3";
  894. player_balloon_js3.nameID = "cabinet03";
  895. player_balloon_js3.cellIndex = 0;
  896. player_balloon_js3.position = new BABYLON.Vector3(-2.5, 3.5, -0.03);
  897. player_balloon_js3.isPickable = true;
  898. player_balloon_js3.width = 0.2;
  899. player_balloon_js3.height = 0.2;
  900. player_balloon_js3.playAnimation(0, 6, true, 200);
  901. //4
  902. player_balloon_js4 = new BABYLON.Sprite(
  903. "player_balloon_js4",
  904. spriteManagerPlayer
  905. );
  906. player_balloon_js4.size = 0.1;
  907. player_balloon_js4.name = "4";
  908. player_balloon_js4.nameID = "cabinet04";
  909. player_balloon_js4.cellIndex = 0;
  910. player_balloon_js4.position = new BABYLON.Vector3(-2.5, 3.5, 0.3);
  911. player_balloon_js4.isPickable = true;
  912. player_balloon_js4.width = 0.2;
  913. player_balloon_js4.height = 0.2;
  914. player_balloon_js4.playAnimation(0, 6, true, 200);
  915. //5
  916. player_balloon_js5 = new BABYLON.Sprite(
  917. "player_balloon_js5",
  918. spriteManagerPlayer
  919. );
  920. player_balloon_js5.size = 0.1;
  921. player_balloon_js5.name = "5";
  922. player_balloon_js5.nameID = "cabinet05";
  923. player_balloon_js5.cellIndex = 0;
  924. player_balloon_js5.position = new BABYLON.Vector3(-2.5, 3.5, 0.64);
  925. player_balloon_js5.isPickable = true;
  926. player_balloon_js5.width = 0.2;
  927. player_balloon_js5.height = 0.2;
  928. player_balloon_js5.playAnimation(0, 6, true, 200);
  929. //6
  930. player_balloon_js6 = new BABYLON.Sprite(
  931. "player_balloon_js6",
  932. spriteManagerPlayer
  933. );
  934. player_balloon_js6.size = 0.1;
  935. player_balloon_js6.name = "6";
  936. player_balloon_js6.nameID = "cabinet06";
  937. player_balloon_js6.cellIndex = 0;
  938. player_balloon_js6.position = new BABYLON.Vector3(-2.5, 3.5, 0.98);
  939. player_balloon_js6.isPickable = true;
  940. player_balloon_js6.width = 0.2;
  941. player_balloon_js6.height = 0.2;
  942. player_balloon_js6.playAnimation(0, 6, true, 200);
  943. //7
  944. player_balloon_js7 = new BABYLON.Sprite(
  945. "player_balloon_js7",
  946. spriteManagerPlayer
  947. );
  948. player_balloon_js7.size = 0.1;
  949. player_balloon_js7.name = "7";
  950. player_balloon_js7.nameID = "cabinet07";
  951. player_balloon_js7.cellIndex = 0;
  952. player_balloon_js7.position = new BABYLON.Vector3(-2.5, 3.5, 1.32);
  953. player_balloon_js7.isPickable = true;
  954. player_balloon_js7.width = 0.2;
  955. player_balloon_js7.height = 0.2;
  956. player_balloon_js7.playAnimation(0, 6, true, 200);
  957. //8
  958. player_balloon_js8 = new BABYLON.Sprite(
  959. "player_balloon_js8",
  960. spriteManagerPlayer
  961. );
  962. player_balloon_js8.size = 0.1;
  963. player_balloon_js8.name = "8";
  964. player_balloon_js8.nameID = "cabinet08";
  965. player_balloon_js8.cellIndex = 0;
  966. player_balloon_js8.position = new BABYLON.Vector3(-2.5, 3.5, 1.66);
  967. player_balloon_js8.isPickable = true;
  968. player_balloon_js8.width = 0.2;
  969. player_balloon_js8.height = 0.2;
  970. player_balloon_js8.playAnimation(0, 6, true, 200);
  971. //9
  972. player_balloon_js9 = new BABYLON.Sprite(
  973. "player_balloon_js",
  974. spriteManagerPlayer
  975. );
  976. player_balloon_js9.size = 0.1;
  977. player_balloon_js9.name = "9";
  978. player_balloon_js9.nameID = "cabinet09";
  979. player_balloon_js9.cellIndex = 0;
  980. player_balloon_js9.position = new BABYLON.Vector3(-2.5, 3.5, 2);
  981. //-2.3895861905112934, 3.402393519214794, z: 0.3225995832152506
  982. player_balloon_js9.isPickable = true;
  983. player_balloon_js9.width = 0.2;
  984. player_balloon_js9.height = 0.2;
  985. player_balloon_js9.playAnimation(0, 6, true, 200);
  986. //10
  987. player_balloon_js10 = new BABYLON.Sprite(
  988. "player_balloon_js10",
  989. spriteManagerPlayer
  990. );
  991. player_balloon_js10.size = 0.1;
  992. player_balloon_js10.name = "10";
  993. player_balloon_js10.nameID = "cabinet10";
  994. player_balloon_js10.cellIndex = 0;
  995. player_balloon_js10.position = new BABYLON.Vector3(-2.5, 3.5, 2.33);
  996. player_balloon_js10.isPickable = true;
  997. player_balloon_js10.width = 0.2;
  998. player_balloon_js10.height = 0.2;
  999. player_balloon_js10.playAnimation(0, 6, true, 200);
  1000. scene.onPointerDown = function(evt) {
  1001. var pickResult = scene.pickSprite(this.pointerX, this.pointerY);
  1002. var pick = scene.pick(scene.pointerX, scene.pointerY);
  1003. console.log(pick.pickedPoint);
  1004. if (pickResult.pickedSprite != null) {
  1005. if (pickResult.hit) {
  1006. cabinetClick(pickResult.pickedSprite);
  1007. }
  1008. }
  1009. };
  1010. // renderCanvas.style.backgroundImage = 'url("./textures/' + '4' + '.jpg")';
  1011. assetsManager.load();
  1012. drag = new BABYLON.PointerDragBehavior({
  1013. dragPlaneNormal: new BABYLON.Vector3(0, 0, 1)
  1014. });
  1015. //drag.useObjectOrienationForDragging = false;
  1016. drag.validateDrag = targetPosition => {
  1017. console.log(targetPosition);
  1018. if (targetPosition.x > 10.5 || targetPosition.x < -10.5) {
  1019. return false;
  1020. }
  1021. if (targetPosition.z > 10.5 || targetPosition.z < -10.5) {
  1022. return false;
  1023. }
  1024. if (oldtransformNodex != null) {
  1025. return true;
  1026. }
  1027. };
  1028. drag.onDragEndObservable.add(event => {
  1029. console.log("dragEnd");
  1030. //console.log(event);
  1031. //console.log(line03_position)
  1032. });
  1033. //GUI
  1034. h1 = new BABYLON.HighlightLayer("hl1", scene);
  1035. h2 = new BABYLON.HighlightLayer("hl2", scene);
  1036. h3 = new BABYLON.HighlightLayer("hl3", scene);
  1037. var step = 0.1;
  1038. var currentx = 1;
  1039. var step2 = 0.1;
  1040. var currentx2 = 0.1;
  1041. h1.blurHorizontalSize = 0.1;
  1042. var showx = 0;
  1043. var showx2 = 2;
  1044. scene.registerAfterRender(() => {
  1045. h1.blurHorizontalSize = h1.blurVerticalSize + currentx;
  1046. h2.blurHorizontalSize = h2.blurVerticalSize + currentx2;
  1047. h3.blurHorizontalSize = h3.blurVerticalSize + currentx2;
  1048. var nodealert = scene.getTransformNodeByName("yangan01");
  1049. if (nodealert != null) {
  1050. var mesheses3 = null;
  1051. if (nodealert.getClassName() == "TransformNode") {
  1052. mesheses3 = nodealert.getChildMeshes(false);
  1053. } else {
  1054. mesheses3 = [];
  1055. mesheses3.push(nodealert);
  1056. }
  1057. for (var i = 0; i < mesheses3.length; i++) {
  1058. try {
  1059. if (nodealert.baojing == true) {
  1060. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  1061. } else {
  1062. h3.removeMesh(mesheses3[i]);
  1063. }
  1064. } catch (error) {
  1065. // alert(error)
  1066. }
  1067. }
  1068. }
  1069. var nodealert = scene.getTransformNodeByName("yangan02");
  1070. if (nodealert != null) {
  1071. var mesheses3 = null;
  1072. if (nodealert.getClassName() == "TransformNode") {
  1073. mesheses3 = nodealert.getChildMeshes(false);
  1074. } else {
  1075. mesheses3 = [];
  1076. mesheses3.push(nodealert);
  1077. }
  1078. for (var i = 0; i < mesheses3.length; i++) {
  1079. try {
  1080. if (nodealert.baojing == true) {
  1081. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  1082. } else {
  1083. h3.removeMesh(mesheses3[i]);
  1084. }
  1085. } catch (error) {
  1086. // alert(error)
  1087. }
  1088. }
  1089. }
  1090. var nodealert = scene.getTransformNodeByName("yangan03");
  1091. if (nodealert != null) {
  1092. var mesheses3 = null;
  1093. if (nodealert.getClassName() == "TransformNode") {
  1094. mesheses3 = nodealert.getChildMeshes(false);
  1095. } else {
  1096. mesheses3 = [];
  1097. mesheses3.push(nodealert);
  1098. }
  1099. for (var i = 0; i < mesheses3.length; i++) {
  1100. try {
  1101. if (nodealert.baojing == true) {
  1102. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  1103. } else {
  1104. h3.removeMesh(mesheses3[i]);
  1105. }
  1106. } catch (error) {
  1107. // alert(error)
  1108. }
  1109. }
  1110. }
  1111. var nodealert = scene.getTransformNodeByName("yangan04");
  1112. if (nodealert != null) {
  1113. var mesheses3 = null;
  1114. if (nodealert.getClassName() == "TransformNode") {
  1115. mesheses3 = nodealert.getChildMeshes(false);
  1116. } else {
  1117. mesheses3 = [];
  1118. mesheses3.push(nodealert);
  1119. }
  1120. for (var i = 0; i < mesheses3.length; i++) {
  1121. try {
  1122. if (nodealert.baojing == true) {
  1123. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  1124. } else {
  1125. h3.removeMesh(mesheses3[i]);
  1126. }
  1127. } catch (error) {
  1128. // alert(error)
  1129. }
  1130. }
  1131. }
  1132. var nodealert = scene.getTransformNodeByName("camera01");
  1133. if (nodealert != null) {
  1134. var mesheses3 = null;
  1135. if (nodealert.getClassName() == "TransformNode") {
  1136. mesheses3 = nodealert.getChildMeshes(false);
  1137. } else {
  1138. mesheses3 = [];
  1139. mesheses3.push(nodealert);
  1140. }
  1141. for (var i = 0; i < mesheses3.length; i++) {
  1142. try {
  1143. if (nodealert.baojing == true) {
  1144. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  1145. } else {
  1146. h3.removeMesh(mesheses3[i]);
  1147. }
  1148. } catch (error) {
  1149. // alert(error)
  1150. }
  1151. }
  1152. }
  1153. var nodealert = scene.getTransformNodeByName("camera02");
  1154. if (nodealert != null) {
  1155. var mesheses3 = null;
  1156. if (nodealert.getClassName() == "TransformNode") {
  1157. mesheses3 = nodealert.getChildMeshes(false);
  1158. } else {
  1159. mesheses3 = [];
  1160. mesheses3.push(nodealert);
  1161. }
  1162. for (var i = 0; i < mesheses3.length; i++) {
  1163. try {
  1164. if (nodealert.baojing == true) {
  1165. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  1166. } else {
  1167. h3.removeMesh(mesheses3[i]);
  1168. }
  1169. } catch (error) {
  1170. // alert(error)
  1171. }
  1172. }
  1173. }
  1174. var nodealert = scene.getTransformNodeByName("camera03");
  1175. if (nodealert != null) {
  1176. var mesheses3 = null;
  1177. if (nodealert.getClassName() == "TransformNode") {
  1178. mesheses3 = nodealert.getChildMeshes(false);
  1179. } else {
  1180. mesheses3 = [];
  1181. mesheses3.push(nodealert);
  1182. }
  1183. for (var i = 0; i < mesheses3.length; i++) {
  1184. try {
  1185. if (nodealert.baojing == true) {
  1186. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  1187. } else {
  1188. h3.removeMesh(mesheses3[i]);
  1189. }
  1190. } catch (error) {
  1191. // alert(error)
  1192. }
  1193. }
  1194. }
  1195. var nodealert = scene.getTransformNodeByName("camera04");
  1196. if (nodealert != null) {
  1197. var mesheses3 = null;
  1198. if (nodealert.getClassName() == "TransformNode") {
  1199. mesheses3 = nodealert.getChildMeshes(false);
  1200. } else {
  1201. mesheses3 = [];
  1202. mesheses3.push(nodealert);
  1203. }
  1204. for (var i = 0; i < mesheses3.length; i++) {
  1205. try {
  1206. if (nodealert.baojing == true) {
  1207. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  1208. } else {
  1209. h3.removeMesh(mesheses3[i]);
  1210. }
  1211. } catch (error) {
  1212. // alert(error)
  1213. }
  1214. }
  1215. }
  1216. var a = scene.getMaterialByName("carpaint_baseRed");
  1217. if (a != null) {
  1218. if (a.albedoColor == b) {
  1219. b = new BABYLON.Color3(0, 1, 0);
  1220. a.albedoColor = b;
  1221. }
  1222. }
  1223. var v2 = scene.getMeshByName("tapblue");
  1224. if (v2 != null) {
  1225. v2.lookAt(camera.globalPosition, 0, 0, Math.PI);
  1226. }
  1227. var v3 = scene.getMeshByName("tapred");
  1228. if (v3 != null) {
  1229. v3.lookAt(camera.globalPosition, 0, 0, Math.PI);
  1230. }
  1231. if (currentx > 0.5) {
  1232. step *= -1;
  1233. }
  1234. if (currentx < 0) {
  1235. step *= -1;
  1236. }
  1237. currentx += step;
  1238. if (currentx2 > 5) {
  1239. step2 *= -1;
  1240. }
  1241. if (currentx2 < 0) {
  1242. step2 *= -1;
  1243. }
  1244. currentx2 += step2;
  1245. if (dynamicTexture != null && PointerOverYangan != null) {
  1246. var textx = scene.getTransformNodeByName(PointerOverYangan).wendu;
  1247. var font_size = 48;
  1248. var font = "bold " + font_size + "px Arial";
  1249. dynamicTexture.drawText(
  1250. textx + "°C",
  1251. null,
  1252. null,
  1253. font,
  1254. "#FFFFFF",
  1255. "#000000",
  1256. true
  1257. );
  1258. showx++;
  1259. show = 50;
  1260. }
  1261. if (dynamicTexture2 != null && PointerOverYangan != null) {
  1262. var textx = scene.getTransformNodeByName(PointerOverYangan).sidu;
  1263. var font_size = 50;
  1264. var font = "bold " + font_size + "px Arial";
  1265. dynamicTexture2.drawText(
  1266. textx + "%",
  1267. null,
  1268. null,
  1269. font,
  1270. "#FFFFFF",
  1271. "#000000",
  1272. true
  1273. );
  1274. }
  1275. if (dynamicTexture3 != null && PointerOverYangan != null) {
  1276. var textx = scene.getTransformNodeByName(PointerOverYangan).wendu;
  1277. var font_size = 48;
  1278. var font = "bold " + font_size + "px Arial";
  1279. dynamicTexture3.drawText(
  1280. textx + "°C",
  1281. null,
  1282. null,
  1283. font,
  1284. "#FFFFFF",
  1285. "#000000",
  1286. true
  1287. );
  1288. }
  1289. if (dynamicTexture4 != null && PointerOverYangan != null) {
  1290. var textx = scene.getTransformNodeByName(PointerOverYangan).sidu;
  1291. var font_size = 50;
  1292. var font = "bold " + font_size + "px Arial";
  1293. dynamicTexture4.drawText(
  1294. textx + "%",
  1295. null,
  1296. null,
  1297. font,
  1298. "#FFFFFF",
  1299. "#000000",
  1300. true
  1301. );
  1302. }
  1303. /*show--;
  1304. showdd--;*/
  1305. });
  1306. return scene;
  1307. };
  1308. var canvas = document.getElementById("renderCanvas");
  1309. // load the 3D engine
  1310. var engine = new BABYLON.Engine(canvas, true, {
  1311. stencil: true
  1312. });
  1313. // call the createScene function
  1314. var scene = createScene();
  1315. scene.autoClear = true;
  1316. scene.imageProcessingConfiguration.exposure = 1;
  1317. scene.imageProcessingConfiguration.contrast = 1;
  1318. scene.environmentIntensity = 0.4;
  1319. engine.runRenderLoop(function() {
  1320. scene.render();
  1321. });
  1322. window.addEventListener("resize", function() {
  1323. engine.resize();
  1324. });
  1325. function HashMap() {
  1326. //定义长度
  1327. var length = 0;
  1328. //创建一个对象
  1329. var obj = new Object();
  1330. //判断Map是否为空
  1331. this.isEmpty = function() {
  1332. return length == 0;
  1333. };
  1334. //判断对象中是否包含给定Key
  1335. this.containsKey = function(key) {
  1336. return key in obj;
  1337. };
  1338. //判断对象中是否包含给定的Value
  1339. this.containsValue = function(value) {
  1340. for (var key in obj) {
  1341. if (obj[key] == value) {
  1342. return true;
  1343. }
  1344. }
  1345. return false;
  1346. };
  1347. //向map中添加数据
  1348. this.put = function(key, value) {
  1349. if (!this.containsKey(key)) {
  1350. length++;
  1351. }
  1352. obj[key] = value;
  1353. };
  1354. //根据给定的key获取Value
  1355. this.get = function(key) {
  1356. return this.containsKey(key) ? obj[key] : null;
  1357. };
  1358. //根据给定的Key删除一个值
  1359. this.remove = function(key) {
  1360. if (this.containsKey(key) && delete obj[key]) {
  1361. length--;
  1362. }
  1363. };
  1364. //获得Map中所有的value
  1365. this.values = function() {
  1366. var _values = new Array();
  1367. for (var key in obj) {
  1368. _values.push(obj[key]);
  1369. }
  1370. return _values;
  1371. };
  1372. //获得Map中的所有key
  1373. this.keySet = function() {
  1374. var _keys = new Array();
  1375. for (var key in obj) {
  1376. _keys.push(key);
  1377. }
  1378. return _keys;
  1379. };
  1380. //获得Map的长度
  1381. this.size = function() {
  1382. return length;
  1383. };
  1384. //清空Map
  1385. this.clear = function() {
  1386. length = 0;
  1387. obj = new Object();
  1388. };
  1389. }
  1390. var yangans = new HashMap();
  1391. yangans.put("DAK_MO_OAO_001", "yangan01");
  1392. yangans.put("DAK_MO_OAO_002", "yangan02");
  1393. yangans.put("DAK_MO_OAO_003", "yangan03");
  1394. yangans.put("DAK_MO_OAO_004", "yangan04");
  1395. yangans.put("DAK_MO_CAM_001", "camera01");
  1396. yangans.put("DAK_MO_CAM_002", "camera02");
  1397. yangans.put("DAK_MO_CAM_003", "camera03");
  1398. yangans.put("DAK_MO_CAM_004", "camera04");
  1399. //功能转入报警
  1400. function Myalert(MathineID, baojing) {
  1401. scene.getMeshByName("tapblue").setEnabled(false);
  1402. scene.getMeshByName("tapred").setEnabled(false);
  1403. var theName = yangans.get(MathineID);
  1404. if (theName == "yangan01") {
  1405. scene.getTransformNodeByName("yangan01").baojing = baojing;
  1406. }
  1407. if (theName == "yangan02") {
  1408. scene.getTransformNodeByName("yangan02").baojing = baojing;
  1409. }
  1410. if (theName == "yangan03") {
  1411. scene.getTransformNodeByName("yangan03").baojing = baojing;
  1412. }
  1413. if (theName == "yangan04") {
  1414. scene.getTransformNodeByName("yangan04").baojing = baojing;
  1415. }
  1416. if (theName == "camera01") {
  1417. scene.getTransformNodeByName("camera01").baojing = baojing;
  1418. }
  1419. if (theName == "camera02") {
  1420. scene.getTransformNodeByName("camera02").baojing = baojing;
  1421. }
  1422. if (theName == "camera03") {
  1423. scene.getTransformNodeByName("camera03").baojing = baojing;
  1424. }
  1425. if (theName == "camera04") {
  1426. scene.getTransformNodeByName("camera04").baojing = baojing;
  1427. }
  1428. }
  1429. //报警 true:表示报警, false :表示不报警
  1430. //Myalert("DAK_MO_OAO_001",true)
  1431. //设置温湿度
  1432. function setAlertValue(MathineID, wendu, sidu) {
  1433. var theName = yangans.get(MathineID);
  1434. if (theName == "yangan01") {
  1435. scene.getTransformNodeByName("yangan01").wendu = wendu;
  1436. scene.getTransformNodeByName("yangan01").sidu = sidu;
  1437. }
  1438. if (theName == "yangan02") {
  1439. scene.getTransformNodeByName("yangan02").wendu = wendu;
  1440. scene.getTransformNodeByName("yangan02").sidu = sidu;
  1441. }
  1442. if (theName == "yangan03") {
  1443. scene.getTransformNodeByName("yangan03").wendu = wendu;
  1444. scene.getTransformNodeByName("yangan03").sidu = sidu;
  1445. }
  1446. if (theName == "yangan04") {
  1447. scene.getTransformNodeByName("yangan04").wendu = wendu;
  1448. scene.getTransformNodeByName("yangan04").sidu = sidu;
  1449. }
  1450. }
  1451. //设置温湿度: setAlertValue("DAK_MO_OAO_001",4,5)
  1452. //功能:档案柜标点点击
  1453. // function cabinetClick(cabinet) {
  1454. // alert(cabinet.nameID);
  1455. // }
  1456. function cabinetClick(cabinet) {
  1457. window.parent.postMessage(
  1458. {
  1459. data: cabinet.nameID
  1460. },
  1461. "*"
  1462. );
  1463. }
  1464. // 摄像头和温湿度点击
  1465. // function cameraClick(TheCamera) {
  1466. // alert(TheCamera.nameID);
  1467. // }
  1468. function cameraClick(TheCamera) {
  1469. window.parent.postMessage(
  1470. {
  1471. data: TheCamera.nameID
  1472. },
  1473. "*"
  1474. );
  1475. }
  1476. // 监测父页面传来得初始化得温度湿度值
  1477. window.addEventListener(
  1478. "message",
  1479. function(e) {
  1480. deviceData = e.data.data;
  1481. },
  1482. false
  1483. );