Open AlexandrUlyanov opened 4 months ago
Shit Script 👍 ` const controls = new TrackballControls(camera, renderer.domElement); controls.minDistance = 1; // Distancia mínima controls.maxDistance = 50; // Distancia máxima
// Para limitar la rotación, puedes agregar lógica personalizada en el bucle de animación
controls.addEventListener('change', () => {
// Aquí puedes agregar tu lógica para restringir la rotación
// Por ejemplo, limitando los ángulos de rotación de la cámara
const maxPolarAngle = Math.PI / 2;
const minPolarAngle = 0;
const spherical = new THREE.Spherical().setFromVector3(camera.position.clone().sub(controls.target));
if (spherical.phi > maxPolarAngle) spherical.phi = maxPolarAngle;
if (spherical.phi < minPolarAngle) spherical.phi = minPolarAngle;
camera.position.setFromSpherical(spherical).add(controls.target);
// Asegura que la cámara no se incline a la derecha o izquierda
const up = new THREE.Vector3(0, 1, 0);
camera.up.copy(up);
camera.lookAt(controls.target); // Siempre apunta al target
// Restricción adicional para mantener la orientación vertical
const quaternion = new THREE.Quaternion();
quaternion.setFromUnitVectors(camera.up, new THREE.Vector3(0, 1, 0));
camera.applyQuaternion(quaternion);
});
// Actualizar los controles
controls.update();
controls.enableDamping = true; // Habilitar amortiguación (suaviza la rotación)
controls.dampingFactor = 0.05; // Factor de amortiguación
controls.screenSpacePanning = true; // Habilitar paneo en el espacio de la pantalla
// Configuración de los botones del ratón
controls.mouseButtons = {
LEFT: THREE.MOUSE.ROTATE,
MIDDLE: THREE.MOUSE.DOLLY,
RIGHT: THREE.MOUSE.PAN,`
Working on it rigth now
Semi closed
Falta enseñaarlo