Подтвердить что ты не робот

Как установить ограничения на OrbitControl - Three.js

Есть ли способ установить ограничения на OrbitControls.js? Представьте, что я создаю что-то над землей, мне не хотелось бы, чтобы камера опустилась ниже земли, знаете, что я имею в виду?! То же самое касается масштабирования и уменьшения масштаба. Есть ли способ установить некоторые переменные, чтобы ограничить это? Потому что я не хочу, чтобы камера приближалась или слишком далеко.

Большое спасибо. =)

4b9b3361

Ответ 1

Источник OrbitControls

Увеличение/уменьшение

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

Где остановить вращение:

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

Не позволяйте идти ниже земли

controls.maxPolarAngle = Math.PI/2; 

Ответ 2

На всякий случай кто-то нуждается в более надежном ответе с наземной высотой и настройкой цели камеры:

Вы найдете угол относительно цели управления и положение земли камеры (независимо от высоты) и назначьте 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;