|
@@ -78278,6 +78278,7 @@
|
|
|
*
|
|
|
*/
|
|
|
var standartMinRadius = 2;
|
|
|
+ window.camRatio = 1850;
|
|
|
class OrbitControls$1 extends EventDispatcher {
|
|
|
constructor(viewer, viewport) {
|
|
|
super();
|
|
@@ -78541,9 +78542,10 @@
|
|
|
x,
|
|
|
y
|
|
|
} = Potree.Utils.getPointerPosAtHeight(0, viewer.inputHandler.pointer);
|
|
|
- I = new Vector3(x, y, 0); //地面交点
|
|
|
+ I = new Vector3(x, y, 0); //地面交点(如果没有显示地面网格很可能模型跑到地面之下怎么办,ground不再是0的高度,怎么办。主要是测试时乱放模型。)
|
|
|
}
|
|
|
- var dis = this.currentViewport.view.position.distanceTo(I);
|
|
|
+ var vec = new Vector3().subVectors(I, this.currentViewport.view.position);
|
|
|
+ var dis = vec.projectOnVector(this.currentViewport.view.direction).length();
|
|
|
this.currentViewport.view.radius = dis;
|
|
|
//console.log('radius',dis)
|
|
|
}
|
|
@@ -78567,7 +78569,7 @@
|
|
|
没有完美的方法,想象下,在bound外也有物体需要focusPoint, 如path, 此时虽然离bound很远但也需要小radius。
|
|
|
而当转向朝bound飞去却很慢,虽然可以根据intersect提高minRadius来加速,但如果是focus一个四周都有模型的target,就会被intersect干扰,无法focus。
|
|
|
|
|
|
- 现在存在的现象就是容易出现radius过小,游不到终点的情况,所以我让双击可以focus地面,通过这个办法攀到终点。
|
|
|
+ 现在存在的现象就是容易出现radius过小,游不到终点的情况,所以我让双击可以focus地面,通过这个办法攀到终点。另外drag时修改了radius,使跟手。但若不显示地面和地图,就很奇怪。
|
|
|
*没办法直接更改radius,而是通过minRadius和maxRadius, 是因为情况太多了,直接更改不能满足所有情况,还会造成突变。
|
|
|
*minRadius一般不超过standardMinRadius
|
|
|
*/
|
|
@@ -78629,11 +78631,11 @@
|
|
|
/* let progression = Math.min(1, this.fadeFactor * delta);
|
|
|
let panDistance = progression * view.radius * 3; */
|
|
|
|
|
|
- var panDistance = 2 * view.radius * Math.tan(MathUtils.degToRad(camera.fov / 2)) / 1850; //参照4dkk。 平移target(也就是平移镜头位置),但还是难以保证跟手(navvis也不一定跟手,但是很奇怪在居中时中心点居然是跟手的,可能计算方式不同)
|
|
|
+ var panDistance = view.radius * Math.tan(MathUtils.degToRad(camera.fov / 2)); //参照4dkk。 平移target(也就是平移镜头位置),但还是难以保证跟手(navvis也不一定跟手,但是很奇怪在居中时中心点居然是跟手的,可能计算方式不同)
|
|
|
//计算了下确实是这么算的。 平移pivot。 尽量跟手
|
|
|
|
|
|
- var _px = -this.panDelta.x * panDistance * this.renderer.domElement.clientWidth;
|
|
|
- var _py = this.panDelta.y * panDistance * this.renderer.domElement.clientHeight;
|
|
|
+ var _px = -this.panDelta.x * panDistance * camera.aspect;
|
|
|
+ var _py = this.panDelta.y * panDistance;
|
|
|
view.pan(_px, _py);
|
|
|
}
|
|
|
{
|