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

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