xzw 2 年之前
父節點
當前提交
1ffdd513e7

+ 2 - 2
src/custom/settings.js

@@ -286,7 +286,7 @@ const config = {//配置参数   不可修改
     clickMaxDragDis:5,
     clickMaxDragDis:5,
     clickMaxPressTime:500, //ms
     clickMaxPressTime:500, //ms
     doubleClickTime:200,//双击间隔时间
     doubleClickTime:200,//双击间隔时间
-    testNodeCount1: browser.isMobile() ? 8 : 6,  //testMaxNode次数达到这个数字时,changePointSize才使用nodeMaxLevel。 (调试时比较卡,在线上实际只需要3)
+    testNodeCount1: browser.isMobile() ? 5 : 3,  //testMaxNode次数达到这个数字时,changePointSize才使用nodeMaxLevel。 (调试时比较卡,在线上实际只需要3)
      
      
     background: '#232323',
     background: '#232323',
     mapBG:/* '#232323',   */  '#F5F5F5',   //地图的clearColor
     mapBG:/* '#232323',   */  '#F5F5F5',   //地图的clearColor
@@ -429,7 +429,7 @@ let settings = {//设置   可修改
     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的平均值)
     
     

+ 8 - 5
src/custom/start.js

@@ -31,11 +31,14 @@ export function start(dom, navDom, number ){ //t-Zvd3w0m
         }); 
         }); 
         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` 
@@ -177,8 +180,8 @@ var changeLog = ()=>{
     textarea.style.width = '160px';
     textarea.style.width = '160px';
     textarea.style.height =  '200px'
     textarea.style.height =  '200px'
     textarea.style.position = 'fixed'
     textarea.style.position = 'fixed'
-    textarea.style.left = 0
-    textarea.style.bottom = '50px'
+    textarea.style.right = 0
+    textarea.style.bottom = '1px'
     textarea.style['z-index'] = 9999;
     textarea.style['z-index'] = 9999;
     textarea.style.color = 'black';
     textarea.style.color = 'black';
     textarea.style.opacity = 0.9;
     textarea.style.opacity = 0.9;

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

@@ -3156,7 +3156,7 @@ export class Viewer extends ViewerBase{
         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 
         
         

+ 13 - 1
src/navigation/FirstPersonControlsNew.js

@@ -352,13 +352,25 @@ export class FirstPersonControls extends THREE.EventDispatcher {
                         
                         
                         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) * THREE.Math.clamp(dis * Math.abs(r),   min, speed) 
                         speed = Math.sign(r) * THREE.Math.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 
                     } 
                     } 
                 }
                 }

+ 1 - 0
src/navigation/OrbitControlsNew.js

@@ -60,6 +60,7 @@ export class OrbitControls extends THREE.EventDispatcher{
         
         
         
         
 		let drag = (e) => {
 		let drag = (e) => {
+            
             if(!this.enabled)return
             if(!this.enabled)return
  
  
             let viewport = e.dragViewport;
             let viewport = e.dragViewport;

+ 1 - 1
src/viewer/EDLRendererNew.js

@@ -197,7 +197,7 @@ export class EDLRenderer{//Eye-Dome Lighting 眼罩照明
         
         
         let target = params.target || null
         let target = params.target || null
         
         
-		const resolution = rtEDL ? new THREE.Vector2(rtEDL.width,rtEDL.height) : params.viewport ? params.viewport.resolution2 : this.viewer.renderer.getSize(new THREE.Vector2());//突然发现mobile用resolution2点云会放大
+		const resolution = (rtEDL && Potree.settings.useRTPoint) ? new THREE.Vector2(rtEDL.width,rtEDL.height) : params.viewport ? params.viewport.resolution2 : this.viewer.renderer.getSize(new THREE.Vector2());//突然发现mobile用resolution2点云会放大
         
         
         
         
         
         

+ 4 - 63
src/viewer/NavigationCube.js

@@ -731,16 +731,8 @@ class NavCubeViewer extends ViewerBase{
                 if(this.lastView){
                 if(this.lastView){
                     this.switchView2(this.lastView) 
                     this.switchView2(this.lastView) 
                 }
                 }
-            })
-            
-                
-                 
-            
-            
-        })
-        
-      
-        
+            }) 
+        }) 
     }
     }
    
    
     render(){
     render(){
@@ -779,56 +771,7 @@ class NavCubeViewer extends ViewerBase{
         this.switchView('perspective')
         this.switchView('perspective')
     }  
     }  
     
     
-    /* switchView(type, dir, done){
-        let view = viewer.mainViewport.view
-        if(type == 'ortho'){
-            if(viewer.mainViewport.camera != viewer.scene.cameraO){
-                viewer.scene.cameraO.position.copy(viewer.mainViewport.camera.position)
-                viewer.scene.cameraO.quaternion.copy(viewer.mainViewport.camera.quaternion)
-                viewer.mainViewport.camera = viewer.scene.cameraO
-                viewer.setCameraMode(CameraMode.ORTHOGRAPHIC) 
-                navCubeViewer.controls.setEnable(false)
-                 
-                //假设保持到目前中心的视角范围不变
-                splitScreen.setShiftTarget(viewer.mainViewport, viewer.bound.center)
-                let dis = new THREE.Vector3().subVectors(viewer.mainViewport.shiftTarget,  viewer.scene.cameraO.position).length() ;   //-nearestPano[0].score
-	                    
-                //根据2d->3d的式子逆求zoom
-                let halfHeight = Math.abs(dis) * Math.tan( THREE.Math.degToRad(viewer.scene.cameraP.fov/2)); 
-                viewer.scene.cameraO.zoom = viewer.scene.cameraO.top / halfHeight;
-                viewer.scene.cameraO.updateProjectionMatrix();
-                 
-                console.log('zoom', viewer.scene.cameraO.zoom)
-                
-            }
-            
-            viewer.focusOnObject(viewer.bound, 'boundingBox', 1000, {dir }).promise.done(()=>{
-                done && done()
-                //console.log('回2', name)
-                navCubeViewer.dispatchEvent('content_changed')
-            })
-        }else{
-            
-            if(viewer.mainViewport.camera == viewer.scene.cameraO){
-                //viewer.scene.cameraP.position.copy(viewer.mainViewport.camera.position)
-                //viewer.scene.cameraP.quaternion.copy(viewer.mainViewport.camera.quaternion)
-                viewer.mainViewport.camera = viewer.scene.cameraP
-                viewer.setCameraMode(CameraMode.PERSPECTIVE)
-                
-                //假设保持到目前中心的视角范围不变
-                
-                splitScreen.setShiftTarget(viewer.mainViewport, viewer.bound.center)
-                viewer.mainViewport.targetPlane.setFromNormalAndCoplanarPoint( view.direction.clone(), viewer.bound.center )  
-                viewer.mainViewport.targetPlane.projectPoint(view.position, viewer.mainViewport.shiftTarget )  
-                 
-                let halfHeight = viewer.scene.cameraO.top/viewer.scene.cameraO.zoom 
-                let dis = halfHeight / Math.tan( THREE.Math.degToRad(viewer.scene.cameraP.fov/2)) 
-                
-                view.position.copy(viewer.mainViewport.shiftTarget).sub(view.direction.clone().multiplyScalar(dis)); 
-                this.controls.setEnable(true) 
-            } 
-        }
-    } */
+    
     switchView(type, {yaw, pitch, dir}={}, done){
     switchView(type, {yaw, pitch, dir}={}, done){
         if(viewer.mainViewport.view.isFlying())return
         if(viewer.mainViewport.view.isFlying())return
         let view = viewer.mainViewport.view
         let view = viewer.mainViewport.view
@@ -838,9 +781,7 @@ class NavCubeViewer extends ViewerBase{
             this.lastView.zoom = viewer.mainViewport.camera.zoom
             this.lastView.zoom = viewer.mainViewport.camera.zoom
             
             
         }
         }
-        
-        
-        
+         
         if(type == 'ortho'){
         if(type == 'ortho'){
             let startCamera, endCamera
             let startCamera, endCamera
             if(viewer.mainViewport.camera != viewer.scene.cameraO){
             if(viewer.mainViewport.camera != viewer.scene.cameraO){