|
@@ -586,10 +586,22 @@ class NavigationCube{
|
|
|
navCubeViewer.switchView('ortho', directions[name] , ()=>{
|
|
|
this.changingView = false
|
|
|
faceMesh.material.uniforms.faceColor.value.set(Colors.black)
|
|
|
+ })
|
|
|
+ });
|
|
|
+
|
|
|
+ if(name == 'Top'){
|
|
|
+ navCubeViewer.addEventListener('enterTopView',()=>{
|
|
|
+ faceMesh.dispatchEvent('click')
|
|
|
+
|
|
|
+ })
|
|
|
+ navCubeViewer.addEventListener('leaveTopView',()=>{
|
|
|
+ if(navCubeViewer.lastView){
|
|
|
+ navCubeViewer.switchView2(navCubeViewer.lastView)
|
|
|
+ }
|
|
|
})
|
|
|
|
|
|
|
|
|
- });
|
|
|
+ }
|
|
|
|
|
|
})
|
|
|
}
|
|
@@ -800,6 +812,15 @@ class NavCubeViewer extends ViewerBase{
|
|
|
} */
|
|
|
switchView(type, {yaw, pitch, dir}={}, done){
|
|
|
let view = viewer.mainViewport.view
|
|
|
+ this.lastView = view.clone()
|
|
|
+ if(viewer.mainViewport.camera.type == 'OrthographicCamera'){
|
|
|
+ this.lastView.isOrtho = true;
|
|
|
+ this.lastView.zoom = viewer.mainViewport.camera.zoom
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
if(type == 'ortho'){
|
|
|
let startCamera, endCamera
|
|
|
if(viewer.mainViewport.camera != viewer.scene.cameraO){
|
|
@@ -862,6 +883,66 @@ class NavCubeViewer extends ViewerBase{
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ switchView2(viewInfo){ //直接输入view改变
|
|
|
+ let view = viewer.mainViewport.view
|
|
|
+ let startCamera, endCamera
|
|
|
+
|
|
|
+
|
|
|
+ if(viewInfo.isOrtho){
|
|
|
+ if(viewer.mainViewport.camera != viewer.scene.cameraO){
|
|
|
+
|
|
|
+ startCamera = viewer.scene.cameraP
|
|
|
+ endCamera = viewer.scene.cameraO
|
|
|
+
|
|
|
+
|
|
|
+ }else{
|
|
|
+ view.moveOrthoCamera(viewer.mainViewport, {endPosition:viewInfo.position,
|
|
|
+ endPitch: viewInfo.pitch, endYaw: viewInfo.yaw , zoom: viewInfo.zoom,
|
|
|
+ callback:()=>{
|
|
|
+
|
|
|
+ },
|
|
|
+ }, 500)
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if(viewer.mainViewport.camera == viewer.scene.cameraO){
|
|
|
+ startCamera = viewer.scene.cameraO
|
|
|
+ endCamera = viewer.scene.cameraP
|
|
|
+ }else{
|
|
|
+ view.setView(viewer.mainViewport, { position:view.position,
|
|
|
+ endPitch: viewInfo.pitch, endYaw: viewInfo.yaw ,
|
|
|
+ startCamera, endCamera,
|
|
|
+ callback:()=>{
|
|
|
+
|
|
|
+ },
|
|
|
+ }, 500)
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if(startCamera){
|
|
|
+ view.tranCamera(viewer.mainViewport, { position:viewInfo.position,
|
|
|
+ endPitch: viewInfo.pitch, endYaw: viewInfo.yaw ,
|
|
|
+ startCamera, endCamera, midCamera:viewer.scene.cameraBasic ,
|
|
|
+ callback:()=>{
|
|
|
+
|
|
|
+ },
|
|
|
+ }, 500)
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
rotateSideCamera(angle){
|
|
|
this.splitScreen.rotateSideCamera(viewer.mainViewport,angle)
|
|
|
}
|