Browse Source

Merge branch 'dev' of https://git.1000my.com/common/base_daoshi_vue_ts into dev

pull/1/head
jiangx 3 years ago
parent
commit
e491c2d76c
  1. 60
      public/static/qm/MainMap_QM.js
  2. 12
      public/static/qm/three.js

60
public/static/qm/MainMap_QM.js

@ -1,4 +1,4 @@
var Map_QM, renderFrame = -1, pathCameraState, stats, stateTime, isJUZ = false, hasLine = false, dir = false, iot = true, shopTime, debug = false; //dir--自定义地图大小适应不同版本的地图大小
var Map_QM, renderFrame = -1, pathCameraState, stats, stateTime, isJUZ = false, hasLine = false, dir = false, iot = false, shopTime, debug = false; //dir--自定义地图大小适应不同版本的地图大小
//basePath 基础路径 graphPath最佳路径 ftPath 扶梯路径 dtPath 电梯路径 //basePath 基础路径 graphPath最佳路径 ftPath 扶梯路径 dtPath 电梯路径
var typeObj = [{ ft: 0, type: 0, code: 'ft', name: '扶梯' }, { upft: 1, type: 1, code: 'upft', name: '上扶梯' }, { downft: 2, type: 2, code: 'downft', name: '下扶梯' }, { mys: 3, type: 3, code: 'mys', name: '母婴室' }, { xsj: 4, type: 4, code: 'xsj', name: '洗手间' }, var typeObj = [{ ft: 0, type: 0, code: 'ft', name: '扶梯' }, { upft: 1, type: 1, code: 'upft', name: '上扶梯' }, { downft: 2, type: 2, code: 'downft', name: '下扶梯' }, { mys: 3, type: 3, code: 'mys', name: '母婴室' }, { xsj: 4, type: 4, code: 'xsj', name: '洗手间' },
@ -843,7 +843,7 @@ QMUtil = function () {
} else { } else {
//不是横线时 根据斜率计算点位 //不是横线时 根据斜率计算点位
x = point.x + 5; x = point.x + 5;
y = parseInt(gradient * (x - point.x) + point.y);
y = gradient * (x - point.x) + point.y;
} }
return Map_QM.util.pointXY(point, new Map_QM.util.Point(x, y), wallWidth / 2); return Map_QM.util.pointXY(point, new Map_QM.util.Point(x, y), wallWidth / 2);
@ -866,8 +866,8 @@ QMUtil = function () {
let x1 = (-B + Math.sqrt(Math.pow(B, 2) - 4 * A * C)) / (2 * A); let x1 = (-B + Math.sqrt(Math.pow(B, 2) - 4 * A * C)) / (2 * A);
let x2 = (-B - Math.sqrt(Math.pow(B, 2) - 4 * A * C)) / (2 * A); let x2 = (-B - Math.sqrt(Math.pow(B, 2) - 4 * A * C)) / (2 * A);
result.push(new Map_QM.util.Point(parseInt(x1), parseInt(k * x1 + b)));
result.push(new Map_QM.util.Point(parseInt(x2), parseInt(k * x2 + b)));
result.push(new Map_QM.util.Point(x1, k * x1 + b));
result.push(new Map_QM.util.Point(x2, k * x2 + b));
return result; return result;
} }
//计算两条直线的相交点 //计算两条直线的相交点
@ -1226,7 +1226,6 @@ MainMap_QM = function (callBack, options) {
if (document.getElementById('moveFloorBG')) { if (document.getElementById('moveFloorBG')) {
this.moveFloorbg = new THREE.CSS2DObject(document.getElementById('moveFloorBG')); this.moveFloorbg = new THREE.CSS2DObject(document.getElementById('moveFloorBG'));
this.scene.add(this.moveFloorbg);
} }
this.man_3d; this.man_3d;
this.man_2d; this.man_2d;
@ -1389,14 +1388,14 @@ MainMap_QM.prototype = {
initOptions: function (options) { initOptions: function (options) {
//初始化参数 //初始化参数
if (this.util.allMap[this.util.selectBuild].playSpeed) { if (this.util.allMap[this.util.selectBuild].playSpeed) {
this.util.options.mapScale = this.util.allMap[this.util.selectBuild].hasOwnProperty("scale") ? parseInt(this.util.allMap[this.util.selectBuild].scale) : 18;
this.util.options.playSpeed = this.util.allMap[this.util.selectBuild].hasOwnProperty("playSpeed") ? parseInt(this.util.allMap[this.util.selectBuild].playSpeed) : 6;
this.util.options.collision = this.util.allMap[this.util.selectBuild].hasOwnProperty("collision") ? this.util.allMap[this.util.selectBuild].collision : true;
this.util.options.navColor = this.util.allMap[this.util.selectBuild].hasOwnProperty("navColor") ? this.util.allMap[this.util.selectBuild].navColor : 0xEE6A50;
this.util.options.aRadius = this.util.allMap[this.util.selectBuild].hasOwnProperty("aRadius") ? parseInt(this.util.allMap[this.util.selectBuild].aRadius) : 2;
this.util.options.boxShop = this.util.allMap[this.util.selectBuild].hasOwnProperty("boxShop") ? this.util.allMap[this.util.selectBuild].boxShop.split(",") : [];
this.util.options.shopStyle = this.util.allMap[this.util.selectBuild].hasOwnProperty("shopStyle") ? this.util.allMap[this.util.selectBuild].shopStyle : "shopName";
this.util.options.modelIcon = this.util.allMap[this.util.selectBuild].hasOwnProperty("modelIcon") ? this.util.allMap[this.util.selectBuild].modelIcon : true;
this.util.allMap[this.util.selectBuild].hasOwnProperty("scale") && (this.util.options.mapScale = parseInt(this.util.allMap[this.util.selectBuild].scale));
this.util.allMap[this.util.selectBuild].hasOwnProperty("playSpeed") && (this.util.options.playSpeed = parseInt(this.util.allMap[this.util.selectBuild].playSpeed));
this.util.allMap[this.util.selectBuild].hasOwnProperty("collision") && (this.util.options.collision = this.util.allMap[this.util.selectBuild].collision);
this.util.allMap[this.util.selectBuild].hasOwnProperty("navColor") && (this.util.options.navColor = this.util.allMap[this.util.selectBuild].navColor);
this.util.allMap[this.util.selectBuild].hasOwnProperty("aRadius") && (this.util.options.aRadius = parseInt(this.util.allMap[this.util.selectBuild].aRadius));
this.util.allMap[this.util.selectBuild].hasOwnProperty("boxShop") && (this.util.options.boxShop = this.util.allMap[this.util.selectBuild].boxShop.split(","));
this.util.allMap[this.util.selectBuild].hasOwnProperty("shopStyle") && (this.util.options.shopStyle = this.util.allMap[this.util.selectBuild].shopStyle);
this.util.allMap[this.util.selectBuild].hasOwnProperty("modelIcon") && (this.util.options.modelIcon = this.util.allMap[this.util.selectBuild].modelIcon);
this.hemiLight.color = new THREE.Color(this.util.allMap[this.util.selectBuild].s_col || "#fffff0"); this.hemiLight.color = new THREE.Color(this.util.allMap[this.util.selectBuild].s_col || "#fffff0");
this.hemiLight.groundColor = new THREE.Color(this.util.allMap[this.util.selectBuild].g_col || "#ffffff"); this.hemiLight.groundColor = new THREE.Color(this.util.allMap[this.util.selectBuild].g_col || "#ffffff");
@ -1659,6 +1658,9 @@ MainMap_QM.prototype = {
this.buildObj = new THREE.Group(); this.buildObj = new THREE.Group();
this.sceneGap.add(this.buildObj); this.sceneGap.add(this.buildObj);
this.CSSObject = new THREE.Object3D(); this.CSSObject = new THREE.Object3D();
if(this.moveFloorbg){
this.CSSObject.add(this.moveFloorbg);
}
this.buildObj.add(this.CSSObject); this.buildObj.add(this.CSSObject);
this.buildObj.add(this.dtLineGroup); this.buildObj.add(this.dtLineGroup);
this.initGuide(); this.initGuide();
@ -2164,13 +2166,13 @@ MainMap_QM.prototype = {
for (let i = 0; i < Map_QM.mapArr[t].length; i++) { for (let i = 0; i < Map_QM.mapArr[t].length; i++) {
Map_QM.mapArr[t][i].allObj.visible = t == build ? true : false; Map_QM.mapArr[t][i].allObj.visible = t == build ? true : false;
Map_QM.mapArr[t][i].labelObj.traverse((obj) => { Map_QM.mapArr[t][i].labelObj.traverse((obj) => {
obj.visible = false;
obj.element && (obj.element.style.visibility = "hidden");
}); });
Map_QM.mapArr[t][i].tagObj.traverse((obj) => { Map_QM.mapArr[t][i].tagObj.traverse((obj) => {
obj.visible = false;
obj.element && (obj.element.style.visibility = "hidden");
}); });
Map_QM.mapArr[t][i].showTagObj.traverse((obj) => { Map_QM.mapArr[t][i].showTagObj.traverse((obj) => {
obj.visible = false;
obj.element && (obj.element.style.visibility = "hidden");
}); });
} }
} }
@ -2179,15 +2181,14 @@ MainMap_QM.prototype = {
} else { } else {
return; return;
} }
for (let i = 0; i < Map_QM.mapArr[build].length; i++) { for (let i = 0; i < Map_QM.mapArr[build].length; i++) {
if (i == fIndex || (i == midIndex && Map_QM.util.options.overlap) || (i == endIndex && Map_QM.util.options.overlap)) { if (i == fIndex || (i == midIndex && Map_QM.util.options.overlap) || (i == endIndex && Map_QM.util.options.overlap)) {
Map_QM.mapArr[build][i].allObj.visible = true; Map_QM.mapArr[build][i].allObj.visible = true;
Map_QM.mapArr[build][i].labelObj.traverse((obj) => { Map_QM.mapArr[build][i].labelObj.traverse((obj) => {
obj.visible = true;
obj.element && (obj.element.style.visibility = "visible")
}); });
Map_QM.mapArr[build][i].showTagObj.traverse((obj) => { Map_QM.mapArr[build][i].showTagObj.traverse((obj) => {
obj.visible = true;
obj.element && (obj.element.style.visibility = "visible");
}); });
} else { } else {
Map_QM.mapArr[build][i].allObj.visible = false; Map_QM.mapArr[build][i].allObj.visible = false;
@ -2519,7 +2520,7 @@ MainMap_QM.prototype = {
*/ */
changeStateShopPro: function (isShow = false) { changeStateShopPro: function (isShow = false) {
Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].tagObj.traverse((obj) => { Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].tagObj.traverse((obj) => {
obj.visible = isShow;
obj.element && (obj.element.style.visibility = isShow?"visible":"hidden");
}); });
}, },
/** /**
@ -2623,7 +2624,11 @@ MainMap_QM.prototype = {
drawToLine: function (startPoint, endPoint, dash = 50, color = 0x2269dd, ctrlPoint1 = null, ctrlPoint2 = null) { drawToLine: function (startPoint, endPoint, dash = 50, color = 0x2269dd, ctrlPoint1 = null, ctrlPoint2 = null) {
let curve = new THREE.CubicBezierCurve3(startPoint, ctrlPoint1, ctrlPoint2, endPoint); let curve = new THREE.CubicBezierCurve3(startPoint, ctrlPoint1, ctrlPoint2, endPoint);
let points = curve.getPoints(dash); let points = curve.getPoints(dash);
let flyLine = createFlyCurve(points, false);
let colorChange=[];
for(let i=1; i<7; i+=2){
colorChange.push(parseInt("0x"+color.slice(i,i+2))/255);
}
let flyLine = createFlyCurve(points,new THREE.Vector3( colorChange[0], colorChange[1], colorChange[2] ), false);
flyLine.userData.type = "toLine"; flyLine.userData.type = "toLine";
return flyLine; return flyLine;
}, },
@ -2818,7 +2823,7 @@ MainMap_QM.prototype = {
*/ */
startRender: function () { startRender: function () {
Map_QM.cancelRender(); Map_QM.cancelRender();
renderFrame = requestAnimationFrame(Map_QM.startRender);
let T = Map_QM.util._clock.getDelta(); let T = Map_QM.util._clock.getDelta();
Map_QM.util.timeObj.timeS = Map_QM.util.timeObj.timeS + T; Map_QM.util.timeObj.timeS = Map_QM.util.timeObj.timeS + T;
// requestAnimationFrame默认调用render函数60次,通过时间判断,降低renderer.render执行频率 // requestAnimationFrame默认调用render函数60次,通过时间判断,降低renderer.render执行频率
@ -2844,7 +2849,7 @@ MainMap_QM.prototype = {
Map_QM.labelRenderer.render(Map_QM.scene, Map_QM.camera); Map_QM.labelRenderer.render(Map_QM.scene, Map_QM.camera);
if(Map_QM.mapArr[Map_QM.util.selectBuild] && Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor]){ if(Map_QM.mapArr[Map_QM.util.selectBuild] && Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor]){
Map_QM.labelRenderer.renderObject( Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].labelObj, Map_QM.camera ); Map_QM.labelRenderer.renderObject( Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].labelObj, Map_QM.camera );
Map_QM.labelRenderer.renderObject( Map_QM.CSSObject, Map_QM.camera );
Map_QM.labelRenderer.renderObject( Map_QM.CSSObject, Map_QM.camera);
} }
for (let item of Map_QM.mixers) { for (let item of Map_QM.mixers) {
item.update(T); item.update(T);
@ -2859,6 +2864,7 @@ MainMap_QM.prototype = {
//timeS置0 //timeS置0
Map_QM.util.timeObj.timeS = 0; Map_QM.util.timeObj.timeS = 0;
} }
renderFrame = requestAnimationFrame(Map_QM.startRender);
}, },
/** /**
* @api {方法} cancelRender() 取消地图渲染 * @api {方法} cancelRender() 取消地图渲染
@ -3207,6 +3213,7 @@ MainMap_QM.prototype = {
Map_QM.labelRenderer.render(Map_QM.scene, Map_QM.camera); Map_QM.labelRenderer.render(Map_QM.scene, Map_QM.camera);
Map_QM.labelRenderer.renderObject( Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].labelObj, Map_QM.camera ); Map_QM.labelRenderer.renderObject( Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].labelObj, Map_QM.camera );
Map_QM.labelRenderer.zOrder( Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].labelObj ); Map_QM.labelRenderer.zOrder( Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].labelObj );
Map_QM.collLabel();
if (Map_QM.callBackLoadOver) { if (Map_QM.callBackLoadOver) {
let floorData = []; let floorData = [];
for (let i = 0; i < Map_QM.util.allMap.length; i++) { for (let i = 0; i < Map_QM.util.allMap.length; i++) {
@ -3230,7 +3237,7 @@ MainMap_QM.prototype = {
type: "changeFloorOver", type: "changeFloorOver",
data: Map_QM.selectFloor data: Map_QM.selectFloor
}); });
Map_QM.collLabel();
}, },
autoChangeEleAngle: function () { autoChangeEleAngle: function () {
@ -3293,6 +3300,7 @@ MainMap_QM.prototype = {
controlsChock: function () { controlsChock: function () {
Map_QM.autoChangeEleAngle(); Map_QM.autoChangeEleAngle();
Map_QM.collLabel(); Map_QM.collLabel();
/** /**
* @api {事件} MapAngleChange 地图的方向改变 * @api {事件} MapAngleChange 地图的方向改变
* @apiGroup 地图事件 * @apiGroup 地图事件
@ -3411,7 +3419,6 @@ MainMap_QM.prototype = {
if (!Map_QM || !Map_QM.util.options.collision) { if (!Map_QM || !Map_QM.util.options.collision) {
return; return;
} }
clearTimeout(Map_QM.util.timeObj.collTime); clearTimeout(Map_QM.util.timeObj.collTime);
Map_QM.util.timeObj.collTime = setTimeout(() => { Map_QM.util.timeObj.collTime = setTimeout(() => {
clearTimeout(Map_QM.util.timeObj.collTime); clearTimeout(Map_QM.util.timeObj.collTime);
@ -4708,7 +4715,6 @@ MainMap_QM.prototype = {
Map_QM.moveFloorbg.element.style.height = (floorArr.length * add) + "px"; Map_QM.moveFloorbg.element.style.height = (floorArr.length * add) + "px";
Map_QM.moveFloorbg.position.set(x0, y0, 80); Map_QM.moveFloorbg.position.set(x0, y0, 80);
Map_QM.moveFloorbg.applyMatrix4(Map_QM.mapArr[parseInt(Map_QM.forShopArr[Map_QM.util._indexPathFloor].build)][pathFloor].allObj.matrix); Map_QM.moveFloorbg.applyMatrix4(Map_QM.mapArr[parseInt(Map_QM.forShopArr[Map_QM.util._indexPathFloor].build)][pathFloor].allObj.matrix);
Map_QM.moveFloorbg.applyMatrix4(Map_QM.sceneGap.matrix);
let floorBox = document.getElementById('floorBox'); let floorBox = document.getElementById('floorBox');
while (floorBox.hasChildNodes()) { while (floorBox.hasChildNodes()) {
floorBox.removeChild(floorBox.firstChild); floorBox.removeChild(floorBox.firstChild);
@ -5198,7 +5204,7 @@ FloorMap_QM.prototype = {
obj.rotateY(Map_QM.util.modelArr[i].list[t].rot.y); obj.rotateY(Map_QM.util.modelArr[i].list[t].rot.y);
obj.rotateZ(Map_QM.util.modelArr[i].list[t].rot.z); obj.rotateZ(Map_QM.util.modelArr[i].list[t].rot.z);
sopce.allObj.add(obj); sopce.allObj.add(obj);
} showTagObj
}
}); });
} }
} }

12
public/static/qm/three.js

@ -39018,7 +39018,7 @@ var uniforms = {
u_time: { value: 0.0 } u_time: { value: 0.0 }
}; };
// 着色器设置 // 着色器设置
var vertexShader1 = `
const vertexShader = `
varying vec2 vUv; varying vec2 vUv;
attribute float percent; attribute float percent;
uniform float u_time; uniform float u_time;
@ -39037,7 +39037,7 @@ var vertexShader1 = `
gl_Position = projectionMatrix * mvPosition; gl_Position = projectionMatrix * mvPosition;
} }
` `
var fragmentShader1 = `
const fragmentShader = `
#ifdef GL_ES #ifdef GL_ES
precision mediump float; precision mediump float;
#endif #endif
@ -39050,10 +39050,10 @@ var fragmentShader1 = `
gl_FragColor = vec4(color,1); gl_FragColor = vec4(color,1);
} }
` `
function createFlyCurve(points, closed) {
function createFlyCurve(points, color, closed) {
var curve = new THREE.CatmullRomCurve3(points, closed); var curve = new THREE.CatmullRomCurve3(points, closed);
// 流光的颜色,三个数字分别代表rgb的值,不过注意,需要除以255 // 流光的颜色,三个数字分别代表rgb的值,不过注意,需要除以255
var color = new THREE.Vector3( 0.2235, 0.412, 1 );
var color = color || new THREE.Vector3( 0.2235, 0.412, 1 );
var flyLine = initFlyLine( curve, { var flyLine = initFlyLine( curve, {
speed: 0.5, speed: 0.5,
color: color, color: color,
@ -39093,8 +39093,8 @@ function initFlyLine( curve, matSetting, pointsNumber ) {
}; };
const lineMaterial = new THREE.ShaderMaterial( { const lineMaterial = new THREE.ShaderMaterial( {
uniforms: singleUniforms, uniforms: singleUniforms,
vertexShader: vertexShader1,
fragmentShader: fragmentShader1,
vertexShader: vertexShader,
fragmentShader: fragmentShader,
transparent: true transparent: true
} ); } );
return lineMaterial; return lineMaterial;

Loading…
Cancel
Save