浏览代码

fix: clip 默认剪裁区域是100%显示,高度改为百分比

xzw 1 年之前
父节点
当前提交
fdab0cdb09
共有 3 个文件被更改,包括 20 次插入20 次删除
  1. 15 17
      public/static/lib/potree/potree.js
  2. 1 1
      public/static/lib/potree/potree.js.map
  3. 4 2
      src/sdk/laser/core/enter.js

+ 15 - 17
public/static/lib/potree/potree.js

@@ -103553,25 +103553,18 @@ ENDSEC
 	    
 
 	    setBoxPose(){
-	        const min = 0.01;//0的话相当于没有box所以不能为0
 	        //box底部不变,永远在bound的底部。但top会根据height改变
-	        let boxData = this.getBoxData();
-	        let bound = viewer.bound.boundingBox.clone();
-	        let scale = viewer.bound.boundSize.clone().setZ(Math.max(min,boxData.height)); 
-	        let pos = viewer.bound.center.clone().setZ(bound.min.z + boxData.height/2);
-	        let rotation = new Euler(0,0,boxData.rotAngle);
-	        scale.setX(Math.max(min,scale.x*boxData.scaleXY)).setY(Math.max(min,scale.y*boxData.scaleXY));
-	        
-	        this.box.position.copy(pos);
-	        this.box.rotation.copy(rotation);
-	        this.box.scale.copy(scale);
 	         
+	        let boxData = this.getBoxData();
+	        this.setRot(boxData.rotAngle);  
+	        this.setScale(boxData.scaleXY);
+	        this.setScaleZ(boxData.scaleZ);
 	    },
 
 	    //暂定为在手动设置旋转之前 , 如果有基准线,使用基准线的旋转角。 
 	    getDefaultData(){  
 	        this.boxData = {
-	            height : 4, scaleXY:1,  //水平缩放比率。1代表和bound相同
+	            scaleZ : 1, scaleXY:1,  //水平缩放比率。1代表和bound相同
 	            rotAngle: 0//this.getRotByBaseLine()   ,   rotByUser: false
 	        }; 
 	    },
@@ -103677,10 +103670,13 @@ ENDSEC
 	        this.box.scale.x = viewer.bound.boundSize.x * s;
 	        this.box.scale.y = viewer.bound.boundSize.y * s; 
 	    }, 
-	    setHeight(v){
-	        this.boxData.height = v; 
-	        this.box.scale.z = v; 
-	        this.box.position.z = viewer.bound.boundingBox.min.z + v/2;
+	    setScaleZ(scaleZ){
+	        scaleZ = Math.max(0.0001, scaleZ);  //0的话相当于没有box所以不能为0
+	        let maxHeight = viewer.bound.boundSize.z;
+	        let height = maxHeight * scaleZ;
+	        this.boxData.scaleZ = scaleZ;
+	        this.box.scale.z = height;
+	        this.box.position.z = viewer.bound.boundingBox.min.z + height/2;
 	    }
 	   
 	   
@@ -134257,7 +134253,9 @@ ENDSEC
 	                pointcloud.material.addEventListener('material_property_changed',()=>{
 	                    this.dispatchEvent('pointcloud_changed'); 
 	                });
-	                
+	                /* if(Potree.settings.isTest ){  
+	                     this.showBoundingBox = true 
+	                } */
 	                
 	            });
 	            

文件差异内容过多而无法显示
+ 1 - 1
public/static/lib/potree/potree.js.map


+ 4 - 2
src/sdk/laser/core/enter.js

@@ -834,7 +834,7 @@ var enter = ({
             getSceneCropSetting(){ 
                 let boxData = viewer.modules.Clip.getBoxData()
                 return {
-                    top : {value:boxData.height, minTop:0, maxTop:10},
+                    top : {value:boxData.scaleZ*100, minTop:0, maxTop:10},
                     scale : {value: boxData.scaleXY*100},
                     rotate :  {value: THREE.Math.radToDeg(boxData.rotAngle)},
                     //rotByUser : {value:boxData.rotByUser}
@@ -846,7 +846,7 @@ var enter = ({
             setSceneCropSetting({top,scale,rotate  }){
                
                 viewer.modules.Clip.boxData = {
-                    height: top.value,
+                    scaleZ: top.value/100,
                     scaleXY: scale.value/100,
                     rotAngle: THREE.Math.degToRad(rotate.value),
                     //rotByUser      
@@ -1074,7 +1074,9 @@ export default enter;
 所以报错的话很可能是代码中的某一句,去除后就会正常。
 
 
+=======
 
+如果遇到点云只显示一部分,很可能是裁剪范围出错
 
 
 */