如何穿上OrbitControl限制?(How do I put limits on OrbitCo

2019-08-19 16:46发布

有没有提上限制的方式OrbitControls.js ? 想象一下,我创建了地面上的东西,我不希望相机去下面的地面,明白我的意思? 同样的事情也适用于在放大和缩小。 有没有一种方法来设置一些变量来限制,因为我不想让相机关闭或太远?

Answer 1:

OrbitControls源

放大/缩小

this.minDistance = 0;
this.maxDistance = Infinity;

当停止旋转:

this.minPolarAngle = 0; // radians
this.maxPolarAngle = Math.PI; // radians

不要让去地下

controls.maxPolarAngle = Math.PI/2; 


Answer 2:

万一有人需要AA更强大的答案与地面高度和相机调整目标:

你会发现相对于控制目标的角度和(不管高度)摄像机的地面位置并分配maxPolarAngle。 调整你的上方向轴,我的是Y.里面的控件改变事件:

var centerPosition = controls.target.clone();
centerPosition.y = 0;
var groundPosition = camera.position.clone();
groundPosition.y = 0;
var d = (centerPosition.distanceTo(groundPosition));

var origin = new THREE.Vector2(controls.target.y,0);
var remote = new THREE.Vector2(0,d); // replace 0 with raycasted ground altitude
var angleRadians = Math.atan2(remote.y - origin.y, remote.x - origin.x);
controls.maxPolarAngle = angleRadians;


文章来源: How do I put limits on OrbitControl?