Comment puis - je mettre des limites sur OrbitControl-trois.js

y a-t-il un moyen de limiter les contrôles orbitaux.js? Imagine que je crée quelque chose au-dessus du sol, Je ne voudrais pas que la caméra aille sous le sol, Tu vois ce que je veux dire?! La même chose vaut pour zoomer et dézoomer. Est-il possible de définir certaines variables de la limiter? Parce que je ne veux pas la caméra trop proche ou trop loin.

Merci beaucoup. = )

24
demandé sur Damjan Pavlica 2013-04-05 10:08:55

2 réponses

OrbitControls source

Zoom avant / arrière

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

Où arrêter la rotation :

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

Ne laissez pas aller au-dessous du sol

controls.maxPolarAngle = Math.PI/2; 
50
répondu uhura 2013-04-05 06:22:36

juste au cas où quelqu'un aurait besoin d'une réponse plus robuste avec l'altitude au sol et le réglage de la cible de la caméra:

vous trouvez l'angle par rapport à la cible des commandes et la position au sol de la caméra (quelle que soit l'altitude) et vous assignez le maxPolarAngle. Ajuster pour votre haut de l'axe, la mienne a été Y. à l'Intérieur de l'événement de changement de contrôle:

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;
1
répondu Radio 2016-07-26 19:48:09