xzw 2 months ago
parent
commit
149b87f8d2
1 changed files with 16 additions and 4 deletions
  1. 16 4
      src/ExtendPointCloudOctree.js

+ 16 - 4
src/ExtendPointCloudOctree.js

@@ -27,7 +27,7 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
         }
         
         
-        this.maxLevel = Infinity;
+        this.maxLevel_ = Infinity;
         this.temp = { sizeFitToLevel:{}, opacity:{}}//add
         //add 
         
@@ -74,6 +74,17 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
     
     查看box可在potree中开启
      */
+    get maxLevel(){
+        return this.maxLevel_
+    }
+    
+    set maxLevel(level){
+        if(level != this.maxLevel_){
+            this.maxLevel_ = level
+            this.dispatchEvent('maxLevelChanged')
+        }
+         
+    }
      
     updateNodeMaxLevel(e){//目前点云包含node的最高level  
         var level = Math.max(e.level, this.nodeMaxLevel)
@@ -116,7 +127,7 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
         let actMaxLevel = Math.max.apply(null, levels) //实际加载到的最高的node level
         if(actMaxLevel <  this.maxLevel)return true// 还没加载到能加载到的最高。  但在细节设置较低时,排除作用微弱。 
         
-         
+       
         //尝试加载出更高级的level 
         let old = this.maxLevel
         this.maxLevel = 12;
@@ -129,7 +140,8 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
         var visibleNodes2 = this.visibleNodes.map(e=>e.getLevel())
         //console.log('visibleNodes2',visibleNodes2) 
         this.maxLevel = old;
-        
+     
+         Potree.updatePointClouds([this],  viewer.scene.getActiveCamera(), viewer.mainViewport.resolution );
         
         
         this.testMaxNodeCount ++
@@ -142,7 +154,7 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
             this.changePointSize()  //重新更新一下大小。因之前用的是nodeMaxLevelPredict (防止刚开始因nodeMaxLevel没涨完,导致过大的点云突然出现
         }
 
-        
+        //每个到hierarchyStepSize的结点的后代的最高level都不一样, 所以还是要等待,理论上只有全部加载完才能确定
         
         if(this.testMaxNodeCount > 100){
             console.log('testMaxNodeLevel次数超出,强制结束:',this.dataset_id,  this.nodeMaxLevel,  this.nodeMaxLevelPredict.min)