Selaa lähdekoodia

测量线标签和箭头换样式、全景模式遮罩去除深度图(因为不准)

xzw 1 vuosi sitten
vanhempi
commit
47f0249a0e

+ 4 - 3
libs/three.js/lines/LineMaterial.js

@@ -935,9 +935,10 @@ class LineMaterial extends ShaderMaterial {
         var viewport = e.viewport || viewer.mainViewport;
         var camera = viewport.camera;
         
-        let hasDepth = this.useDepth/*  && camera.isPerspectiveCamera */ && 
-                (Potree.settings.pointEnableRT || Potree.settings.displayMode == 'showPanos' || viewer.useEDL)
-        
+        //深度图不准确
+        let hasDepth = this.useDepth && Potree.settings.displayMode == 'showPointCloud' &&
+                (Potree.settings.pointEnableRT || viewer.useEDL)
+         
         this.setRealDepth(hasDepth)
         
         if(hasDepth){

BIN
resources/textures/arrows_l_32.png


+ 7 - 2
src/custom/materials/DepthBasicMaterial.js

@@ -171,9 +171,14 @@ export default class DepthBasicMaterial extends THREE.ShaderMaterial{
         var viewport = e.viewport || viewer.mainViewport;
         var camera = viewport.camera;
         
-        let hasDepth = this.useDepth /* && camera.isPerspectiveCamera */ && 
+        /* let hasDepth = this.useDepth && 
                 (Potree.settings.pointEnableRT || Potree.settings.displayMode == 'showPanos' || viewer.useEDL)
-        
+         */
+        //深度图不准确 
+        let hasDepth = this.useDepth && Potree.settings.displayMode == 'showPointCloud' &&
+                (Potree.settings.pointEnableRT || viewer.useEDL)
+         
+         
         this.setRealDepth(hasDepth)
         
         if(hasDepth){

+ 6 - 6
src/custom/materials/ModelTextureMaterial.js

@@ -382,17 +382,17 @@ export default class ModelTextureMaterial extends THREE.RawShaderMaterial {
         this.pano0 = pano0
         this.pano1 = pano1
         
-        this.updateDepthTex(pano0)  
+        /* this.updateDepthTex(pano0)  
         this.updateDepthTex(pano1)
-        
+         */
         
         //console.log('setProjectedPanos', pano0&&pano0.id, pano1&&pano1.id)
         this.needsUpdate = true;
  	}
     
+    //深度图不准
     
-    
-    updateDepthTex(pano, extra){
+    /* updateDepthTex(pano, extra){
         if( !Potree.settings.useDepthTex || !pano || !pano.depthTex || pano!=this.pano0 && pano!=this.pano1)return
         //console.log('updateDepthTex', pano.id,  this.pano0 && this.pano0.id,  this.pano1 && this.pano1.id)
         
@@ -408,7 +408,7 @@ export default class ModelTextureMaterial extends THREE.RawShaderMaterial {
             this.uniforms.ceilHeight1.value = this.pano1.getCeilHeight() - this.pano1.position.z  
         } 
         this.updateDepthTexEnable()
-    }
+    } 
     
     updateDepthTexEnable(){
         let hasDepthTex = this.pano0 && this.pano1 && this.pano0.pointcloud.hasDepthTex && this.pano1.pointcloud.hasDepthTex  //暂时不知道一个有图一个没图怎么写所以
@@ -416,7 +416,7 @@ export default class ModelTextureMaterial extends THREE.RawShaderMaterial {
         Potree.Utils.addOrRemoveDefine(this, 'hasDepthTex', hasDepthTex?'add':'remove' )
          
         
-    }
+    }*/
     
     /* EnableDepthTex(){//开启DepthTex
         if(this.defines['hasDepthTex']){

+ 1 - 1
src/custom/modules/panos/Images360.js

@@ -805,7 +805,7 @@ export class Images360 extends THREE.EventDispatcher{
                     }
                     done(true);
                    
-                    this.updateDepthTex(this.currentPano)
+                    //this.updateDepthTex(this.currentPano)
                     this.updateProjectedPanos()//dispose
                     
                     

+ 124 - 56
src/custom/objects/Sprite.js

@@ -15,10 +15,16 @@ export default class Sprite extends THREE.Mesh{
         this.dontFixOrient = options.dontFixOrient
         this.options = options
         this.lineDir = options.lineDir
+        this.position.y = options.disToLine || 0 //离线距离
+        
         
         this.root.matrixAutoUpdate = false;
         this.matrixMap = new Map()
         this.name = options.name || 'sprite'
+        //if(options.disToLine)console.log('disToLine',this.name)
+        
+        
+        
         this.useViewport = null
         this.viewports = options.viewports//指定更新的viewports
         this.visible_ = true
@@ -99,6 +105,13 @@ export default class Sprite extends THREE.Mesh{
         return v;
     }
     
+    
+    
+    
+    
+    
+    
+    
     update(e={}){
         if(!e.viewport){
             let viewports = this.viewports || viewer.viewports
@@ -116,72 +129,127 @@ export default class Sprite extends THREE.Mesh{
         //rotation
         
         if(!this.dontFixOrient){        //orthoCamera一般要加dontFixOrient 
-            let orient2d
-        
-            if(this.lineDir){
-                this.root.updateMatrix();//先更新,getWorldPosition才能得到正确的
-                this.root.updateMatrixWorld(true)
-                let center = this.root.getWorldPosition(new THREE.Vector3())
-                //由于两个端点容易在屏幕外,所以使用center和center加dir
-                let lineDir = this.lineDir.clone();
+            let measure = this.root.measure
+            let lineDir = measure && measure.lineDir && measure.lineDir.clone()  
+            let orient2dAngle
+            
+            
+
+            if(lineDir){
+                let orient2dInfo = measure.orient2dInfo
                 
                 
-                let r1 = Potree.Utils.getPos2d(center, camera, viewer.renderArea, e.viewport); 
-                if(!r1.trueSide)return  Potree.Utils.updateVisible(this, 'unableCompute', false);// 但这句会使realVisible为false从而无法更新//console.error('!r1.trueSide') //中心点如果在背面直接不渲染了
-                    
-                let r2, point2
                 
-                let p2State = '', len=1,  p2StateHistory = []
-                while(p2State != 'got' && p2StateHistory.length<10){ 
-                    point2 = center.clone().add(lineDir.multiplyScalar(len));
-                     
-                    r2 = Potree.Utils.getPos2d(point2, camera, viewer.renderArea, e.viewport);  
-                    if(!r2.trueSide){ //很少遇到点2在背面的
-                        if(!p2StateHistory.includes('tooLong-reverse')){
-                            p2State = 'tooLong-reverse'  //先尝试反向
-                            len = -len
+                let getOrient2dAngle = ()=>{
+                
+                    this.root.updateMatrix();//先更新,getWorldPosition才能得到正确的
+                    this.root.updateMatrixWorld(true)
+                    let center = this.root.getWorldPosition(new THREE.Vector3())
+                    //由于两个端点容易在屏幕外,所以使用center和center加dir
+                    
+                    
+                    
+                    let r1 = Potree.Utils.getPos2d(center, camera, viewer.renderArea, e.viewport); 
+                    if(!r1.trueSide)return  Potree.Utils.updateVisible(this, 'unableCompute', false);// 但这句会使realVisible为false从而无法更新//console.error('!r1.trueSide') //中心点如果在背面直接不渲染了
+                        
+                    let r2, point2
+                    
+                    let p2State = '', len=1,  p2StateHistory = []
+                    while(p2State != 'got' && p2StateHistory.length<10){ 
+                        point2 = center.clone().add(lineDir.multiplyScalar(len));
+                         
+                        r2 = Potree.Utils.getPos2d(point2, camera, viewer.renderArea, e.viewport);  
+                        if(!r2.trueSide){ //很少遇到点2在背面的
+                            if(!p2StateHistory.includes('tooLong-reverse')){
+                                p2State = 'tooLong-reverse'  //先尝试反向
+                                len = -len
+                            }else{
+                                p2State = 'tooLong'
+                                len = len / 2
+                            }
                         }else{
-                            p2State = 'tooLong'
-                            len = len / 2
-                        }
-                    }else{
-                        let dis = r2.pos.distanceTo(r1.pos)
-                        if(math.closeTo(dis,0)){
-                            //console.log('dis == 0') 
-                            Potree.Utils.updateVisible(this, 'unableCompute', false)
-                            return
-                            break
+                            let dis = r2.pos.distanceTo(r1.pos)
+                            if(math.closeTo(dis,0)){
+                                //console.log('dis == 0') 
+                                Potree.Utils.updateVisible(this, 'unableCompute', false)
+                                return
+                                break
+                            } 
+                            if(dis<10 && !p2StateHistory.includes('tooLong')){//和r1的屏幕距离太近,要加长,否则精度过低
+                                p2State = 'tooShort'
+                                len = 100/dis * len  
+                            }else{ 
+                                p2State = 'got'; break;
+                            }
                         } 
-                        if(dis<10 && !p2StateHistory.includes('tooLong')){//和r1的屏幕距离太近,要加长,否则精度过低
-                            p2State = 'tooShort'
-                            len = 100/dis * len  
-                        }else{ 
-                            p2State = 'got'; break;
-                        }
-                    } 
-                    p2StateHistory.push(p2State) 
+                        p2StateHistory.push(p2State) 
+                    }
+                    //console.log(p2StateHistory,len)
+                    
+                    if(!r2.trueSide){
+                        return  Potree.Utils.updateVisible(this, 'unableCompute', false)//, console.log('  !r2.trueSide', )
+                    }
+                     
+                    
+                    
+                    let orient2dInfo = {} 
+                    let p1 = r1.pos,  p2 = r2.pos 
+                    if(p2StateHistory.filter(e=>e == 'tooLong-reverse').length%2 == 1){//反,for marker
+                        p2 = r1.pos,  p1 = r2.pos
+                    }
+                    
+                    
+                    let vec = new THREE.Vector2().subVectors(p1,p2);
+                    orient2dAngle = -vec.angle() //根据测量线在屏幕上的角度在旋转label,使之和屏幕上的二维线平行。
+                    if(p1.x < p2.x){ 
+                        orient2dInfo.reverse = true
+                    }
+                    
+                    //console.log(this.parent.text, THREE.Math.radToDeg(angle), p1.x < p2.x   )
+                   
+                    orient2dInfo.orient2dAngle = orient2dAngle
+                    measure.orient2dInfo = orient2dInfo
+                    
+                    return orient2dInfo
+                    
                 }
-                //console.log(p2StateHistory,len)
                 
-                if(!r2.trueSide){
-                    return  Potree.Utils.updateVisible(this, 'unableCompute', false)//, console.log('  !r2.trueSide', )
+                Potree.Utils.updateVisible(this, 'unableCompute', true) 
+                
+                if(!orient2dInfo){
+                    orient2dInfo = getOrient2dAngle()
                 }
-                 
-                Potree.Utils.updateVisible(this, 'unableCompute', true)
-                let p1 = r1.pos,  p2 = r2.pos
-                let vec = new THREE.Vector2().subVectors(p1,p2);
-                let angle = -vec.angle() //根据测量线在屏幕上的角度在旋转label,使之和屏幕上的二维线平行。
-                if(p1.x < p2.x) angle += Math.PI  //避免字是倒着的情况
-                 
-                orient2d = new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(0,0,1),  angle)
-                //console.log(this.parent.text, THREE.Math.radToDeg(angle), p1.x < p2.x   )
-            }
-        
+                
+                if(orient2dInfo){
+                    orient2dAngle = orient2dInfo.orient2dAngle
+                    if(this.root.name == 'edgeLabel'){  
+                        if(orient2dInfo.reverse){
+                            orient2dAngle += Math.PI  //避免字是倒着的情况  
+                        }  
+                    }else if(this.root.name == "measure_point"){   //箭头
+                        let index = this.measure.markers.indexOf(this)
+                        
+                        if(index == 1){
+                            orient2dAngle -= Math.PI 
+                        }   
+                    } 
+                }else{
+                    Potree.Utils.updateVisible(this, 'unableCompute', false)
+                }
+                
+                
+                
+            } 
+                
+                
+            
+            
             let parentQua = this.root.parent.getWorldQuaternion(new THREE.Quaternion)
             this.root.quaternion.multiplyQuaternions(parentQua.invert(),camera.quaternion)    //乘上parentQua.invert()是为了中和掉父结点的qua,使只剩下camera.quaternion
         
-            if(this.lineDir){ 
-                this.root.quaternion.multiply(orient2d) 
+            if(orient2dAngle){ 
+                let qua = new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(0,0,1),  orient2dAngle) 
+                this.root.quaternion.multiply(qua) 
             }
         
         }
@@ -218,7 +286,7 @@ export default class Sprite extends THREE.Mesh{
         this.root.updateMatrix();
         this.root.updateMatrixWorld(true)
         this.matrixMap.set(e.viewport, this.root.matrix.clone())
-        
+        this.needsUpdate = false
         this.useViewport = e.viewport
     }
     

+ 1 - 2
src/custom/objects/TextSprite.js

@@ -38,8 +38,7 @@ export class TextSprite extends THREE.Object3D{
 		this.borderRadius = options.borderRadius || 6;
         this.margin = options.margin
         if(options.text != void 0)this.setText(options.text)
-        this.name = options.name 
-         
+        this.name = options.name  
 		//this.setText(text);
         
         

+ 84 - 47
src/custom/objects/tool/Measure.js

@@ -22,29 +22,43 @@ var markerMats = {}
 var lineMats   ;  
 var planeMats 
  
+ 
+ 
 const lineDepthInfo = {
-    clipDistance : 4,//消失距离
-    occlusionDistance: 1,//变为backColor距离 
+    clipDistance :  4,//消失距离
+    occlusionDistance:  1,//变为backColor距离 
 }
-const LabelDepthInfo = {
-    clipDistance : 6,//消失距离
-    occlusionDistance: 2,//变为backColor距离 
+const planeDepthInfo = {
+    clipDistance :  30,//消失距离
+    occlusionDistance:  4,//变为backColor距离 
+    maxOcclusionFactor:0.3,
+    maxClipFactor:0.1
 }  
-/* const LabelDepthInfo = {
-    clipDistance : 0.1,//消失距离
-    occlusionDistance: 0.1,//变为backColor距离 
-} */
+ 
+ 
 
 const markerSizeInfo = {
     minSize : 30*2 ,  maxSize : 65*2,   nearBound : 0.2, farBound : 4,
 }
 const labelSizeInfo = {width2d:190}
 const mainLabelProp = { 
-    backgroundColor: {r: defaultColor.r*255, g: defaultColor.g*255, b: defaultColor.b*255, a:config.measure.default.opacity},
+    //backgroundColor: {r: defaultColor.r*255, g: defaultColor.g*255, b: defaultColor.b*255, a:config.measure.default.opacity},
+    backgroundColor: {r: 0, g: 0, b: 0, a:0}, 
     textColor: {r: textColor.r*255, g: textColor.g*255, b: textColor.b*255, a: 1.0},
+    textBorderColor: {r:255, g: 255, b:255, a: 1.0},
+    textBorderThick:3,
     fontsize: 14, 
-    useDepth : true , borderRadius : 12, margin:{x:20,y:4},
+    borderRadius : 12, margin:{x:20,y:4},
     renderOrder : 5, pickOrder:5, 
+    disToLine:-0.15,
+    
+    useDepth : true , 
+    // 2023.10 尽量不让数字被挡住
+    clipDistance : 50,//消失距离
+    occlusionDistance: 10,//变为backColor距离 
+    maxOcclusionFactor:0.2,
+    maxClipFactor:0.1
+    
 }
   
  
@@ -53,7 +67,7 @@ const subLabelProp = {
     backgroundColor: {r: 255, g: 255, b: 255, a:config.measure.default.opacity},
     textColor: {r: 0.3, g: 0.3, b:0.3, a: 1.0},
     fontsize:12, borderRadius : 12,  margin:{x:20,y:4},
-    renderOrder : 4, pickOrder:4,
+    renderOrder : 4, pickOrder:4, 
 }
 
 
@@ -263,15 +277,19 @@ export class Measure extends ctrlPolygon{
             if(this.showDistances || this.labelText){ // edge labels
                 let edgeLabel = this.edgeLabels[index];
                 let distance = this.labelText || point.distanceTo(nextPoint)
-                edgeLabel.shouldVisi = this.labelText || (index < lastIndex || this.isRect || this.closed && !this.isNew ) && distance>0 
+                edgeLabel.shouldVisi = (this.labelText || distance>0) && (index < lastIndex || this.isRect || this.closed && !this.isNew ) 
                 /* this.closed || */edgeLabel.setVisible(edgeLabel.shouldVisi)  
-                edgeLabel.sprite.lineDir = new THREE.Vector3().subVectors(point,nextPoint).normalize() //[point,nextPoint]
-                if(edgeLabel.visible){
+                if(edgeLabel.shouldVisi){
+                    this.lineDir = new THREE.Vector3().subVectors(point,nextPoint).normalize() //[point,nextPoint]
+                   
                     setEdgeLabel(edgeLabel,point,nextPoint,distance)
-                }  
+                    
+                }
+                
             }
-        } 
-
+        }  
+        
+        
         if(this.measureType == 'Distance' && this.points.length>1){//设置水平垂直辅助线
             var pTop, pBtm
             if(this.points[0].z > this.points[1].z ){
@@ -314,9 +332,7 @@ export class Measure extends ctrlPolygon{
                 this.areaLabel.setText(msg);
                 this.areaLabel.setVisible(true)
             //}  
-        } 
-             
-         
+        }  
 		
 	};
 
@@ -324,21 +340,33 @@ export class Measure extends ctrlPolygon{
 
     setEdgeLabelPos(label,p1,p2){ //调整label的位置,使倾斜后看起来在线的中心,而不要挡住端点
         let center = new THREE.Vector3().addVectors(p1,p2).multiplyScalar(0.5);  
-         
-        if(!label.sprite.lineDir || viewer.mainViewport.camera.type == 'OrthographicCamera'){
-            label.setPos(center)  
-        }else{ 
-            let eyePos = viewer.mainViewport.camera.position;
-            let dir = viewer.mainViewport.view.direction //new THREE.Vector3().subVectors(center,eyePos).normalize()
-            let vec = label.sprite.lineDir
-            let cos = dir.dot(vec)  
+        
+        if(this.lineDir){
+            if(viewer.mainViewport.camera.type == 'OrthographicCamera'){
+                label.setPos(center) 
+            }else{
+                let eyePos = viewer.mainViewport.camera.position;
+                let dir = viewer.mainViewport.view.direction //new THREE.Vector3().subVectors(center,eyePos).normalize()
+                //let vec = label.sprite.lineDir
+                let cos = dir.dot(this.lineDir)  
+                
+                let efficiency = 0.35; // 0-1  数值越高,r越容易接近1或-1,label越容易在倾斜后靠近近端点。 
+                let r = 0.5*efficiency*cos + 0.5
+                 
+                center = p1.clone().multiplyScalar(1-r).add(p2.clone().multiplyScalar(r)); //label在线上滑动,使尽量保持在视觉中心
+                label.setPos(center)
+            }
+             
+            
+            //归零
+            this.orient2dInfo = null
+            this.markers.forEach(e=>e.needsUpdate=true)
+        }else{
+            
+            label.setPos(center)   
+        }
+     
             
-            let efficiency = 0.35; // 0-1  数值越高,r越容易接近1或-1,label越容易在倾斜后靠近近端点。 
-            let r = 0.5*efficiency*cos + 0.5
-            //console.log(r,    cos )
-            center = p1.clone().multiplyScalar(1-r).add(p2.clone().multiplyScalar(r)); //label在线上滑动,使尽量保持在视觉中心
-            label.setPos(center)  
-        } 
     }
 
     
@@ -355,7 +383,7 @@ export class Measure extends ctrlPolygon{
         marker.addEventListener('drop',(e)=>{
             viewer.inputHandler.dispatchEvent({type: 'isMeasuring',  v:false, cause:'stopDragging'}  )
         })
-         
+        marker.measure = this
         let edge
 		{ // edges 
             edge = LineDraw.createFatLine( [ ],{material:this.getLineMat('edgeDefault')} ) 
@@ -381,6 +409,7 @@ export class Measure extends ctrlPolygon{
         
 		if(this.showEdges){ // edge labels  
             const edgeLabel = this.createEdgeLabel('edgeLabel', !this.closed) 
+            edgeLabel.measure = this
 			this.edgeLabels.push(edgeLabel); 
 			 
 		}
@@ -539,15 +568,18 @@ export class Measure extends ctrlPolygon{
     
     setLabelHightState(label, state){ 
         if(state){  
-            let color = new THREE.Color(Potree.config.measure.highlight.color)
-            label.backgroundColor = {r:255*color.r, g:255*color.g, b:255*color.b, a:config.measure.highlight.opacity},
+            let color = new THREE.Color(Potree.config.measure.highlight.color) 
+            //label.sprite.material.opacity = config.measure.highlight.opacity
+            
+            //label.backgroundColor = {r:255*color.r, g:255*color.g, b:255*color.b, a:config.measure.highlight.opacity},
             //label.backgroundColor.a = config.measure.highlight.opacity
             label.sprite.material.useDepth = false;
             //label.textColor = {r: this.color.r*255, g:  this.color.g*255, b:  this.color.b*255, a: 1} 
         }else{
-            label.backgroundColor = {r: this.color.r*255, g:  this.color.g*255, b:  this.color.b*255, a:config.measure.default.opacity}
+            //label.backgroundColor = {r: this.color.r*255, g:  this.color.g*255, b:  this.color.b*255, a:config.measure.default.opacity}
             //label.backgroundColor.a = config.measure.default.opacity
             label.sprite.material.useDepth = true
+            //label.sprite.material.opacity = 0.98
             //label.textColor = {r: 255, g: 255, b: 255, a: 1} 
             
         }  
@@ -734,7 +766,7 @@ export class Measure extends ctrlPolygon{
     
     createEdgeLabel(name, hasHoverEvent){
         
-        mainLabelProp.backgroundColor = {r: this.color.r*255, g: this.color.g*255, b: this.color.b*255, a:config.measure.default.opacity} 
+        //mainLabelProp.backgroundColor = {r: this.color.r*255, g: this.color.g*255, b: this.color.b*255, a:config.measure.default.opacity} 
             
         
         const edgeLabel = new TextSprite(
@@ -753,9 +785,13 @@ export class Measure extends ctrlPolygon{
             edgeLabel.addEventListener('click',()=>{
                 if(!this.isNew) this.focus()
             })
+            //edgeLabel.sprite.material.opacity = config.measure.default.opacity
         }
         edgeLabel.visible = false
         edgeLabel.sprite.material.depthTestWhenPick = true
+        
+       
+        
         Potree.Utils.setObjectLayers(edgeLabel, 'measure' )
         this.add(edgeLabel)
         return edgeLabel
@@ -803,7 +839,8 @@ export class Measure extends ctrlPolygon{
             markerMats['default' + color] = new DepthBasicMaterial($.extend({},lineDepthInfo,{ 
                 transparent: !0,
                 opacity: 1,
-                map: texLoader.load(Potree.resourcePath+'/textures/pic_point_s32.png' ), 
+                //map: texLoader.load(Potree.resourcePath+'/textures/pic_point_s32.png' ), 
+                map: texLoader.load(Potree.resourcePath+'/textures/arrows_l_32.png' ),
                 useDepth:true,
                 replaceColor:this.color,
                 beReplacedRed: 0.184,  //0.18431372
@@ -812,7 +849,7 @@ export class Measure extends ctrlPolygon{
             markerMats['select' + color] = new DepthBasicMaterial($.extend({},lineDepthInfo,{ 
                 transparent: !0,
                 opacity: 1,
-                map: texLoader.load(Potree.resourcePath+'/textures/pic_point32.png' ), 
+                map: texLoader.load(Potree.resourcePath+'/textures/arrows_l_32.png' ), 
                 //useDepth:true ,
                 replaceColor:  new THREE.Color(Potree.config.measure.highlight.color) ,
                 beReplacedRed: 0.184,   //0.18431372
@@ -843,7 +880,7 @@ export class Measure extends ctrlPolygon{
     
         let color = this.color.getHexString()
         if(!lineMats['edgeDefault'+color]){
-            lineMats['edgeDefault'+color] =  LineDraw.createFatLineMat({
+            lineMats['edgeDefault'+color] = LineDraw.createFatLineMat(Object.assign({}, lineDepthInfo, {
                 color: this.color, 
                 lineWidth: config.measure.lineWidth,
                 useDepth :true,
@@ -854,15 +891,15 @@ export class Measure extends ctrlPolygon{
                 transparent: true,
                 opacity: config.measure.default.opacity,
                 depthTestWhenPick:true,
-            }) 
-            lineMats['edgeSelect'+color] = LineDraw.createFatLineMat({
+            }))
+            lineMats['edgeSelect'+color] = LineDraw.createFatLineMat(Object.assign({}, lineDepthInfo,{
                 color:  Potree.config.measure.highlight.color ,
                 dashSize: 0.5, 
                 gapSize: 0.2, 
                 lineWidth: config.measure.lineWidth  ,
                 transparent: true,
                 opacity: config.measure.highlight.opacity
-            }) 
+            })) 
         }
     
     
@@ -878,7 +915,7 @@ export class Measure extends ctrlPolygon{
     
     createAreaPlane(){
         planeMats || (planeMats = { 
-            default: new DepthBasicMaterial( $.extend({},LabelDepthInfo,{
+            default: new DepthBasicMaterial( $.extend({},planeDepthInfo,{
                 color:color,
                 side:THREE.DoubleSide,
                 opacity:0.2,

+ 2 - 0
src/custom/objects/tool/MeasuringTool.js

@@ -231,6 +231,8 @@ export class MeasuringTool extends THREE.EventDispatcher{
                 }
             } 
             
+            
+            
         })
         
         

+ 2 - 2
src/custom/settings.js

@@ -161,7 +161,7 @@ const config = {//配置参数   不可修改
         color:'#00C8AF',
         default:{
             color:"#2F8FFF",//"#00c7b2",
-            opacity:0.8
+            opacity:0.85
         },
         highlight:{
             color:"#ff8f28",//"#00c7b2",  (255, 143, 40, 1
@@ -176,7 +176,7 @@ const config = {//配置参数   不可修改
          
         lineWidth: 3,
        
-        textColor: "#FFFFFF"
+        textColor: "#000000" //"#FFFFFF"
         
     },
     material:{//初始化

+ 1 - 1
src/navigation/InputHandlerNew.js

@@ -1367,7 +1367,7 @@ export class InputHandler extends THREE.EventDispatcher {
                 let material = e.object.material
                 
                 return e.object.pickDontCheckDis || ( material.depthTest == false || material.depthWrite == false) && !material.realUseDepth  //!material.depthTestWhenPick
-                 || ( material.useDepth ? e.distance < this.intersect.distance + material.uniforms.occlusionDistance.value : e.distance < this.intersect.distance )
+                 || ( material.useDepth ? e.distance < this.intersect.distance + material.uniforms.clipDistance.value : e.distance < this.intersect.distance )
             }) 
         }
      

+ 8 - 3
src/viewer/EDLRendererNew.js

@@ -191,9 +191,14 @@ export class EDLRenderer{//Eye-Dome Lighting 眼罩照明
          
         const viewer = this.viewer; 
 		let camera = params.camera ? params.camera : viewer.scene.getActiveCamera();
-        let rtEDL = (Potree.settings.pointEnableRT || Potree.settings.displayMode == 'showPanos' || viewer.useEDL) && 
-                    Features.EXT_DEPTH.isSupported() /* && camera.type != "OrthographicCamera"  */&& !params.dontRenderRtEDL && (params.rtEDL || this.getRtEDL(params.viewport))  // 平面相机不用depthTex直接打开depthTest?且不使用edl
-        let useEDL = viewer.useEDL && rtEDL && Potree.settings.displayMode != 'showPanos'
+       /*  let rtEDL = (Potree.settings.pointEnableRT || Potree.settings.displayMode == 'showPanos' || viewer.useEDL) && 
+                    Features.EXT_DEPTH.isSupported() && !params.dontRenderRtEDL && (params.rtEDL || this.getRtEDL(params.viewport))  // 平面相机不用depthTex直接打开depthTest?且不使用edl
+        */
+        let rtEDL = (Potree.settings.pointEnableRT || viewer.useEDL) && Potree.settings.displayMode == 'showPointCloud'
+                    && Features.EXT_DEPTH.isSupported() /* && camera.type != "OrthographicCamera"  */&& !params.dontRenderRtEDL && (params.rtEDL || this.getRtEDL(params.viewport))  // 平面相机不用depthTex直接打开depthTest?且不使用edl
+          
+         
+         let useEDL = viewer.useEDL && rtEDL && Potree.settings.displayMode != 'showPanos'
         
         let target = params.target || null