|
@@ -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)
|