xzw 2 年之前
父节点
当前提交
99f71211b3
共有 4 个文件被更改,包括 31 次插入12 次删除
  1. 8 7
      src/ExtendPointCloudOctree.js
  2. 2 2
      src/custom/objects/tool/MeasuringTool.js
  3. 20 3
      src/custom/viewer/ViewerNew.js
  4. 1 0
      src/viewer/ExtendView.js

+ 8 - 7
src/ExtendPointCloudOctree.js

@@ -36,11 +36,11 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
         this.transformInvMatrix = new THREE.Matrix4; 
         this.rotateInvMatrix = new THREE.Matrix4; 
         
-        
+        this.material.spacing = this.pcoGeometry.spacing;//初始化一下 以便于设置pointsize
         this.nodeMaxLevelPredict = this.predictNodeMaxLevel()//预测maxNodeLevel  
         this.testMaxNodeCount = this.testMaxNodeCount2 = 0
         
-        this.material.spacing = this.pcoGeometry.spacing;//初始化一下 以便于设置pointsize
+        
         this._visible = true;
         this.pcoGeometry.addEventListener('updateNodeMaxLevel', this.updateNodeMaxLevel.bind(this))
         this.isPointcloud = true    //add
@@ -188,12 +188,13 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
     //预测可能的nodeMaxLevel:
      
     predictNodeMaxLevel(){//预测maxNodeLevel。  可能只适用于我们相机拍的点云
-        let spacing = {min:0.005, max:0.014};//最小节的两点间的距离  ,获得方法:spacing / Math.pow(2, nodeMaxLevel)。 目前观测的我们自己拍的这个数值的范围大概是这样
-        let min = Math.log2(this.material.spacing / spacing.max); //有见过最大是0.01368 
-        let max = Math.log2(this.material.spacing / spacing.min); //大部分是 0.006
+        //let spacing = {min:0.005, max:0.014};//最小节的两点间的距离  ,获得方法:spacing / Math.pow(2, nodeMaxLevel)。 目前观测的我们自己拍的这个数值的范围大概是这样
+        let spacing = {min:0.006, max:0.0082};   //0.006743906065821648  0.0080347936
+        let min = Math.log2(this.material.spacing / spacing.max); 
+        let max = Math.log2(this.material.spacing / spacing.min); 
         //console.log('predictNodeMaxLevel:', this.name ,  min, max ) 
-    
-    
+        
+        
         return {min, max}
     } 
     

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

@@ -570,10 +570,10 @@ export class MeasuringTool extends THREE.EventDispatcher{
         let click = (e)=>{//一旦点击就立刻增加两marker  
          
             if(ifAtWrongPlace(e))return  
-            if(e.clickElement)return  //如点击label时focusOnObject
+            if(e.clickElement || e.drag.object)return  //如点击label时focusOnObject, 或拖拽marker
              
             
-            if(e.button === THREE.MOUSE.RIGHT)return 
+            if(e.button === THREE.MOUSE.RIGHT )return  
             
             if(isMobile){
                 viewer.controls.setEnable(false)

+ 20 - 3
src/custom/viewer/ViewerNew.js

@@ -3292,9 +3292,18 @@ export class Viewer extends ViewerBase{
                 this.images360.panos.forEach(pano=>{
                     Potree.Utils.updateVisible(pano, 'screenshot', true)
                 }) 
-                viewer.scene.measurements.forEach((e)=>{
-                    Potree.Utils.updateVisible(e, 'screenshot', true)  
-                })
+                if(info.hideMeasures){
+                    viewer.scene.measurements.forEach((e)=>{
+                        Potree.Utils.updateVisible(e, 'screenshot', true)  
+                    }) 
+                }else{
+                    viewer.scene.measurements.forEach((e)=>{
+                        e.edgeLabels.forEach(label=>{
+                            label.backgroundColor.a = label._oldA  ;//透明的抗锯齿渲染会变黑,所以去除透明
+                            label.updateTexture()  
+                        })
+                    })
+                } 
                 
                 Potree.Utils.updateVisible(this.reticule, 'screenshot', true)
                  
@@ -3375,6 +3384,14 @@ export class Viewer extends ViewerBase{
             viewer.scene.measurements.forEach((e)=>{
                 Potree.Utils.updateVisible(e, 'screenshot', false)  
             })
+        }else{
+            viewer.scene.measurements.forEach((e)=>{
+                e.edgeLabels.forEach(label=>{
+                    label._oldA = label.backgroundColor.a
+                    label.backgroundColor.a = 1 ;//透明的抗锯齿渲染会变黑,所以去除透明
+                    label.updateTexture()  
+                })
+            })
         }            
         Potree.Utils.updateVisible(this.reticule, 'screenshot', false)//令reticule不可见 
                                 

+ 1 - 0
src/viewer/ExtendView.js

@@ -208,6 +208,7 @@ class ExtendView extends View {
         let done = ()=>{ //一定要旋转和位移都结束了才能执行
             
             let f = ()=>{
+                this.position.copy(endPosition)  //因为延时1后control的update会导致位置改变
                 info.callback && info.callback()     
                 this.dispatchEvent('flyingDone')  
                 viewer.dispatchEvent('content_changed')