|
@@ -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 = [];
|