three texture sphere raycaster three.js controls

three.js - texture - three js rotation



¿Cómo puedo poner límites a OrbitControl-Three.js? (2)

En caso de que alguien necesite una respuesta más sólida con la altura del terreno y el ajuste del objetivo de la cámara:

Encontrará el ángulo relativo al objetivo de los controles y la posición en el suelo de la cámara (independientemente de la altitud) y asignará el maxPolarAngle. Ajuste para su eje ascendente, el mío era Y. Dentro del evento de cambio de controles:

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;

¿Hay una manera de poner límites a los OrbitControls.js? Imagina que estoy creando algo por encima del suelo, no me gustaría que la cámara se hundiera, ¿entiendes lo que quiero decir? Las mismas cosas van para acercar y alejar. ¿Hay una manera de establecer algunas variables para limitar eso? Porque no quiero que la cámara se acerque o se aleje demasiado.

Muchas gracias. =)


OrbitControls fuente

Ampliar reducir

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

Dónde detener la rotación:

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

No dejes que descienda por debajo del suelo.

controls.maxPolarAngle = Math.PI/2;