|
@@ -731,16 +731,8 @@ class NavCubeViewer extends ViewerBase{
|
|
|
if(this.lastView){
|
|
|
this.switchView2(this.lastView)
|
|
|
}
|
|
|
- })
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- })
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ })
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
render(){
|
|
@@ -779,56 +771,7 @@ class NavCubeViewer extends ViewerBase{
|
|
|
this.switchView('perspective')
|
|
|
}
|
|
|
|
|
|
- /* switchView(type, dir, done){
|
|
|
- let view = viewer.mainViewport.view
|
|
|
- if(type == 'ortho'){
|
|
|
- if(viewer.mainViewport.camera != viewer.scene.cameraO){
|
|
|
- viewer.scene.cameraO.position.copy(viewer.mainViewport.camera.position)
|
|
|
- viewer.scene.cameraO.quaternion.copy(viewer.mainViewport.camera.quaternion)
|
|
|
- viewer.mainViewport.camera = viewer.scene.cameraO
|
|
|
- viewer.setCameraMode(CameraMode.ORTHOGRAPHIC)
|
|
|
- navCubeViewer.controls.setEnable(false)
|
|
|
-
|
|
|
- //假设保持到目前中心的视角范围不变
|
|
|
- splitScreen.setShiftTarget(viewer.mainViewport, viewer.bound.center)
|
|
|
- let dis = new THREE.Vector3().subVectors(viewer.mainViewport.shiftTarget, viewer.scene.cameraO.position).length() ; //-nearestPano[0].score
|
|
|
-
|
|
|
- //根据2d->3d的式子逆求zoom
|
|
|
- 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('zoom', viewer.scene.cameraO.zoom)
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- viewer.focusOnObject(viewer.bound, 'boundingBox', 1000, {dir }).promise.done(()=>{
|
|
|
- done && done()
|
|
|
- //console.log('回2', name)
|
|
|
- navCubeViewer.dispatchEvent('content_changed')
|
|
|
- })
|
|
|
- }else{
|
|
|
-
|
|
|
- if(viewer.mainViewport.camera == viewer.scene.cameraO){
|
|
|
- //viewer.scene.cameraP.position.copy(viewer.mainViewport.camera.position)
|
|
|
- //viewer.scene.cameraP.quaternion.copy(viewer.mainViewport.camera.quaternion)
|
|
|
- viewer.mainViewport.camera = viewer.scene.cameraP
|
|
|
- viewer.setCameraMode(CameraMode.PERSPECTIVE)
|
|
|
-
|
|
|
- //假设保持到目前中心的视角范围不变
|
|
|
-
|
|
|
- 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 )
|
|
|
-
|
|
|
- let halfHeight = viewer.scene.cameraO.top/viewer.scene.cameraO.zoom
|
|
|
- let dis = halfHeight / Math.tan( THREE.Math.degToRad(viewer.scene.cameraP.fov/2))
|
|
|
-
|
|
|
- view.position.copy(viewer.mainViewport.shiftTarget).sub(view.direction.clone().multiplyScalar(dis));
|
|
|
- this.controls.setEnable(true)
|
|
|
- }
|
|
|
- }
|
|
|
- } */
|
|
|
+
|
|
|
switchView(type, {yaw, pitch, dir}={}, done){
|
|
|
if(viewer.mainViewport.view.isFlying())return
|
|
|
let view = viewer.mainViewport.view
|
|
@@ -838,9 +781,7 @@ class NavCubeViewer extends ViewerBase{
|
|
|
this.lastView.zoom = viewer.mainViewport.camera.zoom
|
|
|
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
if(type == 'ortho'){
|
|
|
let startCamera, endCamera
|
|
|
if(viewer.mainViewport.camera != viewer.scene.cameraO){
|