有没有提上限制的方式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?