xzw 10 月之前
父节点
当前提交
5fc02eb1a1
共有 3 个文件被更改,包括 28 次插入18 次删除
  1. 25 15
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 2 2
      src/sdk/cover/index.js

+ 25 - 15
public/lib/potree/potree.js

@@ -21942,7 +21942,8 @@
 	      //model.lastMatrixWorld = model.matrixWorld.clone()
 	      model.lastMatrixWorld = new Matrix4();
 	      MergeEditor.modelTransformCallback(model, true);
-	      prop.scale != void 0 && model.isPointcloud && model.changePointSize();
+	      prop.scale != void 0 && model.isPointcloud && model.changePointSize(); //有的被缩放的很小导致testMaxNodeLevel时距离较远时被return 但点云过大急需changesize
+
 	      done(model); // 先发送成功,因为2d界面会随机执行changePosition等初始化,然后这边再将模型移到中心地面上
 
 	      if (prop.isFirstLoad) {
@@ -35709,7 +35710,7 @@
 
 	    var levels = this.visibleNodes.map(e => e.getLevel());
 	    var actMaxLevel = Math.max.apply(null, levels); //实际加载到的最高的node level
-	    if (actMaxLevel < this.maxLevel) return true; // 还没加载到能加载到的最高。  但在细节设置较低时,排除作用微弱。
+	    if (actMaxLevel < this.maxLevel) return true; // 还没加载到能加载到的最高。  但在细节设置较低时,排除作用微弱。 
 
 	    //尝试加载出更高级的level 
 	    var old = this.maxLevel;
@@ -36088,7 +36089,7 @@
 	  // 设置点大小
 	  changePointSize(num, sizeFitToLevel) {
 	    var size, nodeMaxLevel;
-	    console.error('changePointSize', num);
+	    //console.error('changePointSize',num)
 	    var dontRender = viewer.dealBeforeRender;
 	    if (this.material.pointSizeType != PointSizeType.ATTENUATED) {
 	      num && (size = num / Potree.config.material.realPointSize / 1.3);
@@ -76193,16 +76194,19 @@
 	      });
 	    };
 	    var scroll = e => {
-	      var _viewer$inputHandler$, _viewer$inputHandler$2, _viewer$modules$Merge;
+	      var _viewer$inputHandler$, _viewer$inputHandler$2;
 	      if (!this.enabled) return;
 	      var resolvedRadius = this.currentViewport.view.radius + this.radiusDelta;
-	      var model = ((_viewer$inputHandler$ = viewer.inputHandler.intersect) === null || _viewer$inputHandler$ === void 0 ? void 0 : _viewer$inputHandler$.model) || ((_viewer$inputHandler$2 = viewer.inputHandler.intersect) === null || _viewer$inputHandler$2 === void 0 ? void 0 : _viewer$inputHandler$2.pointcloud) || ((_viewer$modules$Merge = viewer.modules.MergeEditor) === null || _viewer$modules$Merge === void 0 ? void 0 : _viewer$modules$Merge.selected);
-	      var min = 0.1;
-	      if (model) {
-	        min *= model.scale.x;
+
+	      /* let model = viewer.inputHandler.intersect?.model || viewer.inputHandler.intersect?.pointcloud || viewer.modules.MergeEditor?.selected;  
+	      let min = 0.1
+	      if(model){
+	          min *= model.scale.x            //有的模型太小。注意:如果没有选中模型且没有intersect会无法前进是会有点怪
 	      }
-	      if (resolvedRadius < min && e.delta > 0) return; //防止缩放太小,导致很慢
+	      if(resolvedRadius < min && e.delta>0)return; //防止缩放太小,导致很慢 */
 	      this.radiusDelta += -e.delta * resolvedRadius * 0.1;
+	      var model = ((_viewer$inputHandler$ = viewer.inputHandler.intersect) === null || _viewer$inputHandler$ === void 0 ? void 0 : _viewer$inputHandler$.object) || ((_viewer$inputHandler$2 = viewer.inputHandler.intersect) === null || _viewer$inputHandler$2 === void 0 ? void 0 : _viewer$inputHandler$2.pointcloud);
+	      model && this.updateRadiusByModel(model, viewer.inputHandler.intersect.location.distanceTo(this.currentViewport.view.position));
 	      this.stopTweens();
 	    };
 	    var dblclick = e => {
@@ -76385,18 +76389,24 @@
 	    I = I.location;
 	    if (!I || !object) return;
 	    var dis = this.currentViewport.view.position.distanceTo(I);
-	    var bound = object.boundingBox.clone().applyMatrix4(object.matrixWorld);
-	    var size = bound.getSize(new Vector3());
-	    var len = size.length();
-	    var minDis = 3 * object.scale.x;
-	    var distance = MathUtils.clamp(dis, 0.1 * object.scale.x, Math.max(len * 0.1, minDis));
-	    minRadius = distance;
+	    var distance = this.updateRadiusByModel(object, dis);
 	    viewer.focusOnObject({
 	      position: I
 	    }, 'point', null, {
 	      distance
 	    });
 	  }
+	  updateRadiusByModel(object) {
+	    var dis = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;
+	    //鼠标到点的距离,如果没有就给个几率最大的距离
+	    var bound = object.boundingBox.clone().applyMatrix4(object.matrixWorld);
+	    var size = bound.getSize(new Vector3());
+	    var len = size.length();
+	    var distance = MathUtils.clamp(dis, 0.8 * object.scale.x, Math.max(len * 0.1, 3 * object.scale.x));
+	    minRadius = distance;
+	    //console.log('updateRadiusByModel',distance)
+	    return distance;
+	  }
 	  stopTweens() {
 	    this.tweens.forEach(e => e.stop());
 	    this.tweens = [];

文件差异内容过多而无法显示
+ 1 - 1
public/lib/potree/potree.js.map


+ 2 - 2
src/sdk/cover/index.js

@@ -991,7 +991,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
                 enterScaleSet() {//设置比例
                     let bus = new mitt()
                     let length, measureBuilded;
-                    viewer.outlinePass.selectedObjects = []
+                    //viewer.outlinePass.selectedObjects = []
                     if (!Potree.Utils.isInsideFrustum(model.boundingBox.clone().applyMatrix4(model.matrixWorld), viewer.scene.getActiveCamera())) {
                         MergeEditor.focusOn(model, 600)
                     }
@@ -1067,7 +1067,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
                     }
 
 
-                    viewer.outlinePass.selectedObjects = [model];
+                    //viewer.outlinePass.selectedObjects = [model];
                     MergeEditor.getAllObjects().forEach(m => {//恢复其他的模型
                         if (m != model) Potree.Utils.updateVisible(m, 'enterScaleSet', true)
                     })