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

1055 lines
33 KiB

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