xzw 9 miesięcy temu
rodzic
commit
d0138bc432

+ 2 - 2
src/custom/modules/panos/Panorama.js

@@ -345,12 +345,12 @@ class Panorama extends THREE.EventDispatcher{
                             return (Math.abs(A.x - B.x)<=1 || Math.abs(A.x - B.x) == texture.image.width-1) && Math.abs(A.y - B.y)<=1
                         }
                         for(let i=0;i<pixelCount;i++){
-                            if(Math.abs(value - pixels[i]) < 5){
+                            if(Math.abs(value - pixels[i]) < 2 ){
                                 let row = Math.floor(i / texture.image.width)
                                 let col = i % texture.image.width
                                 let data = {x:col, y:row, value: pixels[i]}
                                 Potree.Common.pushToGroupAuto([data], groups, isNeigh/* , recognizeGroup */)
-                                if(groups.some(e=>e.length > stopMemberCount)){
+                                if(groups.some(e=>e.length > stopMemberCount && e.some(e=>e==range[name]))){
                                     break
                                 }
                             }

+ 2 - 2
src/custom/objects/Monitor.js

@@ -240,7 +240,7 @@ export default class Monitor extends THREE.Object3D{
             position: this.getWorldPosition(new THREE.Vector3),
             quaternion: this.getWorldQuaternion(new THREE.Quaternion),
             onUpdate:(percent)=>{
-                camera.fov = this.data.fov * percent + this.oldState.fov * (1-percent)
+                camera.fov = this.fov * percent + this.oldState.fov * (1-percent)
                 camera.updateProjectionMatrix()  
             },
             callback:()=>{
@@ -267,7 +267,7 @@ export default class Monitor extends THREE.Object3D{
             quaternion: this.oldState.quaternion,
             
             onUpdate:(percent)=>{
-                camera.fov = this.data.fov * (1-percent) + this.oldState.fov * percent
+                camera.fov = this.fov * (1-percent) + this.oldState.fov * percent
                 camera.updateProjectionMatrix()
             },
             callback:()=>{

+ 1 - 1
src/custom/utils/CursorDeal.js

@@ -16,7 +16,7 @@ var CursorDeal = {
         {'hoverGrab':'grab'},//通用
         {'pointer':'pointer'},//通用
         
-        
+        {'hoverMonitor':'pointer'}, 
         
         {'zoomInCloud':'zoom-in'},
         {'hoverPano':'pointer'}, 

+ 25 - 6
src/viewer/ExtendView.js

@@ -21,14 +21,19 @@ class ExtendView extends View {
         this.sid = sid++
         this.LookTransition = 'LookTransition'+this.sid
         this.FlyTransition = 'FlyTransition'+this.sid
-
+        this.freeQuaternion = new THREE.Quaternion
 	}
     //add------
     applyToCamera(camera){
         camera.position.copy(this.position);
-        camera.rotation.copy(this.rotation) 
-       
-         
+                                            
+        
+        if(this.rotMode == 'free'){ //不受相机旋转模式限定,可以歪着,任意角度
+            camera.quaternion.copy(this.freeQuaternion) 
+        }else{
+            camera.rotation.copy(this.rotation) 
+        }
+        
         camera.updateMatrix();
         camera.updateMatrixWorld();
         //camera.matrixWorldInverse.copy(camera.matrixWorld).invert(); 
@@ -52,13 +57,27 @@ class ExtendView extends View {
         } 
     }
     
+    setRotMode(mode){
+        if(mode == 'free'){
+            this.freeQuaternion.copy(this.quaternion)
+        }
+        this.rotMode = mode
+    }
    
     get quaternion(){
-        return new THREE.Quaternion().setFromEuler(this.rotation)
+        if(this.rotMode == 'free'){
+            return this.freeQuaternion
+        }else{
+            return new THREE.Quaternion().setFromEuler(this.rotation)
+        } 
     }
     
     set quaternion(q){ 
-        this.rotation = new THREE.Euler().setFromQuaternion(q)
+        if(this.rotMode == 'free'){
+            this.freeQuaternion.copy(q)
+        }else{
+            this.rotation = new THREE.Euler().setFromQuaternion(q)
+        }
     }
     
     copy(a){