阅行客电子档案
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.

1090 lines
34 KiB

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