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
1090 lines
34 KiB
// 从这里开始
|
|
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 =
|
|
"<div class='oka'><div class='" +
|
|
thecss +
|
|
"'><image src='./logok.gif' class='jiazaiimg'/></div>";
|
|
|
|
// this._loadingDiv.innerHTML =
|
|
// "<div class='oka'><div class='" +
|
|
// thecss +
|
|
// "'><image src='./logok.gif' class='jiazaiimg'/></div><div class='" +
|
|
// thecss2 +
|
|
// "'>由 <image class='feitimg' src='./img/yxlogo.png'/> 阅行客 提供技术支持!</div></div>";
|
|
|
|
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)
|