xzw 2 yıl önce
ebeveyn
işleme
fb158549fd

+ 12 - 0
src/custom/potree.shim.js

@@ -25,6 +25,13 @@ import {Shaders} from "../../build/shaders/shaders.js";
   
 import {LineSegmentsGeometry} from '../../libs/three.js/lines/LineSegmentsGeometry.js'  
 import {LineGeometry} from '../../libs/three.js/lines/LineGeometry.js'  
+
+import {ExtendView} from '../viewer/ExtendView.js'
+import {ExtendScene} from '../viewer/ExtendScene.js'
+
+ 
+
+
 KeyCodes.BACKSPACE = 8
 
 
@@ -2068,4 +2075,9 @@ LineGeometry.prototype.setPositions = function( array  ) { //xzw改成类似Line
     LineSegmentsGeometry.prototype.setPositions.call(this, points ); 
     return this; 
 }  
+
+
+ 
+Object.assign(ExtendView.prototype, THREE.EventDispatcher.prototype)
+Object.assign(ExtendScene.prototype, THREE.EventDispatcher.prototype );
  

+ 18 - 10
src/custom/utils/SplitScreen.js

@@ -73,13 +73,14 @@ class SplitScreen extends THREE.EventDispatcher{
     viewportFitBound(viewport,  bound,  center, duration=0, margin){
         let view = viewport.view
         let info = {bound} 
-        let {boundSize, boundCenter} = this.getViewBound(viewport)
+         
+        let {boundSize, boundCenter} = this.getViewBound(viewport, bound )
         
-        this.setShiftTarget(viewport, boundCenter)
-        /* 
+        //this.setShiftTarget(viewport, boundCenter)
+     
         viewport.targetPlane.setFromNormalAndCoplanarPoint( view.direction.clone(), boundCenter )  
         viewport.targetPlane.projectPoint(center, viewport.shiftTarget)  //target转换到过模型中心的平面,以保证镜头一定在模型外 this.shiftTarget是得到的
-         */
+         
         info.endPosition = this.getPosOutOfModel(viewport, boundSize) 
         
         //if(viewport.name == 'mapViewport')info.endPosition.z = Math.max(Potree.config.map.cameraHeight, info.endPosition.z) 
@@ -89,10 +90,17 @@ class SplitScreen extends THREE.EventDispatcher{
     } 
     
     
-    getViewBound(viewport){
-        let {boundSize, center} = viewer.bound
+    getViewBound(viewport, boundingBox){
+        if(boundingBox){
+            boundSize = boundingBox.getSize(new THREE.Vector3)
+            center = boundingBox.getCenter(new THREE.Vector3)
+        }else{
+            var {boundSize, center, boundingBox} = viewer.bound
+        }
+        
+        
         if(viewport.viewContainsPoints){//视野范围内必须要包含的点,直接算入模型区域。这时候得到的boundCenter和模型中心不重合
-            let boundingBox = viewer.bound.boundingBox.clone()
+            boundingBox = boundingBox.clone()
             viewport.viewContainsPoints.forEach(point=>{
                 boundingBox.expandByPoint(point)
             })
@@ -121,9 +129,9 @@ class SplitScreen extends THREE.EventDispatcher{
                 viewport.targetPlane.projectPoint(viewport.view.position, viewport.shiftTarget)  //target转换到过模型中心的平面,以保证镜头一定在模型外 this.shiftTarget是得到的
                 */ 
                 this.setShiftTarget(viewport, boundCenter)
-                 let endPosition = this.getPosOutOfModel(viewport, boundSize) 
+                let endPosition = this.getPosOutOfModel(viewport, boundSize) 
                  //if(viewport.name == 'mapViewport')endPosition.z = Math.max(Potree.config.map.cameraHeight, endPosition.z) 
-                 viewport.view.position.copy(endPosition)
+                viewport.view.position.copy(endPosition)
             } 
         })  
     }  
@@ -187,7 +195,7 @@ class SplitScreen extends THREE.EventDispatcher{
          
         viewer.updateScreenSize({forceUpdateSize:true}) 
     } 
-    
+     
     unfocusViewport(){
         if(!this.focusInfo)return
         viewer.viewports.forEach((viewport, i )=>{ 

+ 1 - 1
src/viewer/EDLRendererNew.js

@@ -136,7 +136,7 @@ export class EDLRenderer{//Eye-Dome Lighting 眼罩照明
                 this.rtEDLs.set(viewport, rtEDL)
             }  
         } 
-    
+        //注:当pc窗口缩小,deviceRatio变小后,resolution2会小于resolution,然后遮挡会出现精度损失而有细微不准,是正常现象。
         return rtEDL
     }
  

+ 1 - 1
src/viewer/ExtendScene.js

@@ -228,7 +228,7 @@ class ExtendScene extends Scene{
 
 
 
-Object.assign( ExtendScene.prototype, THREE.EventDispatcher.prototype );
+//Object.assign( ExtendScene.prototype, THREE.EventDispatcher.prototype );
 
 
 

+ 1 - 1
src/viewer/ExtendView.js

@@ -457,6 +457,6 @@ class ExtendView extends View {
 
 };
 
-Object.assign(ExtendView.prototype, THREE.EventDispatcher.prototype)
+//Object.assign(ExtendView.prototype, THREE.EventDispatcher.prototype)
 
 export {ExtendView}