|
@@ -90874,11 +90874,6 @@ void main()
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- let splitScreen = new SplitScreen();
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
const Colors = {
|
|
|
black : '#161A1A',
|
|
|
blue: '#00F',
|
|
@@ -91525,7 +91520,7 @@ void main()
|
|
|
}) ];
|
|
|
|
|
|
this.cube = new NavigationCube(this.scene, w/2 );
|
|
|
-
|
|
|
+ this.splitScreen = new SplitScreen();
|
|
|
|
|
|
|
|
|
viewer.addEventListener('camera_changed', e => {
|
|
@@ -91669,7 +91664,7 @@ void main()
|
|
|
navCubeViewer.controls.setEnable(false);
|
|
|
|
|
|
//假设保持到目前中心的视角范围不变
|
|
|
- splitScreen.setShiftTarget(viewer.mainViewport, viewer.bound.center);
|
|
|
+ this.splitScreen.setShiftTarget(viewer.mainViewport, viewer.bound.center);
|
|
|
let dis = new Vector3().subVectors(viewer.mainViewport.shiftTarget, viewer.scene.cameraO.position).length() ; //-nearestPano[0].score
|
|
|
|
|
|
//根据2d->3d的式子逆求zoom
|
|
@@ -91696,7 +91691,7 @@ void main()
|
|
|
|
|
|
//假设保持到目前中心的视角范围不变
|
|
|
|
|
|
- splitScreen.setShiftTarget(viewer.mainViewport, viewer.bound.center);
|
|
|
+ this.splitScreen.setShiftTarget(viewer.mainViewport, viewer.bound.center);
|
|
|
viewer.mainViewport.targetPlane.setFromNormalAndCoplanarPoint( view.direction.clone(), viewer.bound.center );
|
|
|
viewer.mainViewport.targetPlane.projectPoint(view.position, viewer.mainViewport.shiftTarget );
|
|
|
|
|
@@ -91718,7 +91713,7 @@ void main()
|
|
|
}
|
|
|
}
|
|
|
rotateSideCamera(angle){
|
|
|
- splitScreen.rotateSideCamera(viewer.mainViewport,angle);
|
|
|
+ this.splitScreen.rotateSideCamera(viewer.mainViewport,angle);
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -105857,7 +105852,7 @@ ENDSEC
|
|
|
}else {
|
|
|
Potree.Utils.updateVisible(this, "measure", false);
|
|
|
viewer.addEventListener("measureMovePoint",()=>{//测量开始
|
|
|
- //Potree.Utils.updateVisible(this, "measure", true)
|
|
|
+ Potree.Utils.updateVisible(this, "measure", true);
|
|
|
});
|
|
|
viewer.addEventListener("endMeasureMove",()=>{
|
|
|
Potree.Utils.updateVisible(this, "measure", false);
|
|
@@ -105885,18 +105880,28 @@ ENDSEC
|
|
|
|
|
|
|
|
|
var playerCamera = viewer.scene.getActiveCamera();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
var playerPos = playerCamera.position;//viewer.scene.view.getPivot()
|
|
|
var dis = playerPos.distanceTo(aimPos);
|
|
|
var dirToCamera = new Vector3().subVectors(playerPos, aimPos ).normalize();
|
|
|
|
|
|
const fareast = 300;
|
|
|
//相机位置
|
|
|
- var finalDisToAim = dis>magDisMin ? dis > fareast ? magDisMax : (dis-magDisMin) / (fareast-magDisMin) * (magDisMax-magDisMin) + magDisMin : dis / 2; //dis>magDistance_ ? magDistance_ : dis / 2;
|
|
|
-
|
|
|
+ if(playerCamera.type == 'OrthographicCamera'){
|
|
|
+
|
|
|
+ var finalDisToAim = 2;
|
|
|
+
|
|
|
+ }else {
|
|
|
+
|
|
|
+ var finalDisToAim = dis>magDisMin ? dis > fareast ? magDisMax : (dis-magDisMin) / (fareast-magDisMin) * (magDisMax-magDisMin) + magDisMin : dis / 2; //dis>magDistance_ ? magDistance_ : dis / 2;
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
this.camera.position.copy(aimPos).add(dirToCamera.multiplyScalar(finalDisToAim));
|
|
|
this.camera.lookAt(aimPos);
|
|
|
- this.camera.fov = playerCamera.fov / 2;
|
|
|
+ this.camera.fov = playerCamera.type == 'OrthographicCamera' ? 30 : playerCamera.fov / 2;
|
|
|
this.camera.updateProjectionMatrix();
|
|
|
|
|
|
|
|
@@ -105909,12 +105914,19 @@ ENDSEC
|
|
|
let screenPos = pos2d.clone().setY(pos2d.y + (pos2d.y>maxY ? -margin : margin ));
|
|
|
|
|
|
let newPos = new Vector3(screenPos.x,screenPos.y,0.8).unproject(playerCamera); //z:-1朝外
|
|
|
- let dir = newPos.clone().sub(playerPos).normalize().multiplyScalar(10);//这个数值要大于playerCamera.near
|
|
|
- let s = finalDisToAim; // dis>magDisMin ? 1 : dis / magDisMin ;
|
|
|
-
|
|
|
- //let s = dis>magDisMin ? dis > fareast ? magDisMax : (dis-magDisMin) / (fareast-magDisMin) * (magDisMax-magDisMin) + magDisMin : dis / magDisMin
|
|
|
-
|
|
|
- this.position.copy(playerPos.clone().add(dir));
|
|
|
+ if(playerCamera.type != 'OrthographicCamera'){
|
|
|
+ let dir = newPos.clone().sub(playerPos).normalize().multiplyScalar(10);//这个数值要大于playerCamera.near
|
|
|
+
|
|
|
+ this.position.copy(playerPos.clone().add(dir));
|
|
|
+ }else {
|
|
|
+ viewer.navCubeViewer.splitScreen.setShiftTarget(viewer.mainViewport, viewer.bound.center);
|
|
|
+ viewer.mainViewport.targetPlane.setFromNormalAndCoplanarPoint( viewer.mainViewport.view.direction.clone(), viewer.bound.center );
|
|
|
+ viewer.mainViewport.targetPlane.projectPoint(newPos, viewer.mainViewport.shiftTarget );
|
|
|
+ this.position.copy(viewer.mainViewport.shiftTarget.clone() );
|
|
|
+
|
|
|
+ //this.position.copy(playerPos.clone().add(dir))
|
|
|
+ }
|
|
|
+ let s = finalDisToAim;
|
|
|
this.quaternion.copy(playerCamera.quaternion);
|
|
|
this.targetPoint.position.copy(aimPos);
|
|
|
this.targetPoint.scale.set(s,s,s);
|
|
@@ -105931,6 +105943,7 @@ ENDSEC
|
|
|
if(!dontRender){
|
|
|
this.waitRender = true;
|
|
|
}
|
|
|
+
|
|
|
viewer.dispatchEvent('content_changed');
|
|
|
}
|
|
|
|