Browse Source

放大镜在正交下的中心点偏移(是放大镜camera位置错误)

xzw 2 years ago
parent
commit
237a084ccb
2 changed files with 16 additions and 9 deletions
  1. 8 8
      src/custom/objects/Magnifier.js
  2. 8 1
      src/custom/viewer/ViewerNew.js

+ 8 - 8
src/custom/objects/Magnifier.js

@@ -239,25 +239,25 @@ export default class Magnifier extends THREE.Object3D {//放大镜or望远镜
         
         const fareast = 300;  
         //相机位置
-        if(playerCamera.type == 'OrthographicCamera'){
-            
-            var finalDisToAim = 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.type == 'OrthographicCamera' ? 30 : playerCamera.fov / 2
         this.camera.updateProjectionMatrix()
         
+        
         if(playerCamera.type == 'OrthographicCamera'){
-            orthoView.position.copy(this.camera.position)
+            orthoView.position.copy(aimPos).sub(viewer.mainViewport.view.direction.multiplyScalar(finalDisToAim))
             orthoView.yaw = viewer.mainViewport.view.yaw;
             orthoView.pitch = viewer.mainViewport.view.pitch;
             orthoView.applyToCamera(this.camera)
+        }else{
+            this.camera.position.copy(aimPos).add(dirToCamera.multiplyScalar(finalDisToAim))
+            this.camera.lookAt(aimPos) 
         }
 
          

+ 8 - 1
src/custom/viewer/ViewerNew.js

@@ -941,7 +941,14 @@ export class Viewer extends ViewerBase{
     
     updateMarkerVisibles(){//限制显示的marker个数,因镜头内marker多的时候可能会卡 
         if(!Potree.settings.ifShowMarker)return
-       
+        
+        if(this.mainViewport.camera.type == 'OrthographicCamera'){ 
+            viewer.images360.panos.forEach(pano=>{ 
+                Potree.Utils.updateVisible(pano.marker, 'limitMarkerShow', true )  
+            }) 
+            return 
+        }
+        
         
         const minRadius = 8 * this.images360.zoomLevel,  //当视线垂直于marker时的最小可见距离,此范围内可见的pano绝对可见
             maxRadius = 50 * this.images360.zoomLevel,    //当视线垂直于marker时的最大可见距离,此范围外绝对不可见