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.
1762 lines
55 KiB
1762 lines
55 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 dynamicTexture3 = null;
|
|
var dynamicTexture4 = null;
|
|
var show = 50;
|
|
var showdd = 50;
|
|
var PointerOverYangan = null;
|
|
var deviceData = [];
|
|
|
|
BABYLON.DefaultLoadingScreen.prototype.displayLoadingUI = function() {
|
|
if (document.getElementById("customLoadingScreenDiv")) {
|
|
document.getElementById("customLoadingScreenDiv").style.display = "initial";
|
|
// 给vue页面传值,加载完成之前
|
|
parent.getIframeLoading("true")
|
|
|
|
return;
|
|
}
|
|
this._loadingDiv = document.createElement("div");
|
|
//this._loadingDiv.style.height = '1750px';
|
|
this._loadingDiv.id = "customLoadingScreenDiv";
|
|
|
|
thecss = "lohingifpc";
|
|
thecss2 = "zcpc";
|
|
|
|
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);
|
|
};
|
|
|
|
var moveTrans = function(move_transformNode) {
|
|
//alert(move_transformNode.name);
|
|
|
|
if (movesingle == false) {
|
|
movesingle = true;
|
|
var tempstr = move_transformNode.name.replace("档案柜", "");
|
|
var tempNum = parseInt(tempstr);
|
|
if (move_transformNode.movex == "false") {
|
|
for (var MoveNum = tempNum - 1; MoveNum >= 0; MoveNum--) {
|
|
var tempNode = notmoveGroup[MoveNum];
|
|
|
|
if (tempNode.movex == "false") {
|
|
// console.log(tempNode.name);
|
|
// console.log(tempNode.movex);
|
|
const frameRate = 10;
|
|
|
|
const xSlide = new BABYLON.Animation(
|
|
"xSlide",
|
|
"position.y",
|
|
frameRate,
|
|
BABYLON.Animation.ANIMATIONTYPE_FLOAT,
|
|
BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT
|
|
);
|
|
|
|
const keyFrames = [];
|
|
|
|
keyFrames.push({
|
|
frame: 0,
|
|
value: tempNode.position.y
|
|
});
|
|
|
|
keyFrames.push({
|
|
frame: frameRate,
|
|
value: tempNode.position.y - 653
|
|
});
|
|
|
|
xSlide.setKeys(keyFrames);
|
|
|
|
tempNode.animations.push(xSlide);
|
|
|
|
scene.beginAnimation(tempNode, 0, frameRate, false);
|
|
|
|
//------------------------------------------------------------------------------
|
|
thesprite = scene.spriteManagers[0].sprites[MoveNum];
|
|
|
|
const frameRate1 = 10;
|
|
|
|
var xSlide1 = new BABYLON.Animation(
|
|
"xSlide1",
|
|
"position.z",
|
|
frameRate1,
|
|
BABYLON.Animation.ANIMATIONTYPE_FLOAT,
|
|
BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT
|
|
);
|
|
|
|
var keyFrames1 = [];
|
|
|
|
keyFrames1.push({
|
|
frame: 0,
|
|
value: thesprite.position.z
|
|
});
|
|
|
|
keyFrames1.push({
|
|
frame: frameRate1,
|
|
value: thesprite.position.z - 1.7
|
|
});
|
|
|
|
xSlide1.setKeys(keyFrames1);
|
|
|
|
thesprite.animations.push(xSlide1);
|
|
|
|
scene.beginAnimation(thesprite, 0, frameRate1, false);
|
|
|
|
tempNode.movex = "true";
|
|
}
|
|
}
|
|
} else {
|
|
for (var MoveNum = tempNum - 1; MoveNum <= 9; MoveNum++) {
|
|
var tempNode = notmoveGroup[MoveNum];
|
|
if (tempNode.movex == "true") {
|
|
const frameRate = 10;
|
|
|
|
const xSlide = new BABYLON.Animation(
|
|
"xSlide",
|
|
"position.y",
|
|
frameRate,
|
|
BABYLON.Animation.ANIMATIONTYPE_FLOAT,
|
|
BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT
|
|
);
|
|
|
|
const keyFrames = [];
|
|
|
|
keyFrames.push({
|
|
frame: 0,
|
|
value: tempNode.position.y
|
|
});
|
|
|
|
keyFrames.push({
|
|
frame: frameRate,
|
|
value: tempNode.position.y + 653
|
|
});
|
|
|
|
xSlide.setKeys(keyFrames);
|
|
|
|
tempNode.animations.push(xSlide);
|
|
|
|
scene.beginAnimation(tempNode, 0, frameRate, false);
|
|
|
|
//------------------------------------------------------------------------------
|
|
thesprite = scene.spriteManagers[0].sprites[MoveNum];
|
|
|
|
const frameRate1 = 10;
|
|
|
|
var xSlide1 = new BABYLON.Animation(
|
|
"xSlide1",
|
|
"position.z",
|
|
frameRate1,
|
|
BABYLON.Animation.ANIMATIONTYPE_FLOAT,
|
|
BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT
|
|
);
|
|
|
|
var keyFrames1 = [];
|
|
|
|
keyFrames1.push({
|
|
frame: 0,
|
|
value: thesprite.position.z
|
|
});
|
|
|
|
keyFrames1.push({
|
|
frame: frameRate1,
|
|
value: thesprite.position.z + 1.7
|
|
});
|
|
|
|
xSlide1.setKeys(keyFrames1);
|
|
|
|
thesprite.animations.push(xSlide1);
|
|
|
|
scene.beginAnimation(thesprite, 0, frameRate1, false);
|
|
|
|
tempNode.movex = "false";
|
|
}
|
|
}
|
|
}
|
|
|
|
setTimeout(function() {
|
|
movesingle = false;
|
|
}, 2000);
|
|
}
|
|
};
|
|
|
|
BABYLON.DefaultLoadingScreen.prototype.hideLoadingUI = function() {
|
|
show = 50;
|
|
document.getElementById("customLoadingScreenDiv").style.display = "none";
|
|
document.getElementById("customLoadingScreenDiv_first").style.display = "none";
|
|
document.title = "档案库";
|
|
|
|
|
|
//scene.getMaterialByName("材质.023").roughness = 0;
|
|
|
|
notmoveGroup = [
|
|
scene.getTransformNodeByName("档案柜01"),
|
|
scene.getTransformNodeByName("档案柜02"),
|
|
scene.getTransformNodeByName("档案柜03"),
|
|
scene.getTransformNodeByName("档案柜04"),
|
|
scene.getTransformNodeByName("档案柜05"),
|
|
scene.getTransformNodeByName("档案柜06"),
|
|
scene.getTransformNodeByName("档案柜07"),
|
|
scene.getTransformNodeByName("档案柜08"),
|
|
scene.getTransformNodeByName("档案柜09"),
|
|
scene.getTransformNodeByName("档案柜10")
|
|
];
|
|
|
|
notmoveGroup.forEach(function(item, index, arr) {
|
|
if (item.name == "档案柜10") {
|
|
item.movex = "NotMove"; //设置movex
|
|
} else {
|
|
item.movex = "false"; //设置movex
|
|
}
|
|
});
|
|
|
|
var prepareGroupButtonOther = function(transformNodex, color) {
|
|
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 {
|
|
// 初始化数据 温度/湿度
|
|
deviceData.forEach(item => {
|
|
if (item.id === transformNodex.nameID) {
|
|
transformNodex.wendu = item.wendu;
|
|
transformNodex.sidu = item.sidu;
|
|
transformNodex.baojing = item.alarmState;
|
|
}
|
|
});
|
|
//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.ExecuteCodeAction(
|
|
{
|
|
trigger: BABYLON.ActionManager.OnPointerOverTrigger,
|
|
parameter: ""
|
|
},
|
|
function() {
|
|
clickbegin = true;
|
|
if (true) {
|
|
try {
|
|
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 {
|
|
if (transformNodex.baojing == true) {
|
|
h2.addMesh(mesheses3[i], new BABYLON.Color3(1, 0, 0));
|
|
} else {
|
|
h2.addMesh(mesheses3[i], color);
|
|
}
|
|
} catch (error) {
|
|
// alert(error)
|
|
}
|
|
}
|
|
} catch (error) {
|
|
// alert(error)
|
|
}
|
|
clickbegin = false;
|
|
}
|
|
|
|
if (transformNodex.name.indexOf("yangan") >= 0) {
|
|
PointerOverYangan = transformNodex.name;
|
|
if (transformNodex.baojing == true) {
|
|
var location = transformNodex.absolutePosition;
|
|
var xd = scene.getMeshByName("tapred");
|
|
// x = x-0.6;; y = y+0.3 z=z+0.5
|
|
xd.position = new BABYLON.Vector3(
|
|
location.x - 0.6,
|
|
location.y + 0.9,
|
|
location.z + 0.5
|
|
);
|
|
|
|
var font_size = 36;
|
|
var font = "bold " + font_size + "px Arial";
|
|
dynamicTexture3.drawText(
|
|
transformNodex.wendu + "°C",
|
|
null,
|
|
null,
|
|
font,
|
|
"#FFFFFF",
|
|
"#000000",
|
|
true
|
|
);
|
|
dynamicTexture4.drawText(
|
|
transformNodex.sidu + "%",
|
|
null,
|
|
null,
|
|
font,
|
|
"#FFFFFF",
|
|
"#000000",
|
|
true
|
|
);
|
|
if(transformNodex.canshow == true){
|
|
xd.setEnabled(true);
|
|
}
|
|
} else {
|
|
var location = transformNodex.absolutePosition;
|
|
var xd = scene.getMeshByName("tapblue");
|
|
// x = x-0.6;; y = y+0.3 z=z+0.5
|
|
xd.position = new BABYLON.Vector3(
|
|
location.x - 0.6,
|
|
location.y + 0.9,
|
|
location.z + 0.5
|
|
);
|
|
|
|
var font_size = 36;
|
|
var font = "bold " + font_size + "px Arial";
|
|
dynamicTexture.drawText(
|
|
transformNodex.wendu + "°C",
|
|
null,
|
|
null,
|
|
font,
|
|
"#FFFFFF",
|
|
"#000000",
|
|
true
|
|
);
|
|
dynamicTexture2.drawText(
|
|
transformNodex.sidu + "%",
|
|
null,
|
|
null,
|
|
font,
|
|
"#FFFFFF",
|
|
"#000000",
|
|
true
|
|
);
|
|
|
|
if(transformNodex.canshow == true){
|
|
xd.setEnabled(true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
)
|
|
);
|
|
|
|
mesheses[i].actionManager.registerAction(
|
|
new BABYLON.ExecuteCodeAction(
|
|
{
|
|
trigger: BABYLON.ActionManager.OnPointerOutTrigger,
|
|
parameter: ""
|
|
},
|
|
function() {
|
|
var mesheses2 = null;
|
|
if (transformNodex.getClassName() == "TransformNode") {
|
|
mesheses2 = transformNodex.getChildMeshes(false);
|
|
} else {
|
|
mesheses2 = [];
|
|
mesheses2.push(transformNodex);
|
|
}
|
|
for (var i = 0; i < mesheses2.length; i++) {
|
|
try {
|
|
h2.removeMesh(mesheses2[i]);
|
|
} catch (error) {
|
|
// alert(error)
|
|
}
|
|
}
|
|
|
|
if (transformNodex.name.indexOf("yangan") >= 0) {
|
|
if (transformNodex.baojing == true) {
|
|
var location = transformNodex.absolutePosition;
|
|
var xd = scene.getMeshByName("tapred");
|
|
// x = x-0.6;; y = y+0.3 z=z+0.5
|
|
|
|
xd.setEnabled(false);
|
|
} else {
|
|
var location = transformNodex.absolutePosition;
|
|
var xd = scene.getMeshByName("tapblue");
|
|
// x = x-0.6;; y = y+0.3 z=z+0.5
|
|
|
|
xd.setEnabled(false);
|
|
}
|
|
}
|
|
}
|
|
)
|
|
);
|
|
|
|
//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.OnPickTrigger,
|
|
parameter: ""
|
|
},
|
|
function() {
|
|
cameraClick(transformNodex);
|
|
}
|
|
)
|
|
);
|
|
}
|
|
};
|
|
|
|
var prepareGroupButton = function(transformNodex, color) {
|
|
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.OnPickTrigger,
|
|
parameter: ""
|
|
},
|
|
function() {
|
|
clickbegin = true;
|
|
|
|
if (true) {
|
|
try {
|
|
if (oldtransformNodex != null) {
|
|
oldtransformNodex.removeBehavior(drag);
|
|
var mesheses2 = null;
|
|
if (oldtransformNodex.getClassName() == "TransformNode") {
|
|
mesheses2 = oldtransformNodex.getChildMeshes(false);
|
|
} else {
|
|
mesheses2 = [];
|
|
mesheses2.push(oldtransformNodex);
|
|
}
|
|
for (var i = 0; i < mesheses2.length; i++) {
|
|
try {
|
|
h1.removeMesh(mesheses2[i]);
|
|
} catch (error) {
|
|
// alert(error)
|
|
}
|
|
}
|
|
}
|
|
|
|
oldtransformNodex = 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 {
|
|
h1.addMesh(mesheses3[i], BABYLON.Color3.White());
|
|
} catch (error) {
|
|
// alert(error)
|
|
}
|
|
}
|
|
|
|
if (oldtransformNodex != null) {
|
|
if (transformNodex.name == oldtransformNodex.name) {
|
|
moveTrans(transformNodex);
|
|
}
|
|
}
|
|
} catch (error) {
|
|
// alert(error)
|
|
}
|
|
clickbegin = false;
|
|
}
|
|
}
|
|
)
|
|
);
|
|
}
|
|
};
|
|
|
|
var dag1 = scene.getTransformNodeByName("档案柜01");
|
|
var dag2 = scene.getTransformNodeByName("档案柜02");
|
|
var dag3 = scene.getTransformNodeByName("档案柜03");
|
|
var dag4 = scene.getTransformNodeByName("档案柜04");
|
|
var dag5 = scene.getTransformNodeByName("档案柜05");
|
|
var dag6 = scene.getTransformNodeByName("档案柜06");
|
|
var dag7 = scene.getTransformNodeByName("档案柜07");
|
|
var dag8 = scene.getTransformNodeByName("档案柜08");
|
|
var dag9 = scene.getTransformNodeByName("档案柜09");
|
|
var dag10 = scene.getTransformNodeByName("档案柜10");
|
|
|
|
prepareGroupButton(dag1, BABYLON.Color3(1, 1, 0));
|
|
prepareGroupButton(dag2, BABYLON.Color3(1, 1, 0));
|
|
prepareGroupButton(dag3, BABYLON.Color3(1, 1, 0));
|
|
prepareGroupButton(dag4, BABYLON.Color3(1, 1, 0));
|
|
prepareGroupButton(dag5, BABYLON.Color3(1, 1, 0));
|
|
prepareGroupButton(dag6, BABYLON.Color3(1, 1, 0));
|
|
prepareGroupButton(dag7, BABYLON.Color3(1, 1, 0));
|
|
prepareGroupButton(dag8, BABYLON.Color3(1, 1, 0));
|
|
prepareGroupButton(dag9, BABYLON.Color3(1, 1, 0));
|
|
prepareGroupButton(dag10, BABYLON.Color3(1, 1, 0));
|
|
|
|
//test
|
|
var camera01 = scene.getTransformNodeByName("camera01");
|
|
camera01.nameID = "DAK_MO_CAM_001";
|
|
var camera02 = scene.getTransformNodeByName("camera02");
|
|
camera02.nameID = "DAK_MO_CAM_002";
|
|
var camera03 = scene.getTransformNodeByName("camera03");
|
|
camera03.nameID = "DAK_MO_CAM_003";
|
|
var camera04 = scene.getTransformNodeByName("camera04");
|
|
camera04.nameID = "DAK_MO_CAM_004";
|
|
|
|
camera01.baojing = false;
|
|
camera02.baojing = false;
|
|
camera03.baojing = false;
|
|
camera04.baojing = false;
|
|
|
|
var yangan01 = scene.getTransformNodeByName("yangan01");
|
|
yangan01.nameID = "DAK_MO_OAO_001";
|
|
var yangan02 = scene.getTransformNodeByName("yangan02");
|
|
yangan02.nameID = "DAK_MO_OAO_002";
|
|
var yangan03 = scene.getTransformNodeByName("yangan03");
|
|
yangan03.nameID = "DAK_MO_OAO_003";
|
|
var yangan04 = scene.getTransformNodeByName("yangan04");
|
|
yangan04.nameID = "DAK_MO_OAO_004";
|
|
|
|
yangan01.baojing = false;
|
|
yangan02.baojing = false;
|
|
yangan03.baojing = false;
|
|
yangan04.baojing = false;
|
|
|
|
yangan01.canshow = true;
|
|
yangan02.canshow = true;
|
|
yangan03.canshow = true;
|
|
yangan04.canshow = true;
|
|
|
|
yangan01.wendu = 0;
|
|
yangan01.sidu = 0;
|
|
yangan02.wendu = 0;
|
|
yangan02.sidu = 0;
|
|
yangan03.wendu = 0;
|
|
yangan03.sidu = 0;
|
|
yangan04.wendu = 0;
|
|
yangan04.sidu = 0;
|
|
|
|
prepareGroupButtonOther(camera01, new BABYLON.Color3(0, 0, 1));
|
|
prepareGroupButtonOther(camera02, new BABYLON.Color3(0, 0, 1));
|
|
prepareGroupButtonOther(camera03, new BABYLON.Color3(0, 0, 1));
|
|
prepareGroupButtonOther(camera04, new BABYLON.Color3(0, 0, 1));
|
|
prepareGroupButtonOther(yangan01, new BABYLON.Color3(0, 0, 1));
|
|
prepareGroupButtonOther(yangan02, new BABYLON.Color3(0, 0, 1));
|
|
prepareGroupButtonOther(yangan03, new BABYLON.Color3(0, 0, 1));
|
|
prepareGroupButtonOther(yangan04, new BABYLON.Color3(0, 0, 1));
|
|
|
|
|
|
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;
|
|
|
|
//修改贴图
|
|
|
|
var bluexMat = new BABYLON.PBRMaterial("bluex", scene);
|
|
var tempddxa = new BABYLON.Texture("./asset/blue.png", scene);
|
|
|
|
var tempddxb = new BABYLON.Texture("./asset/blue.png", scene);
|
|
tempddxa.hasAlpha = true;
|
|
tempddxa.hasAlpha = true;
|
|
tempddxa.uAng = (180 * Math.PI) / 180;
|
|
tempddxb.uAng = (180 * Math.PI) / 180;
|
|
|
|
bluexMat.useAlphaFromAlbedoTexture = true;
|
|
bluexMat.albedoTexture = tempddxa;
|
|
bluexMat.reflectionColor = new BABYLON.Color3(0, 0, 0);
|
|
bluexMat.lightmapTexture = tempddxb;
|
|
|
|
scene.getMeshByName("平面_1").material = bluexMat;
|
|
|
|
var redMat = new BABYLON.PBRMaterial("redMat", scene);
|
|
var tempddx2 = new BABYLON.Texture("./asset/red.png", scene);
|
|
var tempddx3 = new BABYLON.Texture("./asset/red.png", scene);
|
|
tempddx2.hasAlpha = true;
|
|
tempddx3.hasAlpha = true;
|
|
tempddx2.uAng = (180 * Math.PI) / 180;
|
|
tempddx3.uAng = (180 * Math.PI) / 180;
|
|
|
|
redMat.useAlphaFromAlbedoTexture = true;
|
|
redMat.reflectionColor = new BABYLON.Color3(0, 0, 0);
|
|
//redMat.emissiveTexture =tempddx2;
|
|
redMat.albedoTexture = tempddx2;
|
|
redMat.lightmapTexture = tempddx3;
|
|
|
|
scene.getMeshByName("平面_1_2").material = redMat;
|
|
|
|
//平面2
|
|
//Set font
|
|
var font_size = 48;
|
|
var font = "bold " + font_size + "px Arial";
|
|
|
|
//Set height for plane
|
|
var planeHeight = 3;
|
|
|
|
//Set height for dynamic texture
|
|
var DTHeight = 1.5 * font_size; //or set as wished
|
|
|
|
//Calcultae ratio
|
|
var ratio = planeHeight / DTHeight;
|
|
|
|
//Set text
|
|
var text = "10";
|
|
|
|
//Use a temporay dynamic texture to calculate the length of the text on the dynamic texture canvas
|
|
var temp = new BABYLON.DynamicTexture("DynamicTexture", 64, scene);
|
|
var tmpctx = temp.getContext();
|
|
tmpctx.font = font;
|
|
var DTWidth = tmpctx.measureText(text).width + 58;
|
|
|
|
//Calculate width the plane has to be
|
|
var planeWidth = DTWidth * ratio;
|
|
|
|
//Create dynamic texture and write the text
|
|
dynamicTexture = new BABYLON.DynamicTexture(
|
|
"DynamicTexture",
|
|
{ width: DTWidth, height: DTHeight },
|
|
scene,
|
|
false
|
|
);
|
|
|
|
var mat = new BABYLON.StandardMaterial("mat", scene);
|
|
|
|
//var mat = new BABYLON.PBRMaterial("mat", scene);
|
|
//mat.albedoColor = new BABYLON.Color4(0.7968, 0.3685, 0.1105, 1);
|
|
mat.disableLighting = true;
|
|
|
|
mat.emissiveTexture = dynamicTexture;
|
|
// mat.alpha = 0.75;
|
|
// mat.alphaMode = 6;
|
|
// mat.diffuseColor = new BABYLON.Color3(0, 0, 0);
|
|
mat.reflectivityColor = new BABYLON.Color3(0, 0, 0);
|
|
|
|
dynamicTexture.uAng = (166.39 * Math.PI) / 180;
|
|
|
|
//Create plane and set dynamic texture as material
|
|
//var plane = BABYLON.MeshBuilder.CreatePlane("plane", {width:planeWidth, height:planeHeight}, scene);
|
|
var vxd = scene.getMeshByName("平面_2"); //blue
|
|
vxd.material = mat;
|
|
|
|
//平面3
|
|
|
|
dynamicTexture2 = new BABYLON.DynamicTexture(
|
|
"DynamicTexture2",
|
|
{ width: DTWidth, height: DTHeight },
|
|
scene,
|
|
false
|
|
);
|
|
|
|
//var mat = new BABYLON.StandardMaterial("mat", scene);
|
|
//mat.disableLighting = true;
|
|
|
|
var mat2 = new BABYLON.StandardMaterial("mat2", scene);
|
|
//mat.albedoColor = new BABYLON.Color4(0.7968, 0.3685, 0.1105, 1);
|
|
mat2.disableLighting = true;
|
|
//mat2.ambientTexture = dynamicTexture2;
|
|
mat2.emissiveTexture = dynamicTexture2;
|
|
// mat2.alpha = 0.75;
|
|
// mat2.alphaMode=6;
|
|
// mat2.diffuseColor = new BABYLON.Color3(0, 0, 0);
|
|
mat2.reflectivityColor = new BABYLON.Color3(0, 0, 0);
|
|
|
|
dynamicTexture2.uAng = (166.39 * Math.PI) / 180;
|
|
|
|
//Create plane and set dynamic texture as material
|
|
//var plane = BABYLON.MeshBuilder.CreatePlane("plane", {width:planeWidth, height:planeHeight}, scene);
|
|
var vxd2 = scene.getMeshByName("平面_3");
|
|
vxd2.material = mat2;
|
|
|
|
//-------------------------------------------------------------------------------------
|
|
dynamicTexture3 = new BABYLON.DynamicTexture(
|
|
"DynamicTexture3",
|
|
{ width: DTWidth, height: DTHeight },
|
|
scene,
|
|
false
|
|
);
|
|
|
|
//var mat = new BABYLON.StandardMaterial("mat", scene);
|
|
//mat.disableLighting = true;
|
|
|
|
var mat3 = new BABYLON.StandardMaterial("mat3", scene);
|
|
//mat.albedoColor = new BABYLON.Color4(0.7968, 0.3685, 0.1105, 1);
|
|
mat3.disableLighting = true;
|
|
//mat2.ambientTexture = dynamicTexture2;
|
|
mat3.emissiveTexture = dynamicTexture3;
|
|
// mat3.alpha = 0.75;
|
|
// mat3.alphaMode=6;
|
|
// mat3.diffuseColor = new BABYLON.Color3(0, 0, 0);
|
|
mat3.reflectivityColor = new BABYLON.Color3(0, 0, 0);
|
|
|
|
dynamicTexture3.uAng = (166.39 * Math.PI) / 180;
|
|
|
|
//Create plane and set dynamic texture as material
|
|
//var plane = BABYLON.MeshBuilder.CreatePlane("plane", {width:planeWidth, height:planeHeight}, scene);
|
|
|
|
var vxd3 = scene.getMeshByName("平面_2_2"); //blue
|
|
vxd3.material = mat3;
|
|
//-------------------------------------------------------------------------------------
|
|
dynamicTexture4 = new BABYLON.DynamicTexture(
|
|
"dynamicTexture4",
|
|
{ width: DTWidth, height: DTHeight },
|
|
scene,
|
|
false
|
|
);
|
|
|
|
//var mat = new BABYLON.StandardMaterial("mat", scene);
|
|
//mat.disableLighting = true;
|
|
|
|
var mat4 = new BABYLON.StandardMaterial("mat4", scene);
|
|
//mat.albedoColor = new BABYLON.Color4(0.7968, 0.3685, 0.1105, 1);
|
|
mat4.disableLighting = true;
|
|
//mat2.ambientTexture = dynamicTexture2;
|
|
mat4.emissiveTexture = dynamicTexture4;
|
|
// mat4.alpha = 0.75;
|
|
// mat4.alphaMode=6;
|
|
// mat4.diffuseColor = new BABYLON.Color3(0, 0, 0);
|
|
mat4.reflectivityColor = new BABYLON.Color3(0, 0, 0);
|
|
|
|
dynamicTexture4.uAng = (166.39 * Math.PI) / 180;
|
|
|
|
//Create plane and set dynamic texture as material
|
|
//var plane = BABYLON.MeshBuilder.CreatePlane("plane", {width:planeWidth, height:planeHeight}, scene);
|
|
|
|
var vxd4 = scene.getMeshByName("平面_3_2");
|
|
vxd4.material = mat4;
|
|
|
|
scene.getMeshByName("tapblue").setEnabled(false);
|
|
scene.getMeshByName("tapred").setEnabled(false);
|
|
|
|
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("材质.075");
|
|
material1.albedoColor = new BABYLON.Color3(160 / 255, 160 / 255, 160 / 255);
|
|
material1.roughness = 1;
|
|
|
|
//地
|
|
var material2 = scene.getMaterialByName("材质.074");
|
|
material2.metallic = 0.52;
|
|
material2.roughness = 0;
|
|
//material2.metallicReflectanceColor=new BABYLON.Color3(1,0,0);
|
|
material2.albedoColor = new BABYLON.Color3(0.8, 0.8, 0.8);
|
|
var material3 = scene.getMaterialByName("材质.084");
|
|
material3.emissiveColor = new BABYLON.Color3(0.278, 0.278, 0.278);
|
|
material3.metallic = 0.87;
|
|
material3.roughness = 0;
|
|
|
|
scene.getMeshByName("档案架10_primitive3").material = scene.getMaterialByName("01.004");
|
|
scene.getMeshByName("档案架09_primitive4").material = scene.getMaterialByName("02.004");
|
|
scene.getMeshByName("档案架08_primitive4").material = scene.getMaterialByName("03.004");
|
|
scene.getMeshByName("档案架07_primitive4").material = scene.getMaterialByName("04.004");
|
|
scene.getMeshByName("档案架06_primitive4").material = scene.getMaterialByName("05.004");
|
|
scene.getMeshByName("档案架06_primitive4").material = scene.getMaterialByName("06.004");
|
|
scene.getMeshByName("档案架04_primitive4").material = scene.getMaterialByName("07.004");
|
|
scene.getMeshByName("档案架03_primitive4").material = scene.getMaterialByName("08.004");
|
|
scene.getMeshByName("档案架02_primitive4").material = scene.getMaterialByName("09.004");
|
|
scene.getMeshByName("档案架01_primitive3").material = scene.getMaterialByName("10.004");
|
|
|
|
// 还原到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);
|
|
|
|
// player_balloon_js1.isVisible = false;
|
|
// player_balloon_js2.isVisible = false;
|
|
|
|
// 给vue页面传值,加载完成之后
|
|
parent.getIframeLoading("false")
|
|
};
|
|
|
|
// 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 = 10.48;
|
|
camera.alpha = (Math.PI * -211.4) / 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;
|
|
// 改变场景背景颜色 - 背景颜色opacity值设为0,达到透明背景的效果
|
|
scene.clearColor = new BABYLON.Color4(0, 0, 0, 0);
|
|
|
|
scene.activeCamera.useInputToRestoreState = true;
|
|
var camera1_status = scene.activeCamera.storeState();
|
|
|
|
var assetsManager = new BABYLON.AssetsManager(scene);
|
|
var meshTask = assetsManager.addMeshTask(
|
|
"skull task",
|
|
"",
|
|
"asset/",
|
|
"mjj.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(0.0, 2, 0);
|
|
};
|
|
meshTask.onError = function(task, message, exception) {
|
|
console.log(message, exception);
|
|
};
|
|
|
|
/*var meshTask_tap = assetsManager.addMeshTask("skull task", "", "asset/", "tapx.glb");
|
|
|
|
meshTask_tap.onSuccess = function (task) {
|
|
task.loadedMeshes[0].scaling = new BABYLON.Vector3(0.2, 0.2, -0.2);
|
|
task.loadedMeshes[0].position = new BABYLON.Vector3(-1.929, 4.029, 0.968);
|
|
//-2.5,3.77,1.45
|
|
// x = x-0.6;; y = y+0.3 z=z+0.5
|
|
task.loadedMeshes[0].rotation = new BABYLON.Vector3(0, 0, 0);
|
|
task.loadedMeshes[0].name = "test";
|
|
var vx = scene.getTransformNodeByName("空白_2_2");
|
|
|
|
vx.position = new BABYLON.Vector3(0, 0, 0);
|
|
vx.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);
|
|
}
|
|
meshTask_tap.onError = function (task, message, exception) {
|
|
console.log(message, exception);
|
|
}*/
|
|
|
|
var meshTask_tapblue = assetsManager.addMeshTask(
|
|
"skull task",
|
|
"",
|
|
"asset/",
|
|
"tapBlue.glb"
|
|
);
|
|
|
|
meshTask_tapblue.onSuccess = function(task) {
|
|
task.loadedMeshes[0].scaling = new BABYLON.Vector3(0.2, 0.2, -0.2);
|
|
task.loadedMeshes[0].position = new BABYLON.Vector3(0, 0, 0);
|
|
//-2.5,3.77,1.45
|
|
// x = x-0.6;; y = y+0.3 z=z+0.5
|
|
task.loadedMeshes[0].rotation = new BABYLON.Vector3(0, 0, 0);
|
|
task.loadedMeshes[0].name = "tapblue";
|
|
var vx = scene.getTransformNodeByName("蓝");
|
|
|
|
vx.position = new BABYLON.Vector3(0, 0, 0);
|
|
vx.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);
|
|
vx.scaling = new BABYLON.Vector3(0.015, 0.015, 0.015);
|
|
};
|
|
meshTask_tapblue.onError = function(task, message, exception) {
|
|
console.log(message, exception);
|
|
};
|
|
|
|
var meshTask_tapred = assetsManager.addMeshTask(
|
|
"skull task",
|
|
"",
|
|
"asset/",
|
|
"tapRed.glb"
|
|
);
|
|
|
|
meshTask_tapred.onSuccess = function(task) {
|
|
task.loadedMeshes[0].scaling = new BABYLON.Vector3(0.2, 0.2, -0.2);
|
|
task.loadedMeshes[0].position = new BABYLON.Vector3(-1.929, 4.029, 0.968);
|
|
//-2.5,3.77,1.45
|
|
// x = x-0.6;; y = y+0.3 z=z+0.5
|
|
task.loadedMeshes[0].rotation = new BABYLON.Vector3(0, 0, 0);
|
|
task.loadedMeshes[0].name = "tapred";
|
|
var vx = scene.getTransformNodeByName("红");
|
|
|
|
vx.position = new BABYLON.Vector3(0, 0, 0);
|
|
vx.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);
|
|
vx.scaling = new BABYLON.Vector3(0.015, 0.015, 0.015);
|
|
};
|
|
meshTask_tapred.onError = function(task, message, exception) {
|
|
console.log(message, exception);
|
|
};
|
|
|
|
var hdrTexture = new BABYLON.CubeTexture.CreateFromPrefilteredData(
|
|
"textures/environmentSpecular.env",
|
|
scene
|
|
);
|
|
//var hdrTexture = new BABYLON.CubeTexture.CreateFromPrefilteredData("textures/environment2.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;
|
|
|
|
//1
|
|
player_balloon_js1 = new BABYLON.Sprite(
|
|
"player_balloon_js1",
|
|
spriteManagerPlayer
|
|
);
|
|
player_balloon_js1.size = 0.1;
|
|
player_balloon_js1.name = "10";
|
|
player_balloon_js1.nameID = "cabinet10";
|
|
player_balloon_js1.cellIndex = 0;
|
|
player_balloon_js1.position = new BABYLON.Vector3(-2.5, 3.5, -0.72);
|
|
player_balloon_js1.isPickable = true;
|
|
|
|
player_balloon_js1.width = 0.2;
|
|
player_balloon_js1.height = 0.2;
|
|
player_balloon_js1.playAnimation(0, 6, true, 200);
|
|
|
|
//2
|
|
player_balloon_js2 = new BABYLON.Sprite(
|
|
"player_balloon_js2",
|
|
spriteManagerPlayer
|
|
);
|
|
player_balloon_js2.size = 0.1;
|
|
player_balloon_js2.name = "9";
|
|
player_balloon_js2.nameID = "cabinet09";
|
|
player_balloon_js2.cellIndex = 0;
|
|
player_balloon_js2.position = new BABYLON.Vector3(-2.5, 3.5, -0.38);
|
|
|
|
player_balloon_js2.isPickable = true;
|
|
|
|
player_balloon_js2.width = 0.2;
|
|
player_balloon_js2.height = 0.2;
|
|
player_balloon_js2.playAnimation(0, 6, true, 200);
|
|
|
|
//3
|
|
player_balloon_js3 = new BABYLON.Sprite(
|
|
"player_balloon_js3",
|
|
spriteManagerPlayer
|
|
);
|
|
player_balloon_js3.size = 0.1;
|
|
player_balloon_js3.name = "8";
|
|
player_balloon_js3.nameID = "cabinet08";
|
|
player_balloon_js3.cellIndex = 0;
|
|
player_balloon_js3.position = new BABYLON.Vector3(-2.5, 3.5, -0.03);
|
|
|
|
player_balloon_js3.isPickable = true;
|
|
|
|
player_balloon_js3.width = 0.2;
|
|
player_balloon_js3.height = 0.2;
|
|
player_balloon_js3.playAnimation(0, 6, true, 200);
|
|
|
|
//4
|
|
player_balloon_js4 = new BABYLON.Sprite(
|
|
"player_balloon_js4",
|
|
spriteManagerPlayer
|
|
);
|
|
player_balloon_js4.size = 0.1;
|
|
player_balloon_js4.name = "7";
|
|
player_balloon_js4.nameID = "cabinet07";
|
|
player_balloon_js4.cellIndex = 0;
|
|
player_balloon_js4.position = new BABYLON.Vector3(-2.5, 3.5, 0.3);
|
|
|
|
player_balloon_js4.isPickable = true;
|
|
|
|
player_balloon_js4.width = 0.2;
|
|
player_balloon_js4.height = 0.2;
|
|
player_balloon_js4.playAnimation(0, 6, true, 200);
|
|
|
|
//5
|
|
player_balloon_js5 = new BABYLON.Sprite(
|
|
"player_balloon_js5",
|
|
spriteManagerPlayer
|
|
);
|
|
player_balloon_js5.size = 0.1;
|
|
player_balloon_js5.name = "6";
|
|
player_balloon_js5.nameID = "cabinet06";
|
|
player_balloon_js5.cellIndex = 0;
|
|
player_balloon_js5.position = new BABYLON.Vector3(-2.5, 3.5, 0.64);
|
|
|
|
player_balloon_js5.isPickable = true;
|
|
|
|
player_balloon_js5.width = 0.2;
|
|
player_balloon_js5.height = 0.2;
|
|
player_balloon_js5.playAnimation(0, 6, true, 200);
|
|
|
|
//6
|
|
player_balloon_js6 = new BABYLON.Sprite(
|
|
"player_balloon_js6",
|
|
spriteManagerPlayer
|
|
);
|
|
player_balloon_js6.size = 0.1;
|
|
player_balloon_js6.name = "5";
|
|
player_balloon_js6.nameID = "cabinet05";
|
|
player_balloon_js6.cellIndex = 0;
|
|
player_balloon_js6.position = new BABYLON.Vector3(-2.5, 3.5, 0.98);
|
|
|
|
player_balloon_js6.isPickable = true;
|
|
|
|
player_balloon_js6.width = 0.2;
|
|
player_balloon_js6.height = 0.2;
|
|
player_balloon_js6.playAnimation(0, 6, true, 200);
|
|
|
|
//7
|
|
player_balloon_js7 = new BABYLON.Sprite(
|
|
"player_balloon_js7",
|
|
spriteManagerPlayer
|
|
);
|
|
player_balloon_js7.size = 0.1;
|
|
player_balloon_js7.name = "4";
|
|
player_balloon_js7.nameID = "cabinet04";
|
|
player_balloon_js7.cellIndex = 0;
|
|
player_balloon_js7.position = new BABYLON.Vector3(-2.5, 3.5, 1.32);
|
|
|
|
player_balloon_js7.isPickable = true;
|
|
|
|
player_balloon_js7.width = 0.2;
|
|
player_balloon_js7.height = 0.2;
|
|
player_balloon_js7.playAnimation(0, 6, true, 200);
|
|
|
|
//8
|
|
player_balloon_js8 = new BABYLON.Sprite(
|
|
"player_balloon_js8",
|
|
spriteManagerPlayer
|
|
);
|
|
player_balloon_js8.size = 0.1;
|
|
player_balloon_js8.name = "3";
|
|
player_balloon_js8.nameID = "cabinet03";
|
|
player_balloon_js8.cellIndex = 0;
|
|
player_balloon_js8.position = new BABYLON.Vector3(-2.5, 3.5, 1.66);
|
|
player_balloon_js8.isPickable = true;
|
|
|
|
player_balloon_js8.width = 0.2;
|
|
player_balloon_js8.height = 0.2;
|
|
player_balloon_js8.playAnimation(0, 6, true, 200);
|
|
|
|
//9
|
|
player_balloon_js9 = new BABYLON.Sprite(
|
|
"player_balloon_js",
|
|
spriteManagerPlayer
|
|
);
|
|
player_balloon_js9.size = 0.1;
|
|
player_balloon_js9.name = "2";
|
|
player_balloon_js9.nameID = "cabinet02";
|
|
player_balloon_js9.cellIndex = 0;
|
|
player_balloon_js9.position = new BABYLON.Vector3(-2.5, 3.5, 2);
|
|
//-2.3895861905112934, 3.402393519214794, z: 0.3225995832152506
|
|
player_balloon_js9.isPickable = true;
|
|
|
|
player_balloon_js9.width = 0.2;
|
|
player_balloon_js9.height = 0.2;
|
|
player_balloon_js9.playAnimation(0, 6, true, 200);
|
|
//10
|
|
player_balloon_js10 = new BABYLON.Sprite(
|
|
"player_balloon_js10",
|
|
spriteManagerPlayer
|
|
);
|
|
player_balloon_js10.size = 0.1;
|
|
player_balloon_js10.name = "1";
|
|
player_balloon_js10.nameID = "cabinet01";
|
|
player_balloon_js10.cellIndex = 0;
|
|
player_balloon_js10.position = new BABYLON.Vector3(-2.5, 3.5, 2.33);
|
|
player_balloon_js10.isPickable = true;
|
|
|
|
player_balloon_js10.width = 0.2;
|
|
player_balloon_js10.height = 0.2;
|
|
player_balloon_js10.playAnimation(0, 6, true, 200);
|
|
|
|
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) {
|
|
cabinetClick(pickResult.pickedSprite);
|
|
}
|
|
}
|
|
};
|
|
|
|
// 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("hl3", 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;
|
|
h2.blurHorizontalSize = h2.blurVerticalSize + currentx2;
|
|
h3.blurHorizontalSize = h3.blurVerticalSize + currentx2;
|
|
|
|
var nodealert = scene.getTransformNodeByName("yangan01");
|
|
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("yangan02");
|
|
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("yangan03");
|
|
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("yangan04");
|
|
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("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 a = scene.getMaterialByName("carpaint_baseRed");
|
|
if (a != null) {
|
|
if (a.albedoColor == b) {
|
|
b = new BABYLON.Color3(0, 1, 0);
|
|
a.albedoColor = b;
|
|
}
|
|
}
|
|
var v2 = scene.getMeshByName("tapblue");
|
|
if (v2 != null) {
|
|
v2.lookAt(camera.globalPosition, 0, 0, Math.PI);
|
|
}
|
|
|
|
var v3 = scene.getMeshByName("tapred");
|
|
if (v3 != null) {
|
|
v3.lookAt(camera.globalPosition, 0, 0, Math.PI);
|
|
}
|
|
|
|
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 && PointerOverYangan != null) {
|
|
var textx = scene.getTransformNodeByName(PointerOverYangan).wendu;
|
|
var font_size = 48;
|
|
var font = "bold " + font_size + "px Arial";
|
|
|
|
dynamicTexture.drawText(
|
|
textx + "°C",
|
|
null,
|
|
null,
|
|
font,
|
|
"#FFFFFF",
|
|
"#000000",
|
|
true
|
|
);
|
|
showx++;
|
|
show = 50;
|
|
}
|
|
|
|
if (dynamicTexture2 != null && PointerOverYangan != null) {
|
|
var textx = scene.getTransformNodeByName(PointerOverYangan).sidu;
|
|
var font_size = 50;
|
|
var font = "bold " + font_size + "px Arial";
|
|
|
|
dynamicTexture2.drawText(
|
|
textx + "%",
|
|
null,
|
|
null,
|
|
font,
|
|
"#FFFFFF",
|
|
"#000000",
|
|
true
|
|
);
|
|
}
|
|
|
|
if (dynamicTexture3 != null && PointerOverYangan != null) {
|
|
var textx = scene.getTransformNodeByName(PointerOverYangan).wendu;
|
|
var font_size = 48;
|
|
var font = "bold " + font_size + "px Arial";
|
|
|
|
dynamicTexture3.drawText(
|
|
textx + "°C",
|
|
null,
|
|
null,
|
|
font,
|
|
"#FFFFFF",
|
|
"#000000",
|
|
true
|
|
);
|
|
}
|
|
|
|
if (dynamicTexture4 != null && PointerOverYangan != null) {
|
|
var textx = scene.getTransformNodeByName(PointerOverYangan).sidu;
|
|
var font_size = 50;
|
|
var font = "bold " + font_size + "px Arial";
|
|
dynamicTexture4.drawText(
|
|
textx + "%",
|
|
null,
|
|
null,
|
|
font,
|
|
"#FFFFFF",
|
|
"#000000",
|
|
true
|
|
);
|
|
}
|
|
/*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();
|
|
});
|
|
|
|
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_OAO_001", "yangan01");
|
|
yangans.put("DAK_MO_OAO_002", "yangan02");
|
|
yangans.put("DAK_MO_OAO_003", "yangan03");
|
|
yangans.put("DAK_MO_OAO_004", "yangan04");
|
|
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");
|
|
|
|
//功能转入报警
|
|
function Myalert(MathineID, baojing) {
|
|
scene.getMeshByName("tapblue").setEnabled(false);
|
|
scene.getMeshByName("tapred").setEnabled(false);
|
|
var theName = yangans.get(MathineID);
|
|
|
|
if (theName == "yangan01") {
|
|
scene.getTransformNodeByName("yangan01").baojing = baojing;
|
|
}
|
|
if (theName == "yangan02") {
|
|
scene.getTransformNodeByName("yangan02").baojing = baojing;
|
|
}
|
|
if (theName == "yangan03") {
|
|
scene.getTransformNodeByName("yangan03").baojing = baojing;
|
|
}
|
|
if (theName == "yangan04") {
|
|
scene.getTransformNodeByName("yangan04").baojing = baojing;
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|
|
|
|
//报警 true:表示报警, false :表示不报警
|
|
//Myalert("DAK_MO_OAO_001",true)
|
|
|
|
//设置温湿度
|
|
function setAlertValue(MathineID, wendu, sidu) {
|
|
var theName = yangans.get(MathineID);
|
|
if (theName == "yangan01") {
|
|
scene.getTransformNodeByName("yangan01").wendu = wendu;
|
|
scene.getTransformNodeByName("yangan01").sidu = sidu;
|
|
}
|
|
if (theName == "yangan02") {
|
|
scene.getTransformNodeByName("yangan02").wendu = wendu;
|
|
scene.getTransformNodeByName("yangan02").sidu = sidu;
|
|
}
|
|
if (theName == "yangan03") {
|
|
scene.getTransformNodeByName("yangan03").wendu = wendu;
|
|
scene.getTransformNodeByName("yangan03").sidu = sidu;
|
|
}
|
|
if (theName == "yangan04") {
|
|
scene.getTransformNodeByName("yangan04").wendu = wendu;
|
|
scene.getTransformNodeByName("yangan04").sidu = sidu;
|
|
}
|
|
}
|
|
//设置温湿度: setAlertValue("DAK_MO_OAO_001",4,5)
|
|
|
|
// 设置是否显示
|
|
function setYangGanCanshow(MathineID, canshow){
|
|
var theName = yangans.get(MathineID);
|
|
if(theName.indexOf("yangan") >= 0){
|
|
scene.getTransformNodeByName(theName).canshow = canshow;
|
|
}
|
|
}
|
|
// setYangGanCanshow("DAK_MO_OAO_001",false)
|
|
|
|
|
|
//功能:档案柜标点点击
|
|
// function cabinetClick(cabinet) {
|
|
// alert(cabinet.nameID);
|
|
// }
|
|
function cabinetClick(cabinet) {
|
|
window.parent.postMessage(
|
|
{
|
|
data: cabinet.nameID
|
|
},
|
|
"*"
|
|
);
|
|
}
|
|
|
|
// 摄像头和温湿度点击
|
|
// function cameraClick(TheCamera) {
|
|
// alert(TheCamera.nameID);
|
|
// }
|
|
|
|
function cameraClick(TheCamera) {
|
|
window.parent.postMessage(
|
|
{
|
|
data: TheCamera.nameID
|
|
},
|
|
"*"
|
|
);
|
|
}
|
|
|
|
// 监测父页面传来得初始化得温度湿度值
|
|
window.addEventListener(
|
|
"message",
|
|
function(e) {
|
|
deviceData = e.data.data;
|
|
},
|
|
false
|
|
);
|