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

1057 lines
31 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
  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 show = 50;
  14. var showdd = 50;
  15. BABYLON.DefaultLoadingScreen.prototype.displayLoadingUI = function() {
  16. if (document.getElementById("customLoadingScreenDiv")) {
  17. document.getElementById("customLoadingScreenDiv").style.display = "initial";
  18. return;
  19. }
  20. this._loadingDiv = document.createElement("div");
  21. this._loadingDiv.id = "customLoadingScreenDiv";
  22. thecss = "lohingifpc";
  23. thecss2 = "zcpc";
  24. this._loadingDiv.innerHTML =
  25. "<div class='oka'><div class='" +
  26. thecss +
  27. "'><image src='./logok.gif' class='jiazaiimg'/></div><div class='" +
  28. thecss2 +
  29. "'>由 <image class='feitimg' src='./img/yxlogo.png'/> 阅行客 提供技术支持!</div></div>";
  30. this._resizeLoadingUI();
  31. window.addEventListener("resize", this._resizeLoadingUI);
  32. document.body.appendChild(this._loadingDiv);
  33. };
  34. var movebyName = function(nodeName) {
  35. var x = scene.getTransformNodeByName(nodeName);
  36. moveTrans(x);
  37. };
  38. BABYLON.DefaultLoadingScreen.prototype.hideLoadingUI = function() {
  39. show = 50;
  40. document.getElementById("customLoadingScreenDiv").style.display = "none";
  41. document.getElementById("customLoadingScreenDiv_first").style.display =
  42. "none";
  43. document.title = "全景图";
  44. var prepareGroupButton = function(transformNodex, color, qu) {
  45. var mesheses = null;
  46. if (transformNodex.getClassName() == "TransformNode") {
  47. mesheses = transformNodex.getChildMeshes(false);
  48. } else {
  49. mesheses = [];
  50. mesheses.push(transformNodex);
  51. }
  52. for (var i = 0; i < mesheses.length; i++) {
  53. mesheses[i].actionManager = new BABYLON.ActionManager(scene);
  54. var theScaling = mesheses[i].scaling;
  55. /*if (true) {
  56. try {
  57. mesheses[i].actionManager.registerAction(new BABYLON.InterpolateValueAction(BABYLON.ActionManager.OnPointerOutTrigger, mesheses[i], "scaling", new BABYLON.Vector3(theScaling.x, theScaling.y, theScaling.z), 100));
  58. 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));
  59. } catch (error) {
  60. //alert(error)
  61. }
  62. }*/
  63. var clickbegin = false;
  64. mesheses[i].actionManager.registerAction(
  65. new BABYLON.ExecuteCodeAction(
  66. {
  67. trigger: BABYLON.ActionManager.OnPointerOverTrigger,
  68. parameter: ""
  69. },
  70. function() {
  71. clickbegin = true;
  72. if (true) {
  73. if (oldtransformNodeOther != null) {
  74. oldtransformNodeOther.removeBehavior(drag);
  75. var mesheses2 = null;
  76. if (oldtransformNodeOther.getClassName() == "TransformNode") {
  77. mesheses2 = oldtransformNodeOther.getChildMeshes(false);
  78. } else {
  79. mesheses2 = [];
  80. mesheses2.push(oldtransformNodeOther);
  81. }
  82. for (var i = 0; i < mesheses2.length; i++) {
  83. try {
  84. h2.removeMesh(mesheses2[i]);
  85. } catch (error) {
  86. // alert(error)
  87. }
  88. }
  89. }
  90. oldtransformNodeOther = transformNodex;
  91. //transformNodex.addBehavior(drag);
  92. var mesheses3 = null;
  93. if (transformNodex.getClassName() == "TransformNode") {
  94. mesheses3 = transformNodex.getChildMeshes(false);
  95. } else {
  96. mesheses3 = [];
  97. mesheses3.push(transformNodex);
  98. }
  99. for (var i = 0; i < mesheses3.length; i++) {
  100. try {
  101. h2.addMesh(mesheses3[i], color);
  102. } catch (error) {
  103. // alert(error)
  104. }
  105. }
  106. clickbegin = false;
  107. }
  108. }
  109. )
  110. );
  111. mesheses[i].actionManager.registerAction(
  112. new BABYLON.ExecuteCodeAction(
  113. {
  114. trigger: BABYLON.ActionManager.OnPickTrigger,
  115. parameter: ""
  116. },
  117. function() {
  118. clickbegin = true;
  119. if (true) {
  120. try {
  121. quClick(qu);
  122. } catch (error) {
  123. // alert(error)
  124. }
  125. clickbegin = false;
  126. }
  127. }
  128. )
  129. );
  130. }
  131. };
  132. var prepareGroupButton2 = function(transformNodex, color, qu) {
  133. var mesheses = null;
  134. if (transformNodex.getClassName() == "TransformNode") {
  135. mesheses = transformNodex.getChildMeshes(false);
  136. } else {
  137. mesheses = [];
  138. mesheses.push(transformNodex);
  139. }
  140. for (var i = 0; i < mesheses.length; i++) {
  141. mesheses[i].actionManager = new BABYLON.ActionManager(scene);
  142. var theScaling = mesheses[i].scaling;
  143. /*if (true) {
  144. try {
  145. mesheses[i].actionManager.registerAction(new BABYLON.InterpolateValueAction(BABYLON.ActionManager.OnPointerOutTrigger, mesheses[i], "scaling", new BABYLON.Vector3(theScaling.x, theScaling.y, theScaling.z), 100));
  146. 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));
  147. } catch (error) {
  148. //alert(error)
  149. }
  150. }*/
  151. var clickbegin = false;
  152. mesheses[i].actionManager.registerAction(
  153. new BABYLON.ExecuteCodeAction(
  154. {
  155. trigger: BABYLON.ActionManager.OnPointerOverTrigger,
  156. parameter: ""
  157. },
  158. function() {
  159. clickbegin = true;
  160. if (true) {
  161. if (oldtransformNodeOther != null) {
  162. oldtransformNodeOther.removeBehavior(drag);
  163. var mesheses2 = null;
  164. if (oldtransformNodeOther.getClassName() == "TransformNode") {
  165. mesheses2 = oldtransformNodeOther.getChildMeshes(false);
  166. } else {
  167. mesheses2 = [];
  168. mesheses2.push(oldtransformNodeOther);
  169. }
  170. for (var i = 0; i < mesheses2.length; i++) {
  171. try {
  172. h2.removeMesh(mesheses2[i]);
  173. } catch (error) {
  174. // alert(error)
  175. }
  176. }
  177. }
  178. oldtransformNodeOther = transformNodex;
  179. //transformNodex.addBehavior(drag);
  180. var mesheses3 = null;
  181. if (transformNodex.getClassName() == "TransformNode") {
  182. mesheses3 = transformNodex.getChildMeshes(false);
  183. } else {
  184. mesheses3 = [];
  185. mesheses3.push(transformNodex);
  186. }
  187. for (var i = 0; i < mesheses3.length; i++) {
  188. try {
  189. h2.addMesh(mesheses3[i], color);
  190. } catch (error) {
  191. // alert(error)
  192. }
  193. }
  194. clickbegin = false;
  195. }
  196. }
  197. )
  198. );
  199. mesheses[i].actionManager.registerAction(
  200. new BABYLON.ExecuteCodeAction(
  201. {
  202. trigger: BABYLON.ActionManager.OnPickTrigger,
  203. parameter: ""
  204. },
  205. function() {
  206. clickbegin = true;
  207. if (true) {
  208. try {
  209. // quClick(transformNodex.name)
  210. cameraClick(transformNodex);
  211. } catch (error) {
  212. // alert(error)
  213. }
  214. clickbegin = false;
  215. }
  216. }
  217. )
  218. );
  219. }
  220. };
  221. var dag1 = scene.getTransformNodeByName("A区");
  222. var dag2 = scene.getTransformNodeByName("B区");
  223. var dag3 = scene.getTransformNodeByName("C区");
  224. var colorddd = new BABYLON.Color3(51 / 255, 156 / 255, 1);
  225. prepareGroupButton(dag1, colorddd, "A区");
  226. prepareGroupButton(dag2, colorddd, "B区");
  227. prepareGroupButton(dag3, colorddd, "C区");
  228. //绑功能点
  229. var cl = new BABYLON.Color3(0, 0, 1);
  230. var jk01 = scene.getTransformNodeByName("camera01");
  231. jk01.nameID = "DAK_MO_CAM_001";
  232. prepareGroupButton2(jk01, cl);
  233. var jk02 = scene.getTransformNodeByName("camera02");
  234. jk02.nameID = "DAK_MO_CAM_002";
  235. prepareGroupButton2(jk02, cl);
  236. var jk03 = scene.getTransformNodeByName("camera03");
  237. jk03.nameID = "DAK_MO_CAM_003";
  238. prepareGroupButton2(jk03, cl);
  239. var jk04 = scene.getTransformNodeByName("camera04");
  240. jk04.nameID = "DAK_MO_CAM_004";
  241. prepareGroupButton2(jk04, cl);
  242. var jk05 = scene.getTransformNodeByName("camera05");
  243. jk05.nameID = "ZLS_MO_CAM_001";
  244. prepareGroupButton2(jk05, cl);
  245. var jk06 = scene.getTransformNodeByName("camera06");
  246. jk06.nameID = "ZLS_MO_CAM_002";
  247. prepareGroupButton2(jk06, cl);
  248. var jk07 = scene.getTransformNodeByName("camera07");
  249. jk07.nameID = "YLS_MO_CAM_001";
  250. prepareGroupButton2(jk07, cl);
  251. var jk08 = scene.getTransformNodeByName("camera08");
  252. jk08.nameID = "YLS_MO_CAM_002";
  253. prepareGroupButton2(jk08, cl);
  254. var jk09 = scene.getTransformNodeByName("camera09");
  255. jk09.nameID = "ZL_MO_CAM_001";
  256. prepareGroupButton2(jk09, cl);
  257. //set camera to null
  258. var x = scene.getMeshByName("档案架01_primitive0");
  259. x.overlayColor = BABYLON.Color3.White();
  260. x.renderOverlay = true;
  261. x = scene.getMeshByName("档案架02_primitive0");
  262. x.overlayColor = BABYLON.Color3.White();
  263. x.renderOverlay = true;
  264. x = scene.getMeshByName("档案架03_primitive0");
  265. x.overlayColor = BABYLON.Color3.White();
  266. x.renderOverlay = true;
  267. x = scene.getMeshByName("档案架04_primitive0");
  268. x.overlayColor = BABYLON.Color3.White();
  269. x.renderOverlay = true;
  270. x = scene.getMeshByName("档案架05_primitive0");
  271. x.overlayColor = BABYLON.Color3.White();
  272. x.renderOverlay = true;
  273. x = scene.getMeshByName("档案架06_primitive0");
  274. x.overlayColor = BABYLON.Color3.White();
  275. x.renderOverlay = true;
  276. x = scene.getMeshByName("档案架07_primitive0");
  277. x.overlayColor = BABYLON.Color3.White();
  278. x.renderOverlay = true;
  279. x = scene.getMeshByName("档案架08_primitive0");
  280. x.overlayColor = BABYLON.Color3.White();
  281. x.renderOverlay = true;
  282. x = scene.getMeshByName("档案架09_primitive0");
  283. x.overlayColor = BABYLON.Color3.White();
  284. x.renderOverlay = true;
  285. x = scene.getMeshByName("档案架10_primitive0");
  286. x.overlayColor = BABYLON.Color3.White();
  287. x.renderOverlay = true;
  288. x = scene.getMeshByName("前门01_primitive0");
  289. x.overlayColor = BABYLON.Color3.White();
  290. x.renderOverlay = true;
  291. x = scene.getMeshByName("后门01_primitive0");
  292. x.overlayColor = BABYLON.Color3.White();
  293. x.renderOverlay = true;
  294. // x = scene.getMeshByName("墙体");
  295. // x.overlayColor = BABYLON.Color3.White();
  296. // x.renderOverlay = true;
  297. // x = scene.getMeshByName("立方体_9_2");
  298. // x.overlayColor = BABYLON.Color3.White();
  299. // x.renderOverlay = true;
  300. // x = scene.getMeshByName("立方体_2_17.001_primitive0");
  301. // x.overlayColor = BABYLON.Color3.White();
  302. // x.renderOverlay = true;
  303. // x = scene.getMeshByName("立方体_2_17.001_primitive1");
  304. // x.overlayColor = BABYLON.Color3.White();
  305. // x.renderOverlay = true;
  306. // x = scene.getMeshByName("立方体_2_17.001_primitive2");
  307. // x.overlayColor = BABYLON.Color3.White();
  308. // x.renderOverlay = true;
  309. // x = scene.getMeshByName("立方体_2_17.001_primitive3");
  310. // x.overlayColor = BABYLON.Color3.White();
  311. // x.renderOverlay = true;
  312. // x = scene.getMeshByName("立方体_12_2_primitive0");
  313. // x.overlayColor = BABYLON.Color3.White();
  314. // x.renderOverlay = true;
  315. // x = scene.getMeshByName("立方体_12_2_primitive1");
  316. // x.overlayColor = BABYLON.Color3.White();
  317. // x.renderOverlay = true;
  318. //x = scene.getMeshByName("立方体_12_2_primitive2");
  319. //x.overlayColor = BABYLON.Color3.White()
  320. //x.renderOverlay = true;
  321. // x = scene.getMeshByName("立方体_12_2_primitive3");
  322. // x.overlayColor = BABYLON.Color3.White();
  323. // x.renderOverlay = true;
  324. // x = scene.getMeshByName("立方体_12_2_primitive4");
  325. // x.overlayColor = BABYLON.Color3.White();
  326. // x.renderOverlay = true;
  327. x = scene.getMeshByName("立方体_5_2.001_LOD1_primitive0");
  328. x.overlayColor = BABYLON.Color3.White();
  329. x.renderOverlay = true;
  330. x = scene.getMeshByName("立方体_5_2.001_LOD1_primitive2");
  331. x.overlayColor = BABYLON.Color3.White();
  332. x.renderOverlay = true;
  333. x = scene.getMeshByName("立方体_1_12.001_LOD1");
  334. x.overlayColor = BABYLON.Color3.White();
  335. x.renderOverlay = true;
  336. var light = new BABYLON.HemisphericLight(
  337. "HemiLight",
  338. new BABYLON.Vector3(0, 1, 0),
  339. scene
  340. );
  341. light.intensity = 2;
  342. light.diffuse = new BABYLON.Color3(0.92, 0.92, 0.92);
  343. var material1 = scene.getMaterialByName("材质.107");
  344. material1.albedoColor = new BABYLON.Color3(168 / 255, 167 / 255, 168 / 255);
  345. material1.roughness = 1;
  346. //墙
  347. scene.getMaterialByName("cover_label.009").metallic = 0.36;
  348. scene.getMaterialByName("cover_label.009").albedoColor = new BABYLON.Color3(
  349. 1,
  350. 1,
  351. 1
  352. );
  353. scene.getMaterialByName("cover_label.010").metallic = 0.36;
  354. scene.getMaterialByName("cover_label.010").albedoColor = new BABYLON.Color3(
  355. 1,
  356. 1,
  357. 1
  358. );
  359. //铁
  360. var material3 = scene.getMaterialByName("材质.116");
  361. material3.metallic = 0.9;
  362. material3.roughness = 0;
  363. material3.emissiveColor = new BABYLON.Color3(0.278, 0.278, 0.278);
  364. scene.getMaterialByName("材质.102").metallic = 0.9;
  365. scene.getMaterialByName("材质.102").roughness = 0.0;
  366. scene.getMaterialByName("材质.102").emissiveColor = new BABYLON.Color3(
  367. 0.278,
  368. 0.278,
  369. 0.278
  370. );
  371. scene.getMaterialByName("材质.132").metallic = 0.9;
  372. scene.getMaterialByName("材质.132").roughness = 0.0;
  373. scene.getMaterialByName("材质.132").emissiveColor = new BABYLON.Color3(
  374. 0.278,
  375. 0.278,
  376. 0.278
  377. );
  378. scene.getMaterialByName("材质.122").metallic = 0.9;
  379. scene.getMaterialByName("材质.122").roughness = 0.0;
  380. scene.getMaterialByName("材质.122").emissiveColor = new BABYLON.Color3(
  381. 0.278,
  382. 0.278,
  383. 0.278
  384. );
  385. //地
  386. var material2 = scene.getMaterialByName("材质.106");
  387. material2.albedoColor = new BABYLON.Color3(0.8, 0.8, 0.8);
  388. material2.metallic = 0.52;
  389. material2.roughness = 0;
  390. //material2.metallicReflectanceColor=new BABYLON.Color3(1,0,0);
  391. //material2.emissiveColor=new BABYLON.Color3(0.8,0.8,0.8);
  392. //地面扩大处理
  393. var meshground1 = scene.getMeshByName("地面A").clone();
  394. var meshground = scene.getMeshByName("地面A");
  395. meshground.isVisible = false;
  396. meshground1.position = new BABYLON.Vector3(-1.512, -0.069, 1.852);
  397. meshground1.scaling = new BABYLON.Vector3(0.022, 0.013, 0.005);
  398. meshground1.parent = scene.getMeshByName("__root__");
  399. //scene.getMeshByName("地面.002").isVisible = false;
  400. //scene.getMeshByName("地面.003").isVisible = false;
  401. //scene.getMeshByName("地面").isVisible = false;
  402. scene.getMaterialByName("材质.127").metallic = 0.8;
  403. scene.getMaterialByName("Wood-04.004").metallic = 0.8;
  404. scene.getMaterialByName("Wood-04.004").metallic = 0.8;
  405. scene.getMaterialByName("Desk.002").metallic = 0.8;
  406. scene.getMaterialByName("Desk.002").roughness = 0.72;
  407. scene.getMaterialByName("Desk.003").metallic = 0.8;
  408. scene.getMaterialByName("Desk.003").roughness = 0.72;
  409. scene.getMaterialByName("Desk.004").metallic = 0.8;
  410. scene.getMaterialByName("Desk.004").roughness = 0.72;
  411. scene.getMaterialByName("Desk.007").metallic = 0.8;
  412. scene.getMaterialByName("Desk.007").roughness = 0.72;
  413. scene.getMaterialByName("Desk.008").metallic = 0.8;
  414. scene.getMaterialByName("Desk.008").roughness = 0.72;
  415. scene.getMaterialByName("Desk.009").metallic = 0.8;
  416. scene.getMaterialByName("Desk.009").roughness = 0.72;
  417. scene.getMaterialByName("Desk.019").metallic = 0.8;
  418. scene.getMaterialByName("Desk.019").roughness = 0.72;
  419. scene.getMaterialByName("Desk.020").metallic = 0.8;
  420. scene.getMaterialByName("Desk.020").roughness = 0.72;
  421. scene.getMaterialByName("Desk.021").metallic = 0.8;
  422. scene.getMaterialByName("Desk.021").roughness = 0.72;
  423. scene.getMaterialByName("Desk.022").metallic = 0.8;
  424. scene.getMaterialByName("Desk.022").roughness = 0.72;
  425. scene.getMaterialByName("Desk.023").metallic = 0.8;
  426. scene.getMaterialByName("Desk.023").roughness = 0.72;
  427. scene.getMaterialByName("Desk.024").metallic = 0.8;
  428. scene.getMaterialByName("Desk.024").roughness = 0.72;
  429. };
  430. // createScene function that creates and return the scene
  431. var createScene = function() {
  432. engine.displayLoadingUI();
  433. // create a basic BJS Scene object
  434. var scene = new BABYLON.Scene(engine);
  435. // scene.debugLayer.show();
  436. var camera = new BABYLON.ArcRotateCamera(
  437. "Camera",
  438. 0,
  439. 0,
  440. 5,
  441. new BABYLON.Vector3(0, -1, 0),
  442. scene
  443. );
  444. camera.setTarget(new BABYLON.Vector3(0, 2, 0));
  445. camera.attachControl(canvas, true);
  446. camera.lowerRadiusLimit = 2.0; // 这里是最大的位置,值越大,物体越小
  447. camera.upperRadiusLimit = 40;
  448. camera.radius = 15.998;
  449. camera.alpha = (Math.PI * -248.8) / 180;
  450. camera.beta = (Math.PI * 66) / 180;
  451. camera.inertia = 0.1; // 缩放的快慢
  452. camera.useAutoRotationBehavior = true; // 自动旋转
  453. camera.panningDistanceLimit = 2; //平移半径
  454. camera.panningInertia = 0;
  455. camera.autoTransitionRange = 1;
  456. camera.pinchToPanMaxDistance = 0.1;
  457. camera.pinchDeltaPercentage = 0.001;
  458. camera.useAutoRotationBehavior = false;
  459. scene.activeCamera = camera;
  460. scene.activeCamera.useInputToRestoreState = true;
  461. var camera1_status = scene.activeCamera.storeState();
  462. // 改变场景背景颜色 - 背景颜色opacity值设为0,达到透明背景的效果
  463. scene.clearColor = new BABYLON.Color4(0, 0, 0, 0);
  464. var assetsManager = new BABYLON.AssetsManager(scene);
  465. var meshTask = assetsManager.addMeshTask(
  466. "skull task",
  467. "",
  468. "asset/",
  469. "total2.glb"
  470. );
  471. meshTask.onSuccess = function(task) {
  472. task.loadedMeshes[0].scaling = new BABYLON.Vector3(0.2, 0.2, -0.2);
  473. task.loadedMeshes[0].position = new BABYLON.Vector3(1.3, 2, 0);
  474. };
  475. meshTask.onError = function(task, message, exception) {
  476. console.log(message, exception);
  477. };
  478. var meshTask_camera = assetsManager.addMeshTask(
  479. "skull task",
  480. "",
  481. "asset/",
  482. "TotalCamera.glb"
  483. );
  484. meshTask_camera.onSuccess = function(task) {
  485. task.loadedMeshes[0].name = "cameras";
  486. task.loadedMeshes[0].scaling = new BABYLON.Vector3(0.2, 0.2, -0.2);
  487. task.loadedMeshes[0].position = new BABYLON.Vector3(1.3, 2, 0);
  488. };
  489. meshTask_camera.onError = function(task, message, exception) {
  490. console.log(message, exception);
  491. };
  492. var hdrTexture = new BABYLON.CubeTexture.CreateFromPrefilteredData(
  493. "textures/environmentSpecular.env",
  494. scene
  495. );
  496. scene.environmentTexture = hdrTexture;
  497. var spriteManagerPlayer = new BABYLON.SpriteManager(
  498. "playerManager",
  499. "./img/bl9.png",
  500. 10,
  501. {
  502. width: 100,
  503. height: 100
  504. },
  505. scene
  506. );
  507. //spriteManagerPlayer.renderingGroupId = 2;
  508. spriteManagerPlayer.isPickable = true;
  509. scene.onPointerDown = function(evt) {
  510. var pickResult = scene.pickSprite(this.pointerX, this.pointerY);
  511. var pick = scene.pick(scene.pointerX, scene.pointerY);
  512. console.log(pick.pickedPoint);
  513. if (pickResult.pickedSprite != null) {
  514. if (pickResult.hit) {
  515. alert(pickResult.pickedSprite.name);
  516. }
  517. }
  518. };
  519. // renderCanvas.style.backgroundImage = 'url("./textures/' + '4' + '.jpg")';
  520. assetsManager.load();
  521. drag = new BABYLON.PointerDragBehavior({
  522. dragPlaneNormal: new BABYLON.Vector3(0, 0, 1)
  523. });
  524. //drag.useObjectOrienationForDragging = false;
  525. drag.validateDrag = targetPosition => {
  526. console.log(targetPosition);
  527. if (targetPosition.x > 10.5 || targetPosition.x < -10.5) {
  528. return false;
  529. }
  530. if (targetPosition.z > 10.5 || targetPosition.z < -10.5) {
  531. return false;
  532. }
  533. if (oldtransformNodex != null) {
  534. return true;
  535. }
  536. };
  537. drag.onDragEndObservable.add(event => {
  538. console.log("dragEnd");
  539. //console.log(event);
  540. //console.log(line03_position)
  541. });
  542. //GUI
  543. h1 = new BABYLON.HighlightLayer("hl1", scene);
  544. h2 = new BABYLON.HighlightLayer("hl2", scene);
  545. h3 = new BABYLON.HighlightLayer("hl2", scene);
  546. var step = 0.1;
  547. var currentx = 1;
  548. var step2 = 0.1;
  549. var currentx2 = 0.1;
  550. h1.blurHorizontalSize = 0.1;
  551. var showx = 0;
  552. var showx2 = 2;
  553. scene.registerAfterRender(() => {
  554. h1.blurHorizontalSize = h1.blurVerticalSize + currentx;
  555. var nodealert = scene.getTransformNodeByName("camera01");
  556. if (nodealert != null) {
  557. var mesheses3 = null;
  558. if (nodealert.getClassName() == "TransformNode") {
  559. mesheses3 = nodealert.getChildMeshes(false);
  560. } else {
  561. mesheses3 = [];
  562. mesheses3.push(nodealert);
  563. }
  564. for (var i = 0; i < mesheses3.length; i++) {
  565. try {
  566. if (nodealert.baojing == true) {
  567. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  568. } else {
  569. h3.removeMesh(mesheses3[i]);
  570. }
  571. } catch (error) {
  572. // alert(error)
  573. }
  574. }
  575. }
  576. var nodealert = scene.getTransformNodeByName("camera02");
  577. if (nodealert != null) {
  578. var mesheses3 = null;
  579. if (nodealert.getClassName() == "TransformNode") {
  580. mesheses3 = nodealert.getChildMeshes(false);
  581. } else {
  582. mesheses3 = [];
  583. mesheses3.push(nodealert);
  584. }
  585. for (var i = 0; i < mesheses3.length; i++) {
  586. try {
  587. if (nodealert.baojing == true) {
  588. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  589. } else {
  590. h3.removeMesh(mesheses3[i]);
  591. }
  592. } catch (error) {
  593. // alert(error)
  594. }
  595. }
  596. }
  597. var nodealert = scene.getTransformNodeByName("camera03");
  598. if (nodealert != null) {
  599. var mesheses3 = null;
  600. if (nodealert.getClassName() == "TransformNode") {
  601. mesheses3 = nodealert.getChildMeshes(false);
  602. } else {
  603. mesheses3 = [];
  604. mesheses3.push(nodealert);
  605. }
  606. for (var i = 0; i < mesheses3.length; i++) {
  607. try {
  608. if (nodealert.baojing == true) {
  609. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  610. } else {
  611. h3.removeMesh(mesheses3[i]);
  612. }
  613. } catch (error) {
  614. // alert(error)
  615. }
  616. }
  617. }
  618. var nodealert = scene.getTransformNodeByName("camera04");
  619. if (nodealert != null) {
  620. var mesheses3 = null;
  621. if (nodealert.getClassName() == "TransformNode") {
  622. mesheses3 = nodealert.getChildMeshes(false);
  623. } else {
  624. mesheses3 = [];
  625. mesheses3.push(nodealert);
  626. }
  627. for (var i = 0; i < mesheses3.length; i++) {
  628. try {
  629. if (nodealert.baojing == true) {
  630. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  631. } else {
  632. h3.removeMesh(mesheses3[i]);
  633. }
  634. } catch (error) {
  635. // alert(error)
  636. }
  637. }
  638. }
  639. var nodealert = scene.getTransformNodeByName("camera05");
  640. if (nodealert != null) {
  641. var mesheses3 = null;
  642. if (nodealert.getClassName() == "TransformNode") {
  643. mesheses3 = nodealert.getChildMeshes(false);
  644. } else {
  645. mesheses3 = [];
  646. mesheses3.push(nodealert);
  647. }
  648. for (var i = 0; i < mesheses3.length; i++) {
  649. try {
  650. if (nodealert.baojing == true) {
  651. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  652. } else {
  653. h3.removeMesh(mesheses3[i]);
  654. }
  655. } catch (error) {
  656. // alert(error)
  657. }
  658. }
  659. }
  660. var nodealert = scene.getTransformNodeByName("camera06");
  661. if (nodealert != null) {
  662. var mesheses3 = null;
  663. if (nodealert.getClassName() == "TransformNode") {
  664. mesheses3 = nodealert.getChildMeshes(false);
  665. } else {
  666. mesheses3 = [];
  667. mesheses3.push(nodealert);
  668. }
  669. for (var i = 0; i < mesheses3.length; i++) {
  670. try {
  671. if (nodealert.baojing == true) {
  672. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  673. } else {
  674. h3.removeMesh(mesheses3[i]);
  675. }
  676. } catch (error) {
  677. // alert(error)
  678. }
  679. }
  680. }
  681. var nodealert = scene.getTransformNodeByName("camera07");
  682. if (nodealert != null) {
  683. var mesheses3 = null;
  684. if (nodealert.getClassName() == "TransformNode") {
  685. mesheses3 = nodealert.getChildMeshes(false);
  686. } else {
  687. mesheses3 = [];
  688. mesheses3.push(nodealert);
  689. }
  690. for (var i = 0; i < mesheses3.length; i++) {
  691. try {
  692. if (nodealert.baojing == true) {
  693. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  694. } else {
  695. h3.removeMesh(mesheses3[i]);
  696. }
  697. } catch (error) {
  698. // alert(error)
  699. }
  700. }
  701. }
  702. var nodealert = scene.getTransformNodeByName("camera08");
  703. if (nodealert != null) {
  704. var mesheses3 = null;
  705. if (nodealert.getClassName() == "TransformNode") {
  706. mesheses3 = nodealert.getChildMeshes(false);
  707. } else {
  708. mesheses3 = [];
  709. mesheses3.push(nodealert);
  710. }
  711. for (var i = 0; i < mesheses3.length; i++) {
  712. try {
  713. if (nodealert.baojing == true) {
  714. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  715. } else {
  716. h3.removeMesh(mesheses3[i]);
  717. }
  718. } catch (error) {
  719. // alert(error)
  720. }
  721. }
  722. }
  723. var nodealert = scene.getTransformNodeByName("camera09");
  724. if (nodealert != null) {
  725. var mesheses3 = null;
  726. if (nodealert.getClassName() == "TransformNode") {
  727. mesheses3 = nodealert.getChildMeshes(false);
  728. } else {
  729. mesheses3 = [];
  730. mesheses3.push(nodealert);
  731. }
  732. for (var i = 0; i < mesheses3.length; i++) {
  733. try {
  734. if (nodealert.baojing == true) {
  735. h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
  736. } else {
  737. h3.removeMesh(mesheses3[i]);
  738. }
  739. } catch (error) {
  740. // alert(error)
  741. }
  742. }
  743. }
  744. if (currentx > 0.5) {
  745. step *= -1;
  746. }
  747. if (currentx < 0) {
  748. step *= -1;
  749. }
  750. currentx += step;
  751. if (currentx2 > 5) {
  752. step2 *= -1;
  753. }
  754. if (currentx2 < 0) {
  755. step2 *= -1;
  756. }
  757. currentx2 += step2;
  758. if (dynamicTexture != null && show == 0) {
  759. var textx = showx;
  760. var font_size = 48;
  761. var font = "bold " + font_size + "px Arial";
  762. dynamicTexture.drawText(
  763. textx,
  764. null,
  765. null,
  766. font,
  767. "#FF0000",
  768. "#ffffff",
  769. true
  770. );
  771. showx++;
  772. show = 50;
  773. }
  774. if (dynamicTexture2 != null && showdd == 0) {
  775. var textx = showx2;
  776. var font_size = 48;
  777. var font = "bold " + font_size + "px Arial";
  778. dynamicTexture2.drawText(
  779. textx,
  780. null,
  781. null,
  782. font,
  783. "#0000FF",
  784. "#ffffff",
  785. true
  786. );
  787. showx2++;
  788. showdd = 50;
  789. if (showx2 == 10) {
  790. showx2 = 0;
  791. }
  792. }
  793. show--;
  794. showdd--;
  795. });
  796. return scene;
  797. };
  798. var canvas = document.getElementById("renderCanvas");
  799. // load the 3D engine
  800. var engine = new BABYLON.Engine(canvas, true, {
  801. stencil: true
  802. });
  803. // call the createScene function
  804. var scene = createScene();
  805. scene.autoClear = true;
  806. scene.imageProcessingConfiguration.exposure = 1;
  807. scene.imageProcessingConfiguration.contrast = 1;
  808. scene.environmentIntensity = 0.4;
  809. engine.runRenderLoop(function() {
  810. scene.render();
  811. });
  812. window.addEventListener("resize", function() {
  813. engine.resize();
  814. });
  815. //功能:点区以后跳转到新页
  816. //quName :转过来的区号
  817. // function quClick(quName){
  818. // if(quName=="A区"){
  819. // window.location.href = "http://192.168.99.72:8099/83/webA/index.html";
  820. // }
  821. // if(quName=="B区"){
  822. // window.location.href = "http://192.168.99.72:8099/83/webB/index.html";
  823. // }
  824. // if(quName=="C区"){
  825. // window.location.href = "http://192.168.99.72:8099/83/webC/index.html";
  826. // }
  827. // }
  828. function quClick(name) {
  829. window.parent.postMessage(
  830. {
  831. data: name
  832. },
  833. "*"
  834. );
  835. }
  836. //功能:点camera后事件
  837. // function cameraClick(camera){
  838. // alert(camera.nameID);
  839. // }
  840. function cameraClick(camera) {
  841. window.parent.postMessage(
  842. {
  843. data: camera.nameID
  844. },
  845. "*"
  846. );
  847. }
  848. function HashMap() {
  849. //定义长度
  850. var length = 0;
  851. //创建一个对象
  852. var obj = new Object();
  853. //判断Map是否为空
  854. this.isEmpty = function() {
  855. return length == 0;
  856. };
  857. //判断对象中是否包含给定Key
  858. this.containsKey = function(key) {
  859. return key in obj;
  860. };
  861. //判断对象中是否包含给定的Value
  862. this.containsValue = function(value) {
  863. for (var key in obj) {
  864. if (obj[key] == value) {
  865. return true;
  866. }
  867. }
  868. return false;
  869. };
  870. //向map中添加数据
  871. this.put = function(key, value) {
  872. if (!this.containsKey(key)) {
  873. length++;
  874. }
  875. obj[key] = value;
  876. };
  877. //根据给定的key获取Value
  878. this.get = function(key) {
  879. return this.containsKey(key) ? obj[key] : null;
  880. };
  881. //根据给定的Key删除一个值
  882. this.remove = function(key) {
  883. if (this.containsKey(key) && delete obj[key]) {
  884. length--;
  885. }
  886. };
  887. //获得Map中所有的value
  888. this.values = function() {
  889. var _values = new Array();
  890. for (var key in obj) {
  891. _values.push(obj[key]);
  892. }
  893. return _values;
  894. };
  895. //获得Map中的所有key
  896. this.keySet = function() {
  897. var _keys = new Array();
  898. for (var key in obj) {
  899. _keys.push(key);
  900. }
  901. return _keys;
  902. };
  903. //获得Map的长度
  904. this.size = function() {
  905. return length;
  906. };
  907. //清空Map
  908. this.clear = function() {
  909. length = 0;
  910. obj = new Object();
  911. };
  912. }
  913. var yangans = new HashMap();
  914. yangans.put("DAK_MO_CAM_001", "camera01");
  915. yangans.put("DAK_MO_CAM_002", "camera02");
  916. yangans.put("DAK_MO_CAM_003", "camera03");
  917. yangans.put("DAK_MO_CAM_004", "camera04");
  918. yangans.put("ZLS_MO_CAM_001", "camera05");
  919. yangans.put("ZLS_MO_CAM_002", "camera06");
  920. yangans.put("YLS_MO_CAM_001", "camera07");
  921. yangans.put("YLS_MO_CAM_002", "camera08");
  922. yangans.put("ZL_MO_CAM_001", "camera09");
  923. //功能转入报警
  924. function Myalert(MathineID, baojing) {
  925. var theName = yangans.get(MathineID);
  926. if (theName == "camera01") {
  927. scene.getTransformNodeByName("camera01").baojing = baojing;
  928. }
  929. if (theName == "camera02") {
  930. scene.getTransformNodeByName("camera02").baojing = baojing;
  931. }
  932. if (theName == "camera03") {
  933. scene.getTransformNodeByName("camera03").baojing = baojing;
  934. }
  935. if (theName == "camera04") {
  936. scene.getTransformNodeByName("camera04").baojing = baojing;
  937. }
  938. if (theName == "camera05") {
  939. scene.getTransformNodeByName("camera05").baojing = baojing;
  940. }
  941. if (theName == "camera06") {
  942. scene.getTransformNodeByName("camera06").baojing = baojing;
  943. }
  944. if (theName == "camera07") {
  945. scene.getTransformNodeByName("camera07").baojing = baojing;
  946. }
  947. if (theName == "camera08") {
  948. scene.getTransformNodeByName("camera08").baojing = baojing;
  949. }
  950. if (theName == "camera09") {
  951. scene.getTransformNodeByName("camera09").baojing = baojing;
  952. }
  953. }
  954. //报警 true:表示报警, false :表示不报警
  955. //Myalert("DAK_MO_OAO_001",true)