xzw 2 years ago
parent
commit
00dddfdeff
2 changed files with 59 additions and 42 deletions
  1. 58 41
      public/static/lib/potree/potree.js
  2. 1 1
      public/static/lib/potree/potree.js.map

+ 58 - 41
public/static/lib/potree/potree.js

@@ -71070,7 +71070,7 @@ void main()
 	    
 	    
 	    realVisible(){
 	    realVisible(){
 	        
 	        
-	        if(!this.visible && this.unvisibleReasons && this.unvisibleReasons.some(e=>e != 'unableCompute')){
+	        if(!this.visible && this.unvisibleReasons && this.unvisibleReasons.some(e=>e.reason != 'unableCompute')){
 	            return false
 	            return false
 	        }
 	        }
 	        
 	        
@@ -71171,8 +71171,8 @@ void main()
 	                if(!r2.trueSide){
 	                if(!r2.trueSide){
 	                    return  Potree.Utils.updateVisible(this, 'unableCompute', false)//, console.log('  !r2.trueSide', )
 	                    return  Potree.Utils.updateVisible(this, 'unableCompute', false)//, console.log('  !r2.trueSide', )
 	                }
 	                }
-	                //Potree.Utils.updateVisible(this, 'notTrueSide', true)
 	                 
 	                 
+	                Potree.Utils.updateVisible(this, 'unableCompute', true);
 	                let p1 = r1.pos,  p2 = r2.pos;
 	                let p1 = r1.pos,  p2 = r2.pos;
 	                let vec = new Vector2().subVectors(p1,p2);
 	                let vec = new Vector2().subVectors(p1,p2);
 	                let angle = -vec.angle(); //根据测量线在屏幕上的角度在旋转label,使之和屏幕上的二维线平行。
 	                let angle = -vec.angle(); //根据测量线在屏幕上的角度在旋转label,使之和屏幕上的二维线平行。
@@ -81121,6 +81121,14 @@ void main()
 	                }; 
 	                }; 
 	                o.marker.addEventListener('mouseover', mouseover);
 	                o.marker.addEventListener('mouseover', mouseover);
 	                o.marker.addEventListener('mouseleave', mouseleave);
 	                o.marker.addEventListener('mouseleave', mouseleave);
+	                
+	                o.marker.addEventListener('startDragging', (e)=>{//for mobile
+	                    this.setMarkerSelected(o.marker, 'hover', 'single'); 
+	                });
+	                o.marker.addEventListener('drop', (e)=>{//for mobile
+	                    this.setMarkerSelected(o.marker, 'unhover', 'single'); 
+	                });
+	                
 	                o.marker.removeEventListener('addHoverEvent',addHoverEvent); 
 	                o.marker.removeEventListener('addHoverEvent',addHoverEvent); 
 	            };
 	            };
 	            o.marker.addEventListener('addHoverEvent',addHoverEvent);//当非isNew时才添加事件
 	            o.marker.addEventListener('addHoverEvent',addHoverEvent);//当非isNew时才添加事件
@@ -82406,7 +82414,11 @@ void main()
 	    }
 	    }
 	    
 	    
 	    focus(){  
 	    focus(){  
-	        viewer.focusOnObject(this, 'measure');
+	    
+	    
+	        let dontChangeCamDir = viewer.mainViewport.camera.type == 'OrthographicCamera' && math.closeTo( viewer.mainViewport.view.pitch , -1.57079632);  //俯视图不改角度
+	    
+	        viewer.focusOnObject(this, 'measure', null, {dontChangeCamDir});
 	        
 	        
 	        if(this.clickSelected)return
 	        if(this.clickSelected)return
 	        this.setSelected(true, 'focus');
 	        this.setSelected(true, 'focus');
@@ -91025,7 +91037,7 @@ void main()
 
 
 	const Colors = {
 	const Colors = {
 	    black : '#161A1A',
 	    black : '#161A1A',
-	    blue: '#00F',
+	    blue: '#3290ff',
 	    gray: '#878585' ,
 	    gray: '#878585' ,
 	    white:'#ffffff'
 	    white:'#ffffff'
 	};
 	};
@@ -91582,11 +91594,15 @@ void main()
 	                
 	                
 	                faceMesh.addEventListener('click', (e)=>{  
 	                faceMesh.addEventListener('click', (e)=>{  
 	                    if(viewer.mainViewport.view.isFlying())return
 	                    if(viewer.mainViewport.view.isFlying())return
+	                    
+	                    let dir = directions[name];
+	                    if(name == 'top'){
+	                        let baseLine = viewer.scene.measurements.find(e=>e.isBaseLine);  //使基准线在俯视图中水平
+	                        let yaw = baseLine ? new Vector2().subVectors(baseLine.points[0], baseLine.points[1]).angle() : 0; 
+	                        dir = baseLine ? {dir: new Vector3(0,0,-1),yaw,pitch: -1.5707963267948966} : directions[name];
+	                    }                        
 	                     
 	                     
-	                    let baseLine = viewer.scene.measurements.find(e=>e.isBaseLine);  //使基准线在俯视图中水平
-	                    let yaw = baseLine ? new Vector2().subVectors(baseLine.points[0], baseLine.points[1]).angle() : 0; 
-	                     
-	                    navCubeViewer.switchView('ortho', baseLine ? {dir: new Vector3(0,0,-1),yaw,pitch: -1.5707963267948966} : directions[name] ,   ()=>{ 
+	                    navCubeViewer.switchView('ortho', dir, ()=>{ 
 	                        faceMesh.material.uniforms.faceColor.value.set(Colors.black);
 	                        faceMesh.material.uniforms.faceColor.value.set(Colors.black);
 	                    }); 
 	                    }); 
 	                    faceMesh.material.uniforms.faceColor.value.set(Colors.blue); 
 	                    faceMesh.material.uniforms.faceColor.value.set(Colors.blue); 
@@ -139371,40 +139387,40 @@ ENDSEC
 	            target.copy(object.getCenter()); 
 	            target.copy(object.getCenter()); 
 	        
 	        
 	              
 	              
-	            
-	            //试试改变位置(方向),直视测量线。能避免倾斜角度造成的非常不居中、以及看不到面的情况 
-	            if(object.points.length>2/*  && window.focusMeasureFaceToIt */){
-	                
-	                let facePlane = object.facePlane || new Plane().setFromCoplanarPoints(...object.points.slice(0,3) );
-	                let normal = facePlane.normal.clone();                
-	                let angle = this.scene.view.direction.angleTo(normal);
-	                let minDiff = MathUtils$1.degToRad(60); 
-	                //console.log('angle',angle)
-	                if(angle>minDiff && angle<Math.PI-minDiff){//当几乎正对时就不执行
-	                    if(angle<Math.PI/2){ //在背面
-	                        normal.negate();
-	                    }
-	                    let dir = new Vector3().subVectors(camera.position, target).normalize(); 
-	                    let newDir = new Vector3().addVectors(dir,normal);//两个角度的中间
-	                    cameraPos.copy(target.clone().add(newDir));
-	                }   
-	            }else if(object.points.length == 2){ //线段
-	                let lineDir = new Vector3().subVectors(object.points[0],object.points[1]).normalize();
-	                let angle = this.scene.view.direction.angleTo(lineDir);
-	                let maxDiff = Math.PI*0.25;// 45度
-	                if(angle<maxDiff || angle>Math.PI-maxDiff){//当几乎正对时就不执行
-	                    if(angle>Math.PI/2){  //令dir和lineDir成钝角
-	                        lineDir.negate();
+	            if(!o.dontChangeCamDir){
+	                //试试改变位置(方向),直视测量线。能避免倾斜角度造成的非常不居中、以及看不到面的情况 
+	                if(object.points.length>2/*  && window.focusMeasureFaceToIt */){
+	                    
+	                    let facePlane = object.facePlane || new Plane().setFromCoplanarPoints(...object.points.slice(0,3) );
+	                    let normal = facePlane.normal.clone();                
+	                    let angle = this.scene.view.direction.angleTo(normal);
+	                    let minDiff = MathUtils$1.degToRad(60); 
+	                    //console.log('angle',angle)
+	                    if(angle>minDiff && angle<Math.PI-minDiff){//当几乎正对时就不执行
+	                        if(angle<Math.PI/2){ //在背面
+	                            normal.negate();
+	                        }
+	                        let dir = new Vector3().subVectors(camera.position, target).normalize(); 
+	                        let newDir = new Vector3().addVectors(dir,normal);//两个角度的中间
+	                        cameraPos.copy(target.clone().add(newDir));
+	                    }   
+	                }else if(object.points.length == 2){ //线段
+	                    let lineDir = new Vector3().subVectors(object.points[0],object.points[1]).normalize();
+	                    let angle = this.scene.view.direction.angleTo(lineDir);
+	                    let maxDiff = Math.PI*0.25;// 45度
+	                    if(angle<maxDiff || angle>Math.PI-maxDiff){//当几乎正对时就不执行
+	                        if(angle>Math.PI/2){  //令dir和lineDir成钝角
+	                            lineDir.negate();
+	                        } 
+	                        let dir = new Vector3().subVectors(camera.position, target).normalize(); 
+	                        let mid = new Vector3().addVectors(lineDir, dir).normalize(); //中间法向量(如果刚好dir和lineDir反向,那得到的为零向量,就不移动了,但一般不会酱紫吧)
+	                        let newDir = new Vector3().addVectors(dir, mid);
+	                        cameraPos.copy(target.clone().add(newDir));
 	                    } 
 	                    } 
-	                    let dir = new Vector3().subVectors(camera.position, target).normalize(); 
-	                    let mid = new Vector3().addVectors(lineDir, dir).normalize(); //中间法向量(如果刚好dir和lineDir反向,那得到的为零向量,就不移动了,但一般不会酱紫吧)
-	                    let newDir = new Vector3().addVectors(dir, mid);
-	                    cameraPos.copy(target.clone().add(newDir));
+	                }else {
+	                    console.error('measure 没有facePlane points点数还不为2?');
 	                } 
 	                } 
-	            }else {
-	                console.error('measure 没有facePlane points点数还不为2?');
-	            } 
-
+	            }
 	             
 	             
 	            position = getPosWithFullBound(object.points, null, target, cameraPos  );
 	            position = getPosWithFullBound(object.points, null, target, cameraPos  );
 	            
 	            
@@ -139639,7 +139655,8 @@ ENDSEC
 	            }, duration);
 	            }, duration);
 	         
 	         
 	        }else if(camera.type == "OrthographicCamera"){   
 	        }else if(camera.type == "OrthographicCamera"){   
-	            viewer.scene.view.moveOrthoCamera(this.mainViewport,  { endPosition:position, target ,
+	            viewer.scene.view.moveOrthoCamera(this.mainViewport,  { endPosition:position, 
+	                target: o.dontChangeCamDir?null:target,
 	                boundSize, 
 	                boundSize, 
 	                endYaw:o.endYaw,  endPitch:o.endPitch,
 	                endYaw:o.endYaw,  endPitch:o.endPitch,
 	                callback:()=>{
 	                callback:()=>{

File diff suppressed because it is too large
+ 1 - 1
public/static/lib/potree/potree.js.map