|
@@ -439,6 +439,7 @@
|
|
|
let targetNewPosition = obj.targetNewPosition;
|
|
|
let oldUp = {x:0,y:1,z:0}; //俯视
|
|
|
let newUp = {x:0,y:1,z:0}; //正视
|
|
|
+ moveTip(cameraNewPosition);
|
|
|
console.warn("**moveActor***",JSON.stringify(cameraNewPosition),JSON.stringify(targetNewPosition))
|
|
|
tweenCamera(camera.position,controls.target,cameraNewPosition,targetNewPosition,oldUp,newUp,2000);
|
|
|
lon = 0;
|
|
@@ -479,20 +480,20 @@
|
|
|
let _actorTransform = actor.actorTransform.split(',');//旋转角度,取第三个值
|
|
|
let _hd = THREE.MathUtils.degToRad(parseInt(_actorTransform[2]));//将度转化为弧度。
|
|
|
let _hdY = THREE.MathUtils.degToRad(parseInt(_actorTransform[1]));//Y轴方向上将度转化为弧度。
|
|
|
- if(parseInt(_actorLoaction[1])==0){//X轴
|
|
|
- _actorLoaction[1] = spaceObj.centerX;
|
|
|
- }
|
|
|
- if(parseInt(_actorLoaction[0])==0){//Y轴
|
|
|
- _actorLoaction[0] = spaceObj.centerY;
|
|
|
- }
|
|
|
- let X_C = _actorLoaction[0] - spaceObj.centerY;//X轴偏移量
|
|
|
- let Y_C = _actorLoaction[1] - spaceObj.centerX;//Y轴偏移量
|
|
|
+ // if(parseInt(_actorLoaction[1])==0){//X轴
|
|
|
+ // _actorLoaction[1] = spaceObj.centerX;
|
|
|
+ // }
|
|
|
+ // if(parseInt(_actorLoaction[0])==0){//Y轴
|
|
|
+ // _actorLoaction[0] = spaceObj.centerY;
|
|
|
+ // }
|
|
|
+ let X_C = parseInt(_actorLoaction[0]);//X轴偏移量-UE原因
|
|
|
+ let Y_C = parseInt(_actorLoaction[1]);//Y轴偏移量-对应Three.js 的Z轴
|
|
|
let px = spaceObj.centerX + X_C;
|
|
|
- let py = spaceObj.centerY + Y_C;
|
|
|
+ let py = -spaceObj.centerY + Y_C;//UE里面的值跟Three.js Y轴相反
|
|
|
let position = {
|
|
|
x:(parseInt(px))/100,
|
|
|
y:1.5,
|
|
|
- z:-(parseInt(py))/100,//模型Y轴坐标系正负值跟webglZ轴是相反的
|
|
|
+ z:(parseInt(py))/100,//模型Y轴坐标系正负值跟webglZ轴是相反的
|
|
|
}
|
|
|
//新的观察点的位置-取模型的中心点坐标,加上高度,由于模型都是贴地的,所以高度设置为1.5
|
|
|
let targetNewPosition = {
|
|
@@ -543,21 +544,21 @@
|
|
|
let _actorTransform = defaultActor.actorTransform.split(',');//旋转角度,取第三个值
|
|
|
let _hd = THREE.MathUtils.degToRad(parseInt(_actorTransform[2]) + lon);//将度转化为弧度。
|
|
|
let _hdY = THREE.MathUtils.degToRad(parseInt(_actorTransform[1]));//Y轴方向上将度转化为弧度。
|
|
|
- if(parseInt(_actorLoaction[1])==0){//X轴
|
|
|
- _actorLoaction[1] = spaceObj.centerX;
|
|
|
- }
|
|
|
- if(parseInt(_actorLoaction[0])==0){//Y轴
|
|
|
- _actorLoaction[0] = spaceObj.centerY;
|
|
|
- }
|
|
|
- let X_C = _actorLoaction[0] - spaceObj.centerY;//X轴偏移量
|
|
|
- let Y_C = _actorLoaction[1] - spaceObj.centerX;//Y轴偏移
|
|
|
+ // if(parseInt(_actorLoaction[1])==0){//X轴
|
|
|
+ // _actorLoaction[1] = spaceObj.centerX;
|
|
|
+ // }
|
|
|
+ // if(parseInt(_actorLoaction[0])==0){//Y轴
|
|
|
+ // _actorLoaction[0] = spaceObj.centerY;
|
|
|
+ // }
|
|
|
+ let X_C = parseInt(_actorLoaction[0]);//X轴偏移量-UE原因
|
|
|
+ let Y_C = parseInt(_actorLoaction[1]);//Y轴偏移量-向
|
|
|
let px = spaceObj.centerX + X_C;
|
|
|
- let py = spaceObj.centerY + Y_C;
|
|
|
+ let py = -spaceObj.centerY + Y_C;
|
|
|
//新的摄像机的位置-新的摄像机角度是倾斜角度,所以z值需要计算,高度设置为模型高度的2倍
|
|
|
let cameraNewPosition = {
|
|
|
x:(parseInt(px))/100,
|
|
|
y:1.5,
|
|
|
- z:-(parseInt(py))/100,//模型Y轴坐标系正负值跟webglZ轴是相反的
|
|
|
+ z:(parseInt(py))/100,//模型Y轴坐标系正负值跟webglZ轴是相反的
|
|
|
}
|
|
|
if(cameraNewPosition){
|
|
|
let minX = 0,maxX = 0,minY = 0,maxY = 0;//0.1 是模型墙壁厚度
|
|
@@ -822,15 +823,15 @@
|
|
|
}
|
|
|
element.actors.forEach(actor=>{
|
|
|
let _actorLoaction = actor.actorLocation.split(',');//x y z
|
|
|
- let X_C = (parseInt(_actorLoaction[0]) || element.centerY) - element.centerY;//X轴偏移量-UE原因
|
|
|
- let Y_C = (parseInt(_actorLoaction[1]) || element.centerX) - element.centerX;//Y轴偏移量-向量
|
|
|
+ let X_C = parseInt(_actorLoaction[0]);//X轴偏移量-UE原因
|
|
|
+ let Y_C = parseInt(_actorLoaction[1]);//Y轴偏移量-向量
|
|
|
let _x = element.centerX + X_C;
|
|
|
- let _z = element.centerY + Y_C;
|
|
|
+ let _z = -element.centerY + Y_C;//centerY 要取反,因为UE里面是反向的
|
|
|
|
|
|
// let _x = parseInt(_actorLoaction[1]) || element.centerX;//观察点 X轴坐标
|
|
|
// let _z = parseInt(_actorLoaction[0]) || element.centerY;//观察点 Z轴坐标
|
|
|
let _presentX = (_x - element.centerX)/((element.spaceWidth/2) - 10);//10是墙壁厚度-单位cm
|
|
|
- let _presentY = (_z - element.centerY)/((element.spaceHeight/2) - 10);
|
|
|
+ let _presentY = (_z + element.centerY)/((element.spaceHeight/2) - 10);
|
|
|
//注意如果一开始就设置大超过空间大小,则处理成贴近空间边界
|
|
|
actor.presentX = Math.abs(_presentX)>1 ? (_presentX>1?1:-1) : _presentX;//观察点跟空间中心原点的距离比例
|
|
|
actor.presentY = Math.abs(_presentY)>1 ? (_presentY>1?1:-1) : _presentY;
|