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

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