|
@@ -715,10 +715,11 @@ class NavCubeViewer extends ViewerBase{
|
|
|
|
|
|
|
|
|
viewer.images360.addEventListener('beginChangeMode',(e)=>{
|
|
|
- if(e.mode == 'showPanos')this.switchView('perspective',{}, ()=>{
|
|
|
+ if(e.mode == 'showPanos'){
|
|
|
+ this.switchView('perspective',{}, ()=>{
|
|
|
Potree.settings.displayMode = viewer.images360.latestRequestMode
|
|
|
- })
|
|
|
-
|
|
|
+ })
|
|
|
+ }
|
|
|
})
|
|
|
|
|
|
|
|
@@ -778,11 +779,15 @@ class NavCubeViewer extends ViewerBase{
|
|
|
switchView(type, {yaw, pitch, dir}={}, done){
|
|
|
if(viewer.mainViewport.view.isFlying())return
|
|
|
let view = viewer.mainViewport.view
|
|
|
+ let oldlastPerspect = this.lastPerspectView
|
|
|
+
|
|
|
+
|
|
|
this.lastView = view.clone()
|
|
|
if(viewer.mainViewport.camera.type == 'OrthographicCamera'){
|
|
|
this.lastView.isOrtho = true;
|
|
|
- this.lastView.zoom = viewer.mainViewport.camera.zoom
|
|
|
-
|
|
|
+ this.lastView.zoom = viewer.mainViewport.camera.zoom
|
|
|
+ }else{
|
|
|
+ this.lastPerspectView = this.lastView
|
|
|
}
|
|
|
|
|
|
if(type == 'ortho'){
|
|
@@ -805,13 +810,15 @@ class NavCubeViewer extends ViewerBase{
|
|
|
let halfHeight = Math.abs(dis) * Math.tan( THREE.Math.degToRad(viewer.scene.cameraP.fov/2));
|
|
|
viewer.scene.cameraO.zoom = viewer.scene.cameraO.top / halfHeight;
|
|
|
viewer.scene.cameraO.updateProjectionMatrix();
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
console.log('变成正交')
|
|
|
viewer.focusOnObject(viewer.bound, 'boundingBox', 1000, {
|
|
|
endPitch: pitch, endYaw: yaw , dir, startCamera, endCamera
|
|
|
}).promise.done(()=>{
|
|
|
-
|
|
|
+ let baseLine = viewer.scene.measurements.find(e=>e.isBaseLine && e.points.length == 2)
|
|
|
+ baseLine && Potree.Utils.updateVisible(baseLine,'enterOrthoView',true)//基准线仅在正交视图可见
|
|
|
|
|
|
done && done()
|
|
|
navCubeViewer.dispatchEvent('content_changed')
|
|
@@ -820,6 +827,12 @@ class NavCubeViewer extends ViewerBase{
|
|
|
}else{
|
|
|
|
|
|
if(viewer.mainViewport.camera == viewer.scene.cameraO){
|
|
|
+
|
|
|
+ return this.switchView2(oldlastPerspect, done)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
//viewer.scene.cameraP.position.copy(viewer.mainViewport.camera.position)
|
|
|
//viewer.scene.cameraP.quaternion.copy(viewer.mainViewport.camera.quaternion)
|
|
|
viewer.mainViewport.camera = viewer.scene.cameraP
|
|
@@ -836,6 +849,11 @@ class NavCubeViewer extends ViewerBase{
|
|
|
|
|
|
let position = new THREE.Vector3().copy(viewer.mainViewport.shiftTarget).sub(view.direction.clone().multiplyScalar(dis));
|
|
|
//view.position.copy(viewer.mainViewport.shiftTarget).sub(view.direction.clone().multiplyScalar(dis));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
this.controls.setEnable(true)
|
|
|
//viewer.dispatchEvent('leaveTopView')
|
|
|
console.log('变回透视')
|
|
@@ -856,7 +874,7 @@ class NavCubeViewer extends ViewerBase{
|
|
|
|
|
|
|
|
|
|
|
|
- switchView2(viewInfo){ //直接输入view改变
|
|
|
+ switchView2(viewInfo, done){ //直接输入view改变
|
|
|
|
|
|
let view = viewer.mainViewport.view
|
|
|
let startCamera, endCamera
|
|
@@ -872,15 +890,20 @@ class NavCubeViewer extends ViewerBase{
|
|
|
view.moveOrthoCamera(viewer.mainViewport, {endPosition:viewInfo.position,
|
|
|
endPitch: viewInfo.pitch, endYaw: viewInfo.yaw , zoom: viewInfo.zoom,
|
|
|
callback:()=>{
|
|
|
-
|
|
|
+ done && done()
|
|
|
},
|
|
|
- }, 500)
|
|
|
+ }, 800)
|
|
|
}
|
|
|
}else{
|
|
|
if(viewer.mainViewport.camera == viewer.scene.cameraO){
|
|
|
startCamera = viewer.scene.cameraO
|
|
|
endCamera = viewer.scene.cameraP
|
|
|
+
|
|
|
+ let baseLine = viewer.scene.measurements.find(e=>e.isBaseLine && e.points.length == 2)
|
|
|
+ baseLine && Potree.Utils.updateVisible(baseLine,'enterOrthoView',false) //基准线仅在正交视图可见
|
|
|
+
|
|
|
}else{
|
|
|
+
|
|
|
console.log('switchView2', 'not ortho')
|
|
|
view.setView({ position:viewInfo.position,
|
|
|
endPitch: viewInfo.pitch, endYaw: viewInfo.yaw ,
|
|
@@ -888,7 +911,7 @@ class NavCubeViewer extends ViewerBase{
|
|
|
callback:()=>{
|
|
|
|
|
|
},
|
|
|
- }, 500)
|
|
|
+ }, 800)
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -909,8 +932,9 @@ class NavCubeViewer extends ViewerBase{
|
|
|
}else{
|
|
|
viewer.dispatchEvent({type:'viewChanged', name:'perspective' })
|
|
|
}
|
|
|
+ done && done()
|
|
|
},
|
|
|
- }, 500)
|
|
|
+ }, 800)
|
|
|
}
|
|
|
|
|
|
}
|