xzw 2 năm trước cách đây
mục cha
commit
766c0e6d90
3 tập tin đã thay đổi với 26 bổ sung17 xóa
  1. 5 2
      src/ExtendPointCloudOctree.js
  2. 10 7
      src/custom/utils/Common.js
  3. 11 8
      src/custom/viewer/ViewerNew.js

+ 5 - 2
src/ExtendPointCloudOctree.js

@@ -124,6 +124,9 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
         
         this.testMaxNodeCount ++
         viewer.testMaxNodeCount ++
+        
+        //console.log('this.testMaxNodeCount', this.testMaxNodeCount)
+        
         if(this.testMaxNodeCount > 100){
             console.log('testMaxNodeLevel次数超出,强制结束:',this.dataset_id,  this.nodeMaxLevel,  this.nodeMaxLevelPredict.min) 
             this.testMaxNodeLevelDone = 'moreThanMaxCount'
@@ -530,7 +533,7 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
             num_ = Math.pow(num_, 1.05) * 6 
              
             
-            nodeMaxLevel = viewer.testMaxNodeCount > Potree.config.testNodeCount1 ? this.nodeMaxLevel : this.nodeMaxLevelPredict.max //防止刚开始因nodeMaxLevel没涨完,导致过大的点云突然出现
+            nodeMaxLevel = this.testMaxNodeCount > Potree.config.testNodeCount1 ? this.nodeMaxLevel : this.nodeMaxLevelPredict.max //防止刚开始因nodeMaxLevel没涨完,导致过大的点云突然出现
             
             if(sizeFitToLevel || Potree.settings.sizeFitToLevel){//按照点云质量来调整的版本:    近似将pointSizeType换成ADAPTIVE
                 let str = this.temp.pointSize+':'+this.maxLevel+':'+ nodeMaxLevel
@@ -555,7 +558,7 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
             } 
             
         }  
-        //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',this.testMaxNodeCount     /* this.material.spacing */)
         if(size){
             if(Potree.settings.sortCloudMat){//被废弃,不给material分组了
                 this.size = size;this.material.size = size

+ 10 - 7
src/custom/utils/Common.js

@@ -292,21 +292,24 @@ var Common = {
             let item = this.list.find(e=>e.name == name)
             if(!item){  //如果没有该项, 则加入循环
                 let ifContinue = func() 
-                item = {name} 
+                item = {name, func, delayTime} 
                 this.list.push(item);
                     setTimeout(()=>{ 
                         var a = this.list.indexOf(item);
                         this.list.splice(a,1);
+                        let {func, delayTime} = item 
                         if(item.requestUpdate || ifContinue )  this.isWaiting(name, func, delayTime) //循环
                     },delayTime)
                  
             }else{//如果有该项,说明现在请求下一次继续更新
-                /* if(delayTime == 0){//想立刻更新一次
-                    func()
-                }else{ */
-                    item.requestUpdate = true
-                //}
-                
+                //if(delayTime == 0){//想立刻更新一次
+                //    func()
+                //}else{ 
+                    //更新属性  
+                    item.func = func
+                    item.delayTime = delayTime
+                    item.requestUpdate = true 
+                //} 
             }
         },
     }

+ 11 - 8
src/custom/viewer/ViewerNew.js

@@ -730,23 +730,26 @@ export class Viewer extends ViewerBase{
         
         {  
             let updated, zoomLevel
-            this.addEventListener('camera_changed', e => {
-                
-                if(e.viewport == this.mainViewport && (e.changeInfo.positionChanged || zoomLevel != this.images360.zoomLevel)){ 
-                    zoomLevel = this.images360.zoomLevel  //对updateMarkerVisibles有影响
+            let update = (e)=>{ 
+                if(e.type == 'updateModelBound' || e.viewport == this.mainViewport && (e.changeInfo.positionChanged || zoomLevel != this.images360.zoomLevel)){ 
+                    zoomLevel = this.images360.zoomLevel;  //对updateMarkerVisibles有影响
                     //e.changeInfo.positionChanged && shelterHistory.clear() //清空
-                    e.changeInfo.positionChanged && this.updateDatasetAt()  //更新所在数据集  
+                    (e.type == 'updateModelBound' || e.changeInfo.positionChanged) && this.updateDatasetAt()  //更新所在数据集  
                     
                     if(Potree.settings.ifShowMarker && Potree.settings.editType != 'merge'){
                        
-                        Common.intervalTool.isWaiting('updateMarkerVisibles', ()=>{  
+                        Common. intervalTool.isWaiting('updateMarkerVisibles', ()=>{  
                             if(!this.mainViewport.view.isFlying() ){ 
                                 this.updateMarkerVisibles()  
                             }    
                         },500)
                     }
                 }
-            })
+                
+            }
+            this.addEventListener('camera_changed', update) 
+            this.addEventListener('updateModelBound', update) 
+
             this.addEventListener('showMarkerChanged',()=>{
                 this.updatePanosVisibles(this.modules.SiteModel.currentFloor)
                 this.updateMarkerVisibles()
@@ -1259,7 +1262,7 @@ export class Viewer extends ViewerBase{
                 if(!camera_changed && count>50 || Potree.settings.displayMode == 'showPanos'  )return //只有当camera_changed后才继续循环, 除了最开始几次需要连续加载下
                 camera_changed = false
                 count ++;
-                //console.log('testPointcloudsMaxLevel中',count)
+                //console.log('testPointcloudsMaxLevel中', camera.type /* count */)
                 let oldCount = this.testMaxNodeCount
                 var success = true    
                 viewer.scene.pointclouds.forEach(e=>{