diff --git a/public/webTotal/index.js b/public/webTotal/index.js new file mode 100644 index 0000000..8e0802f --- /dev/null +++ b/public/webTotal/index.js @@ -0,0 +1,1090 @@ +// 从这里开始 +var h1 = null; +var h2 = null; +var h3 = null; + +var oldtransformNodex = null; +var oldtransformNodeOther = null; +var drag = null; +var notmoveGroup = null; +var movedGroup = null; + +var movesingle = false; +var dynamicTexture = null; +var dynamicTexture2 = null; +var show = 50; +var showdd = 50; +BABYLON.DefaultLoadingScreen.prototype.displayLoadingUI = function() { + if (document.getElementById("customLoadingScreenDiv")) { + document.getElementById("customLoadingScreenDiv").style.display = "initial"; + return; + } + this._loadingDiv = document.createElement("div"); + this._loadingDiv.id = "customLoadingScreenDiv"; + thecss = "lohingifpc"; + thecss2 = "zcpc"; + this._loadingDiv.innerHTML = + "
"; + + // this._loadingDiv.innerHTML = + // "
阅行客 提供技术支持!
"; + + this._resizeLoadingUI(); + window.addEventListener("resize", this._resizeLoadingUI); + document.body.appendChild(this._loadingDiv); +}; + +var movebyName = function(nodeName) { + var x = scene.getTransformNodeByName(nodeName); + moveTrans(x); +}; + +BABYLON.DefaultLoadingScreen.prototype.hideLoadingUI = function() { + show = 50; + document.getElementById("customLoadingScreenDiv").style.display = "none"; + document.getElementById("customLoadingScreenDiv_first").style.display = + "none"; + document.title = "全景图"; + var prepareGroupButton = function(transformNodex, color, qu) { + var mesheses = null; + if (transformNodex.getClassName() == "TransformNode") { + mesheses = transformNodex.getChildMeshes(false); + } else { + mesheses = []; + mesheses.push(transformNodex); + } + for (var i = 0; i < mesheses.length; i++) { + mesheses[i].actionManager = new BABYLON.ActionManager(scene); + var theScaling = mesheses[i].scaling; + /*if (true) { + try { + mesheses[i].actionManager.registerAction(new BABYLON.InterpolateValueAction(BABYLON.ActionManager.OnPointerOutTrigger, mesheses[i], "scaling", new BABYLON.Vector3(theScaling.x, theScaling.y, theScaling.z), 100)); + 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)); + + } catch (error) { + //alert(error) + } + }*/ + var clickbegin = false; + mesheses[i].actionManager.registerAction( + new BABYLON.ExecuteCodeAction( + { + trigger: BABYLON.ActionManager.OnPointerOverTrigger, + parameter: "" + }, + function() { + clickbegin = true; + if (true) { + if (oldtransformNodeOther != null) { + oldtransformNodeOther.removeBehavior(drag); + var mesheses2 = null; + if (oldtransformNodeOther.getClassName() == "TransformNode") { + mesheses2 = oldtransformNodeOther.getChildMeshes(false); + } else { + mesheses2 = []; + mesheses2.push(oldtransformNodeOther); + } + for (var i = 0; i < mesheses2.length; i++) { + try { + h2.removeMesh(mesheses2[i]); + } catch (error) { + // alert(error) + } + } + } + oldtransformNodeOther = transformNodex; + //transformNodex.addBehavior(drag); + var mesheses3 = null; + if (transformNodex.getClassName() == "TransformNode") { + mesheses3 = transformNodex.getChildMeshes(false); + } else { + mesheses3 = []; + mesheses3.push(transformNodex); + } + for (var i = 0; i < mesheses3.length; i++) { + try { + h2.addMesh(mesheses3[i], color); + } catch (error) { + // alert(error) + } + } + clickbegin = false; + } + } + ) + ); + mesheses[i].actionManager.registerAction( + new BABYLON.ExecuteCodeAction( + { + trigger: BABYLON.ActionManager.OnPickTrigger, + parameter: "" + }, + function() { + clickbegin = true; + if (true) { + try { + quClick(qu); + } catch (error) { + // alert(error) + } + clickbegin = false; + } + } + ) + ); + } + }; + + var prepareGroupButton2 = function(transformNodex, color, qu) { + var mesheses = null; + if (transformNodex.getClassName() == "TransformNode") { + mesheses = transformNodex.getChildMeshes(false); + } else { + mesheses = []; + mesheses.push(transformNodex); + } + + for (var i = 0; i < mesheses.length; i++) { + mesheses[i].actionManager = new BABYLON.ActionManager(scene); + var theScaling = mesheses[i].scaling; + /*if (true) { + try { + mesheses[i].actionManager.registerAction(new BABYLON.InterpolateValueAction(BABYLON.ActionManager.OnPointerOutTrigger, mesheses[i], "scaling", new BABYLON.Vector3(theScaling.x, theScaling.y, theScaling.z), 100)); + 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)); + + } catch (error) { + //alert(error) + } + }*/ + var clickbegin = false; + mesheses[i].actionManager.registerAction( + new BABYLON.ExecuteCodeAction( + { + trigger: BABYLON.ActionManager.OnPointerOverTrigger, + parameter: "" + }, + function() { + clickbegin = true; + if (true) { + if (oldtransformNodeOther != null) { + oldtransformNodeOther.removeBehavior(drag); + var mesheses2 = null; + if (oldtransformNodeOther.getClassName() == "TransformNode") { + mesheses2 = oldtransformNodeOther.getChildMeshes(false); + } else { + mesheses2 = []; + mesheses2.push(oldtransformNodeOther); + } + for (var i = 0; i < mesheses2.length; i++) { + try { + h2.removeMesh(mesheses2[i]); + } catch (error) { + // alert(error) + } + } + } + oldtransformNodeOther = transformNodex; + //transformNodex.addBehavior(drag); + var mesheses3 = null; + if (transformNodex.getClassName() == "TransformNode") { + mesheses3 = transformNodex.getChildMeshes(false); + } else { + mesheses3 = []; + mesheses3.push(transformNodex); + } + for (var i = 0; i < mesheses3.length; i++) { + try { + h2.addMesh(mesheses3[i], color); + } catch (error) { + // alert(error) + } + } + clickbegin = false; + } + } + ) + ); + mesheses[i].actionManager.registerAction( + new BABYLON.ExecuteCodeAction( + { + trigger: BABYLON.ActionManager.OnPickTrigger, + parameter: "" + }, + function() { + clickbegin = true; + if (true) { + try { + // quClick(transformNodex.name) + cameraClick(transformNodex); + } catch (error) { + // alert(error) + } + clickbegin = false; + } + } + ) + ); + } + }; + + var dag1 = scene.getTransformNodeByName("A区"); + var dag2 = scene.getTransformNodeByName("B区"); + var dag3 = scene.getTransformNodeByName("C区"); + + var colorddd = new BABYLON.Color3(51 / 255, 156 / 255, 1); + + prepareGroupButton(dag1, colorddd, "A区"); + prepareGroupButton(dag2, colorddd, "B区"); + prepareGroupButton(dag3, colorddd, "C区"); + + //绑功能点 + var cl = new BABYLON.Color3(0, 0, 1); + var jk01 = scene.getTransformNodeByName("camera01"); + jk01.nameID = "DAK_MO_CAM_001"; + prepareGroupButton2(jk01, cl); + + var jk02 = scene.getTransformNodeByName("camera02"); + jk02.nameID = "DAK_MO_CAM_002"; + prepareGroupButton2(jk02, cl); + + var jk03 = scene.getTransformNodeByName("camera03"); + jk03.nameID = "DAK_MO_CAM_003"; + prepareGroupButton2(jk03, cl); + + var jk04 = scene.getTransformNodeByName("camera04"); + jk04.nameID = "DAK_MO_CAM_004"; + prepareGroupButton2(jk04, cl); + + var jk05 = scene.getTransformNodeByName("camera05"); + jk05.nameID = "ZLS_MO_CAM_001"; + prepareGroupButton2(jk05, cl); + + var jk06 = scene.getTransformNodeByName("camera06"); + jk06.nameID = "ZLS_MO_CAM_002"; + prepareGroupButton2(jk06, cl); + + var jk07 = scene.getTransformNodeByName("camera07"); + jk07.nameID = "YLS_MO_CAM_001"; + prepareGroupButton2(jk07, cl); + + var jk08 = scene.getTransformNodeByName("camera08"); + jk08.nameID = "YLS_MO_CAM_002"; + prepareGroupButton2(jk08, cl); + + var jk09 = scene.getTransformNodeByName("camera09"); + jk09.nameID = "ZL_MO_CAM_001"; + prepareGroupButton2(jk09, cl); + //set camera to null + + var x = scene.getMeshByName("档案架01_primitive0"); + x.overlayColor = BABYLON.Color3.White(); + x.renderOverlay = true; + x = scene.getMeshByName("档案架02_primitive0"); + x.overlayColor = BABYLON.Color3.White(); + x.renderOverlay = true; + + x = scene.getMeshByName("档案架03_primitive0"); + x.overlayColor = BABYLON.Color3.White(); + x.renderOverlay = true; + + x = scene.getMeshByName("档案架04_primitive0"); + x.overlayColor = BABYLON.Color3.White(); + x.renderOverlay = true; + + x = scene.getMeshByName("档案架05_primitive0"); + x.overlayColor = BABYLON.Color3.White(); + x.renderOverlay = true; + + x = scene.getMeshByName("档案架06_primitive0"); + x.overlayColor = BABYLON.Color3.White(); + x.renderOverlay = true; + + x = scene.getMeshByName("档案架07_primitive0"); + x.overlayColor = BABYLON.Color3.White(); + x.renderOverlay = true; + + x = scene.getMeshByName("档案架08_primitive0"); + x.overlayColor = BABYLON.Color3.White(); + x.renderOverlay = true; + + x = scene.getMeshByName("档案架09_primitive0"); + x.overlayColor = BABYLON.Color3.White(); + x.renderOverlay = true; + + x = scene.getMeshByName("档案架10_primitive0"); + x.overlayColor = BABYLON.Color3.White(); + x.renderOverlay = true; + + x = scene.getMeshByName("前门01_primitive0"); + x.overlayColor = BABYLON.Color3.White(); + x.renderOverlay = true; + + x = scene.getMeshByName("后门01_primitive0"); + x.overlayColor = BABYLON.Color3.White(); + x.renderOverlay = true; + + // x = scene.getMeshByName("墙体"); + // x.overlayColor = BABYLON.Color3.White(); + // x.renderOverlay = true; + + // x = scene.getMeshByName("立方体_9_2"); + // x.overlayColor = BABYLON.Color3.White(); + // x.renderOverlay = true; + + // x = scene.getMeshByName("立方体_2_17.001_primitive0"); + // x.overlayColor = BABYLON.Color3.White(); + // x.renderOverlay = true; + + // x = scene.getMeshByName("立方体_2_17.001_primitive1"); + // x.overlayColor = BABYLON.Color3.White(); + // x.renderOverlay = true; + + // x = scene.getMeshByName("立方体_2_17.001_primitive2"); + // x.overlayColor = BABYLON.Color3.White(); + // x.renderOverlay = true; + + // x = scene.getMeshByName("立方体_2_17.001_primitive3"); + // x.overlayColor = BABYLON.Color3.White(); + // x.renderOverlay = true; + + // x = scene.getMeshByName("立方体_12_2_primitive0"); + // x.overlayColor = BABYLON.Color3.White(); + // x.renderOverlay = true; + + // x = scene.getMeshByName("立方体_12_2_primitive1"); + // x.overlayColor = BABYLON.Color3.White(); + // x.renderOverlay = true; + + //x = scene.getMeshByName("立方体_12_2_primitive2"); + //x.overlayColor = BABYLON.Color3.White() + //x.renderOverlay = true; + + // x = scene.getMeshByName("立方体_12_2_primitive3"); + // x.overlayColor = BABYLON.Color3.White(); + // x.renderOverlay = true; + + // x = scene.getMeshByName("立方体_12_2_primitive4"); + // x.overlayColor = BABYLON.Color3.White(); + // x.renderOverlay = true; + + x = scene.getMeshByName("立方体_5_2.001_LOD1_primitive0"); + x.overlayColor = BABYLON.Color3.White(); + x.renderOverlay = true; + + x = scene.getMeshByName("立方体_5_2.001_LOD1_primitive2"); + x.overlayColor = BABYLON.Color3.White(); + x.renderOverlay = true; + + x = scene.getMeshByName("立方体_1_12.001_LOD1"); + x.overlayColor = BABYLON.Color3.White(); + x.renderOverlay = true; + + var light = new BABYLON.HemisphericLight( + "HemiLight", + new BABYLON.Vector3(0, 1, 0), + scene + ); + light.intensity = 2; + light.diffuse = new BABYLON.Color3(0.92, 0.92, 0.92); + + var material1 = scene.getMaterialByName("材质.107"); + material1.albedoColor = new BABYLON.Color3(168 / 255, 167 / 255, 168 / 255); + material1.roughness = 1; + + //墙 + scene.getMaterialByName("cover_label.009").metallic = 0.36; + scene.getMaterialByName("cover_label.009").albedoColor = new BABYLON.Color3( + 1, + 1, + 1 + ); + scene.getMaterialByName("cover_label.010").metallic = 0.36; + scene.getMaterialByName("cover_label.010").albedoColor = new BABYLON.Color3( + 1, + 1, + 1 + ); + + //铁 + var material3 = scene.getMaterialByName("材质.116"); + material3.metallic = 0.9; + material3.roughness = 0; + material3.emissiveColor = new BABYLON.Color3(0.278, 0.278, 0.278); + scene.getMaterialByName("材质.102").metallic = 0.9; + scene.getMaterialByName("材质.102").roughness = 0.0; + scene.getMaterialByName("材质.102").emissiveColor = new BABYLON.Color3( + 0.278, + 0.278, + 0.278 + ); + + scene.getMaterialByName("材质.132").metallic = 0.9; + scene.getMaterialByName("材质.132").roughness = 0.0; + scene.getMaterialByName("材质.132").emissiveColor = new BABYLON.Color3( + 0.278, + 0.278, + 0.278 + ); + + scene.getMaterialByName("材质.122").metallic = 0.9; + scene.getMaterialByName("材质.122").roughness = 0.0; + scene.getMaterialByName("材质.122").emissiveColor = new BABYLON.Color3( + 0.278, + 0.278, + 0.278 + ); + + //地 + var material2 = scene.getMaterialByName("材质.106"); + material2.albedoColor = new BABYLON.Color3(0.8, 0.8, 0.8); + material2.metallic = 0.52; + material2.roughness = 0; + //material2.metallicReflectanceColor=new BABYLON.Color3(1,0,0); + //material2.emissiveColor=new BABYLON.Color3(0.8,0.8,0.8); + //地面扩大处理 + var meshground1 = scene.getMeshByName("地面A").clone(); + var meshground = scene.getMeshByName("地面A"); + meshground.isVisible = false; + + meshground1.position = new BABYLON.Vector3(-1.512, -0.069, 1.852); + meshground1.scaling = new BABYLON.Vector3(0.022, 0.013, 0.005); + meshground1.parent = scene.getMeshByName("__root__"); + + //scene.getMeshByName("地面.002").isVisible = false; + //scene.getMeshByName("地面.003").isVisible = false; + //scene.getMeshByName("地面").isVisible = false; + + scene.getMaterialByName("材质.127").metallic = 0.8; + scene.getMaterialByName("Wood-04.004").metallic = 0.8; + scene.getMaterialByName("Wood-04.004").metallic = 0.8; + + scene.getMaterialByName("Desk.002").metallic = 0.8; + scene.getMaterialByName("Desk.002").roughness = 0.72; + scene.getMaterialByName("Desk.003").metallic = 0.8; + scene.getMaterialByName("Desk.003").roughness = 0.72; + scene.getMaterialByName("Desk.004").metallic = 0.8; + scene.getMaterialByName("Desk.004").roughness = 0.72; + + scene.getMaterialByName("Desk.007").metallic = 0.8; + scene.getMaterialByName("Desk.007").roughness = 0.72; + scene.getMaterialByName("Desk.008").metallic = 0.8; + scene.getMaterialByName("Desk.008").roughness = 0.72; + scene.getMaterialByName("Desk.009").metallic = 0.8; + scene.getMaterialByName("Desk.009").roughness = 0.72; + + scene.getMaterialByName("Desk.019").metallic = 0.8; + scene.getMaterialByName("Desk.019").roughness = 0.72; + scene.getMaterialByName("Desk.020").metallic = 0.8; + scene.getMaterialByName("Desk.020").roughness = 0.72; + scene.getMaterialByName("Desk.021").metallic = 0.8; + scene.getMaterialByName("Desk.021").roughness = 0.72; + + scene.getMaterialByName("Desk.022").metallic = 0.8; + scene.getMaterialByName("Desk.022").roughness = 0.72; + scene.getMaterialByName("Desk.023").metallic = 0.8; + scene.getMaterialByName("Desk.023").roughness = 0.72; + scene.getMaterialByName("Desk.024").metallic = 0.8; + scene.getMaterialByName("Desk.024").roughness = 0.72; + + scene.getMeshByName("档案架01_primitive3").material = scene.getMaterialByName("10.002"); + scene.getMeshByName("档案架02_primitive4").material = scene.getMaterialByName("09.002"); + scene.getMeshByName("档案架03_primitive4").material = scene.getMaterialByName("08.002"); + scene.getMeshByName("档案架04_primitive4").material = scene.getMaterialByName("07.002"); + scene.getMeshByName("档案架05_primitive4").material = scene.getMaterialByName("06.002"); + scene.getMeshByName("档案架06_primitive4").material = scene.getMaterialByName("05.002"); + scene.getMeshByName("档案架07_primitive4").material = scene.getMaterialByName("04.002"); + scene.getMeshByName("档案架08_primitive4").material = scene.getMaterialByName("03.002"); + scene.getMeshByName("档案架09_primitive4").material = scene.getMaterialByName("02.002"); + scene.getMeshByName("档案架10_primitive3").material = scene.getMaterialByName("01.002"); + + // 还原到10列,注释掉下面代码 + // scene.getTransformNodeByName("档案柜01").setEnabled(false); + // scene.getTransformNodeByName("档案柜02").setEnabled(false); + // var v1 = scene.getMeshByName("钢轨01"); + // v1.position = new BABYLON.Vector3(v1.position.x,60.0,v1.position.z); + // v1.scaling = new BABYLON.Vector3(1,0.9,1); + + var v2 = scene.getTransformNodeByName("后门01"); + v2.setParent( scene.getTransformNodeByName("档案柜03"),true); + v2.position = new BABYLON.Vector3(v2.position.x,-122.479,v2.position.z); + + // 墙体添加透明度 + scene.getMaterialByName("cover_label.010").alpha = 0.7; + scene.getMaterialByName("cover_label.010").transparencyMode=2; //ALPHABLEND + +}; + +// createScene function that creates and return the scene +var createScene = function() { + engine.displayLoadingUI(); + // create a basic BJS Scene object + var scene = new BABYLON.Scene(engine); + // scene.debugLayer.show(); + var camera = new BABYLON.ArcRotateCamera( + "Camera", + 0, + 0, + 5, + new BABYLON.Vector3(0, -1, 0), + scene + ); + camera.setTarget(new BABYLON.Vector3(0, 2, 0)); + camera.attachControl(canvas, true); + camera.lowerRadiusLimit = 2.0; // 这里是最大的位置,值越大,物体越小 + camera.upperRadiusLimit = 40; + camera.radius = 15.998; + camera.alpha = (Math.PI * -248.8) / 180; + camera.beta = (Math.PI * 66) / 180; + camera.inertia = 0.1; // 缩放的快慢 + camera.useAutoRotationBehavior = true; // 自动旋转 + + camera.panningDistanceLimit = 2; //平移半径 + camera.panningInertia = 0; + camera.autoTransitionRange = 1; + camera.pinchToPanMaxDistance = 0.1; + camera.pinchDeltaPercentage = 0.001; + camera.useAutoRotationBehavior = false; + + scene.activeCamera = camera; + scene.activeCamera.useInputToRestoreState = true; + var camera1_status = scene.activeCamera.storeState(); + // 改变场景背景颜色 - 背景颜色opacity值设为0,达到透明背景的效果 + scene.clearColor = new BABYLON.Color4(0, 0, 0, 0); + var assetsManager = new BABYLON.AssetsManager(scene); + var meshTask = assetsManager.addMeshTask( + "skull task", + "", + "asset/", + "total2.glb" + ); + + meshTask.onSuccess = function(task) { + task.loadedMeshes[0].scaling = new BABYLON.Vector3(0.2, 0.2, -0.2); + task.loadedMeshes[0].position = new BABYLON.Vector3(1.3, 2, 0); + }; + meshTask.onError = function(task, message, exception) { + console.log(message, exception); + }; + + var meshTask_camera = assetsManager.addMeshTask( + "skull task", + "", + "asset/", + "TotalCamera.glb" + ); + meshTask_camera.onSuccess = function(task) { + task.loadedMeshes[0].name = "cameras"; + task.loadedMeshes[0].scaling = new BABYLON.Vector3(0.2, 0.2, -0.2); + task.loadedMeshes[0].position = new BABYLON.Vector3(1.3, 2, 0); + }; + meshTask_camera.onError = function(task, message, exception) { + console.log(message, exception); + }; + + var hdrTexture = new BABYLON.CubeTexture.CreateFromPrefilteredData( + "textures/environmentSpecular.env", + scene + ); + scene.environmentTexture = hdrTexture; + var spriteManagerPlayer = new BABYLON.SpriteManager( + "playerManager", + "./img/bl9.png", + 10, + { + width: 100, + height: 100 + }, + scene + ); + //spriteManagerPlayer.renderingGroupId = 2; + spriteManagerPlayer.isPickable = true; + + scene.onPointerDown = function(evt) { + var pickResult = scene.pickSprite(this.pointerX, this.pointerY); + var pick = scene.pick(scene.pointerX, scene.pointerY); + console.log(pick.pickedPoint); + if (pickResult.pickedSprite != null) { + if (pickResult.hit) { + alert(pickResult.pickedSprite.name); + } + } + }; + + // renderCanvas.style.backgroundImage = 'url("./textures/' + '4' + '.jpg")'; + assetsManager.load(); + + drag = new BABYLON.PointerDragBehavior({ + dragPlaneNormal: new BABYLON.Vector3(0, 0, 1) + }); + //drag.useObjectOrienationForDragging = false; + + drag.validateDrag = targetPosition => { + console.log(targetPosition); + if (targetPosition.x > 10.5 || targetPosition.x < -10.5) { + return false; + } + if (targetPosition.z > 10.5 || targetPosition.z < -10.5) { + return false; + } + if (oldtransformNodex != null) { + return true; + } + }; + drag.onDragEndObservable.add(event => { + console.log("dragEnd"); + //console.log(event); + //console.log(line03_position) + }); + + //GUI + h1 = new BABYLON.HighlightLayer("hl1", scene); + h2 = new BABYLON.HighlightLayer("hl2", scene); + h3 = new BABYLON.HighlightLayer("hl2", scene); + var step = 0.1; + var currentx = 1; + + var step2 = 0.1; + var currentx2 = 0.1; + h1.blurHorizontalSize = 0.1; + var showx = 0; + var showx2 = 2; + scene.registerAfterRender(() => { + h1.blurHorizontalSize = h1.blurVerticalSize + currentx; + var nodealert = scene.getTransformNodeByName("camera01"); + if (nodealert != null) { + var mesheses3 = null; + if (nodealert.getClassName() == "TransformNode") { + mesheses3 = nodealert.getChildMeshes(false); + } else { + mesheses3 = []; + mesheses3.push(nodealert); + } + for (var i = 0; i < mesheses3.length; i++) { + try { + if (nodealert.baojing == true) { + h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0)); + } else { + h3.removeMesh(mesheses3[i]); + } + } catch (error) { + // alert(error) + } + } + } + + var nodealert = scene.getTransformNodeByName("camera02"); + if (nodealert != null) { + var mesheses3 = null; + if (nodealert.getClassName() == "TransformNode") { + mesheses3 = nodealert.getChildMeshes(false); + } else { + mesheses3 = []; + mesheses3.push(nodealert); + } + for (var i = 0; i < mesheses3.length; i++) { + try { + if (nodealert.baojing == true) { + h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0)); + } else { + h3.removeMesh(mesheses3[i]); + } + } catch (error) { + // alert(error) + } + } + } + + var nodealert = scene.getTransformNodeByName("camera03"); + if (nodealert != null) { + var mesheses3 = null; + if (nodealert.getClassName() == "TransformNode") { + mesheses3 = nodealert.getChildMeshes(false); + } else { + mesheses3 = []; + mesheses3.push(nodealert); + } + for (var i = 0; i < mesheses3.length; i++) { + try { + if (nodealert.baojing == true) { + h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0)); + } else { + h3.removeMesh(mesheses3[i]); + } + } catch (error) { + // alert(error) + } + } + } + + var nodealert = scene.getTransformNodeByName("camera04"); + if (nodealert != null) { + var mesheses3 = null; + if (nodealert.getClassName() == "TransformNode") { + mesheses3 = nodealert.getChildMeshes(false); + } else { + mesheses3 = []; + mesheses3.push(nodealert); + } + for (var i = 0; i < mesheses3.length; i++) { + try { + if (nodealert.baojing == true) { + h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0)); + } else { + h3.removeMesh(mesheses3[i]); + } + } catch (error) { + // alert(error) + } + } + } + + var nodealert = scene.getTransformNodeByName("camera05"); + if (nodealert != null) { + var mesheses3 = null; + if (nodealert.getClassName() == "TransformNode") { + mesheses3 = nodealert.getChildMeshes(false); + } else { + mesheses3 = []; + mesheses3.push(nodealert); + } + for (var i = 0; i < mesheses3.length; i++) { + try { + if (nodealert.baojing == true) { + h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0)); + } else { + h3.removeMesh(mesheses3[i]); + } + } catch (error) { + // alert(error) + } + } + } + + var nodealert = scene.getTransformNodeByName("camera06"); + if (nodealert != null) { + var mesheses3 = null; + if (nodealert.getClassName() == "TransformNode") { + mesheses3 = nodealert.getChildMeshes(false); + } else { + mesheses3 = []; + mesheses3.push(nodealert); + } + for (var i = 0; i < mesheses3.length; i++) { + try { + if (nodealert.baojing == true) { + h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0)); + } else { + h3.removeMesh(mesheses3[i]); + } + } catch (error) { + // alert(error) + } + } + } + + var nodealert = scene.getTransformNodeByName("camera07"); + if (nodealert != null) { + var mesheses3 = null; + if (nodealert.getClassName() == "TransformNode") { + mesheses3 = nodealert.getChildMeshes(false); + } else { + mesheses3 = []; + mesheses3.push(nodealert); + } + for (var i = 0; i < mesheses3.length; i++) { + try { + if (nodealert.baojing == true) { + h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0)); + } else { + h3.removeMesh(mesheses3[i]); + } + } catch (error) { + // alert(error) + } + } + } + + var nodealert = scene.getTransformNodeByName("camera08"); + if (nodealert != null) { + var mesheses3 = null; + if (nodealert.getClassName() == "TransformNode") { + mesheses3 = nodealert.getChildMeshes(false); + } else { + mesheses3 = []; + mesheses3.push(nodealert); + } + for (var i = 0; i < mesheses3.length; i++) { + try { + if (nodealert.baojing == true) { + h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0)); + } else { + h3.removeMesh(mesheses3[i]); + } + } catch (error) { + // alert(error) + } + } + } + + var nodealert = scene.getTransformNodeByName("camera09"); + if (nodealert != null) { + var mesheses3 = null; + if (nodealert.getClassName() == "TransformNode") { + mesheses3 = nodealert.getChildMeshes(false); + } else { + mesheses3 = []; + mesheses3.push(nodealert); + } + for (var i = 0; i < mesheses3.length; i++) { + try { + if (nodealert.baojing == true) { + h3.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0)); + } else { + h3.removeMesh(mesheses3[i]); + } + } catch (error) { + // alert(error) + } + } + } + if (currentx > 0.5) { + step *= -1; + } + if (currentx < 0) { + step *= -1; + } + currentx += step; + if (currentx2 > 5) { + step2 *= -1; + } + if (currentx2 < 0) { + step2 *= -1; + } + currentx2 += step2; + + if (dynamicTexture != null && show == 0) { + var textx = showx; + var font_size = 48; + var font = "bold " + font_size + "px Arial"; + dynamicTexture.drawText( + textx, + null, + null, + font, + "#FF0000", + "#ffffff", + true + ); + showx++; + show = 50; + } + + if (dynamicTexture2 != null && showdd == 0) { + var textx = showx2; + var font_size = 48; + var font = "bold " + font_size + "px Arial"; + dynamicTexture2.drawText( + textx, + null, + null, + font, + "#0000FF", + "#ffffff", + true + ); + showx2++; + showdd = 50; + if (showx2 == 10) { + showx2 = 0; + } + } + show--; + showdd--; + }); + return scene; +}; + +var canvas = document.getElementById("renderCanvas"); +// load the 3D engine +var engine = new BABYLON.Engine(canvas, true, { + stencil: true +}); + +// call the createScene function +var scene = createScene(); +scene.autoClear = true; +scene.imageProcessingConfiguration.exposure = 1; +scene.imageProcessingConfiguration.contrast = 1; +scene.environmentIntensity = 0.4; +engine.runRenderLoop(function() { + scene.render(); +}); + +window.addEventListener("resize", function() { + engine.resize(); +}); + +//功能:点区以后跳转到新页 +//quName :转过来的区号 +// function quClick(quName){ +// if(quName=="A区"){ +// window.location.href = "http://192.168.99.72:8099/83/webA/index.html"; +// } +// if(quName=="B区"){ +// window.location.href = "http://192.168.99.72:8099/83/webB/index.html"; +// } +// if(quName=="C区"){ +// window.location.href = "http://192.168.99.72:8099/83/webC/index.html"; +// } +// } + +function quClick(name) { + window.parent.postMessage( + { + data: name + }, + "*" + ); +} + +//功能:点camera后事件 +// function cameraClick(camera){ +// alert(camera.nameID); +// } + +function cameraClick(camera) { + window.parent.postMessage( + { + data: camera.nameID + }, + "*" + ); +} + +function HashMap() { + //定义长度 + var length = 0; + //创建一个对象 + var obj = new Object(); + + //判断Map是否为空 + this.isEmpty = function() { + return length == 0; + }; + + //判断对象中是否包含给定Key + this.containsKey = function(key) { + return key in obj; + }; + + //判断对象中是否包含给定的Value + this.containsValue = function(value) { + for (var key in obj) { + if (obj[key] == value) { + return true; + } + } + return false; + }; + + //向map中添加数据 + this.put = function(key, value) { + if (!this.containsKey(key)) { + length++; + } + obj[key] = value; + }; + + //根据给定的key获取Value + this.get = function(key) { + return this.containsKey(key) ? obj[key] : null; + }; + + //根据给定的Key删除一个值 + this.remove = function(key) { + if (this.containsKey(key) && delete obj[key]) { + length--; + } + }; + + //获得Map中所有的value + this.values = function() { + var _values = new Array(); + for (var key in obj) { + _values.push(obj[key]); + } + return _values; + }; + + //获得Map中的所有key + this.keySet = function() { + var _keys = new Array(); + for (var key in obj) { + _keys.push(key); + } + return _keys; + }; + + //获得Map的长度 + this.size = function() { + return length; + }; + + //清空Map + this.clear = function() { + length = 0; + obj = new Object(); + }; +} + +var yangans = new HashMap(); +yangans.put("DAK_MO_CAM_001", "camera01"); +yangans.put("DAK_MO_CAM_002", "camera02"); +yangans.put("DAK_MO_CAM_003", "camera03"); +yangans.put("DAK_MO_CAM_004", "camera04"); +yangans.put("ZLS_MO_CAM_001", "camera05"); +yangans.put("ZLS_MO_CAM_002", "camera06"); +yangans.put("YLS_MO_CAM_001", "camera07"); +yangans.put("YLS_MO_CAM_002", "camera08"); +yangans.put("ZL_MO_CAM_001", "camera09"); + +//功能转入报警 +function Myalert(MathineID, baojing) { + var theName = yangans.get(MathineID); + if (theName == "camera01") { + scene.getTransformNodeByName("camera01").baojing = baojing; + } + if (theName == "camera02") { + scene.getTransformNodeByName("camera02").baojing = baojing; + } + if (theName == "camera03") { + scene.getTransformNodeByName("camera03").baojing = baojing; + } + if (theName == "camera04") { + scene.getTransformNodeByName("camera04").baojing = baojing; + } + if (theName == "camera05") { + scene.getTransformNodeByName("camera05").baojing = baojing; + } + if (theName == "camera06") { + scene.getTransformNodeByName("camera06").baojing = baojing; + } + if (theName == "camera07") { + scene.getTransformNodeByName("camera07").baojing = baojing; + } + if (theName == "camera08") { + scene.getTransformNodeByName("camera08").baojing = baojing; + } + if (theName == "camera09") { + scene.getTransformNodeByName("camera09").baojing = baojing; + } +} + +//报警 true:表示报警, false :表示不报警 +//Myalert("DAK_MO_OAO_001",true)