소스 검색

fix: 抖动

xzw 2 년 전
부모
커밋
216a020867
2개의 변경된 파일23개의 추가작업 그리고 8개의 파일을 삭제
  1. 22 7
      public/static/lib/potree/potree.js
  2. 1 1
      public/static/lib/potree/potree.js.map

+ 22 - 7
public/static/lib/potree/potree.js

@@ -74959,11 +74959,14 @@ void main()
 	        }); 
 	        }); 
 	        Potree.settings.sizeFitToLevel = true;//当type为衰减模式时自动根据level调节大小。每长一级,大小就除以2
 	        Potree.settings.sizeFitToLevel = true;//当type为衰减模式时自动根据level调节大小。每长一级,大小就除以2
 	        Potree.settings.rotAroundPoint = false;
 	        Potree.settings.rotAroundPoint = false;
-	        if( browser.isMobile()){
-	            changeLog();
-	        }
+	        
 	    }   
 	    }   
 
 
+	    if( browser.isMobile() && browser.urlHasValue('log')){
+	        changeLog();
+	    }
+
+
 	    {
 	    {
 	            
 	            
 	        var cloudPath =  //`${Potree.settings.urls.prefix1}/webcloud/cloud.js` 
 	        var cloudPath =  //`${Potree.settings.urls.prefix1}/webcloud/cloud.js` 
@@ -75570,7 +75573,7 @@ void main()
 	    useV4url:true, //v4的全景图等路径不一样 scene_view_data
 	    useV4url:true, //v4的全景图等路径不一样 scene_view_data
 	    
 	    
 	    useRTskybox:true,  //直接使用rtEDL绘制到屏幕,当是全景模式时. 在降4倍时能给render节省1毫秒,gpu时间未测 
 	    useRTskybox:true,  //直接使用rtEDL绘制到屏幕,当是全景模式时. 在降4倍时能给render节省1毫秒,gpu时间未测 
-	    useRTPoint:true,    //直接使用rtEDL绘制到屏幕,当是点云模式时。可以大大节省gpu时间
+	    //useRTPoint:true,    //直接使用rtEDL绘制到屏幕,当是点云模式时。可以大大节省gpu时间
 	    pointEnableRT:false,//点云是否允许绘制到rtEDL。只在有需要时使用
 	    pointEnableRT:false,//点云是否允许绘制到rtEDL。只在有需要时使用
 	    cloudSameMat:true,  //因为点云个数较多,就使用相同的材质,可见降低绘制速度(要保证所有点云的maxNodelevel一样,且要算出 material.spacing的平均值)
 	    cloudSameMat:true,  //因为点云个数较多,就使用相同的材质,可见降低绘制速度(要保证所有点云的maxNodelevel一样,且要算出 material.spacing的平均值)
 	    
 	    
@@ -76476,7 +76479,7 @@ void main()
 	            } 
 	            } 
 	            
 	            
 	        }  
 	        }  
-	        //console.log('changePointSize:'  + this.dataset_id + ' , num: ' + (num && num.toPrecision(3)) + ' , size: ' + size.toPrecision(3),  'nodeMaxLevel', nodeMaxLevel.toPrecision(3), 'testMaxNodeCount',viewer.testMaxNodeCount     /* this.material.spacing */)
+	        console.log('changePointSize:'  + this.dataset_id + ' , num: ' + (num && num.toPrecision(3)) + ' , size: ' + size.toPrecision(3),  'nodeMaxLevel', nodeMaxLevel.toPrecision(3), 'testMaxNodeCount',viewer.testMaxNodeCount     /* this.material.spacing */);
 	        if(size){
 	        if(size){
 	            if(Potree.settings.sortCloudMat){//被废弃,不给material分组了
 	            if(Potree.settings.sortCloudMat){//被废弃,不给material分组了
 	                this.size = size;this.material.size = size;
 	                this.size = size;this.material.size = size;
@@ -135282,13 +135285,25 @@ ENDSEC
 	                        
 	                        
 	                        let r = 1-1/e.scale; 
 	                        let r = 1-1/e.scale; 
 	                        let closeMin = 0.1, standardMin = 0.001, disBound1 = 2, disBound2 = 5;   
 	                        let closeMin = 0.1, standardMin = 0.001, disBound1 = 2, disBound2 = 5;   
+	                        
+	                        if(math.closeTo(e.scale,1,0.03)){//如果偏差小于0.01,就不限制最小值,因为平移容易正负抖动,近距离有最小值的话抖动明显
+	                            closeMin = 0;                //所以若缩放不明显(双指滑动慢),就不设置最低值。(这时候穿越障碍物会比较困难。)
+	                        }
+	                        //console.log('closeMin',closeMin)
 	                        let min = math.linearClamp(dis, disBound1, disBound2,  closeMin, standardMin); //触屏和滚轮不一样,触发较为连续,所以最小值设低一点。若要保持双指相对点云位置不变,理想最小值是0,但那样就无法穿越点云(最小值太小的话穿越密集点云如树丛很困难;太大会打滑)所以当离点云近时增大最小值 
 	                        let min = math.linearClamp(dis, disBound1, disBound2,  closeMin, standardMin); //触屏和滚轮不一样,触发较为连续,所以最小值设低一点。若要保持双指相对点云位置不变,理想最小值是0,但那样就无法穿越点云(最小值太小的话穿越密集点云如树丛很困难;太大会打滑)所以当离点云近时增大最小值 
 	                        speed = Math.sign(r) * MathUtils$1.clamp(dis * Math.abs(r),   min, speed); 
 	                        speed = Math.sign(r) * MathUtils$1.clamp(dis * Math.abs(r),   min, speed); 
 	                        
 	                        
 	                        //console.log(speed, dis, e.scale)
 	                        //console.log(speed, dis, e.scale)
 	                        
 	                        
 	                    }else {  
 	                    }else {  
-	                        const constantDis =  this.currentViewport.getMoveSpeed() * 200; //constantDis = 10;//常量系数,当放大一倍时前进的距离。可以调整
+	                        
+	                        this.useAttenuation = true;
+	                        let accelerate = 80;
+	                        if(math.closeTo(e.scale,1,0.02)){//缩放小的时候很可能是双指平移时,容易抖动,所以降低移动速度
+	                            accelerate *= Math.min(40*Math.abs(e.scale-1), 0.8);             
+	                        }
+	                        // console.log('accelerate',accelerate)
+	                        const constantDis = this.currentViewport.getMoveSpeed() * accelerate; //constantDis = 10;//常量系数,当放大一倍时前进的距离。可以调整
 	                        speed = (e.scale-1)*constantDis; 
 	                        speed = (e.scale-1)*constantDis; 
 	                    } 
 	                    } 
 	                }
 	                }
@@ -138989,7 +139004,7 @@ ENDSEC
 	        const vrActive = this.renderer.xr.isPresenting;
 	        const vrActive = this.renderer.xr.isPresenting;
 	         
 	         
 	        
 	        
-	        Potree.settings.useRTPoint = true;//!(SiteModel.editing && SiteModel.selected && SiteModel.selected.buildType == 'room' )//空间模型的房间选中材质是需要depth的,这时候需要绘制两次点云
+	        //Potree.settings.useRTPoint =  !(SiteModel.editing && SiteModel.selected && SiteModel.selected.buildType == 'room' )//空间模型的房间选中材质是需要depth的,这时候需要绘制两次点云
 	        
 	        
 	        Potree.settings.pointEnableRT = this.scene.measurements.length > 0 || !Potree.settings.useRTPoint; 
 	        Potree.settings.pointEnableRT = this.scene.measurements.length > 0 || !Potree.settings.useRTPoint; 
 	        
 	        

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1 - 1
public/static/lib/potree/potree.js.map