华农3D项目
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.

1016 lines
32 KiB

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