Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

302
Vistas
Javscript - Three.js ¿Deshabilitar la panorámica en dispositivos móviles?

Así que estoy haciendo un proyecto en 3D con tres.js. Todo funciona como se esperaba en mi computadora portátil. Estoy usando OrbitControls para permitir el movimiento de la cámara, pero he deshabilitado el desplazamiento panorámico con el botón derecho, porque quiero que la cámara solo gire. Al cambiar a un dispositivo móvil (iphone), con dos dedos puedo mover la cámara (no girar). ¿Hay alguna manera de deshabilitar este comportamiento en los dispositivos móviles? Mis controles orbitales:

 this.controls = new OrbitControls(this.camera, this.renderer.domElement) this.controls.enableDamping = true this.controls.maxPolarAngle = Math.PI * 0.45 this.controls.mouseButtons = { LEFT: THREE.MOUSE.ROTATE, MIDDLE: THREE.MOUSE.DOLLY, RIGHT: '' }

Función de actualización:

 _RAF() { requestAnimationFrame(() => { this.water.material.uniforms[ 'time' ].value += 1.0 / 60.0 this.controls.maxDistance = 10000.0 this.controls.minDistance = 10.0 this.controls.update() this.camera.updateProjectionMatrix() this.renderer.render(this.scene, this.camera) this._RAF() }) }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Parece que no está deshabilitando la panorámica, sino simplemente cambiando la acción del mouse utilizada por los controles.

Para deshabilitar/habilitar la panorámica, debe usar enablePan .

Ahora, solo desea deshabilitar la panorámica en dispositivos móviles, por lo que podríamos elegir un punto de interrupción para habilitar/deshabilitar condicionalmente la panorámica:

 this.controls.updatePanning = () => { const minWidth = 780 // Your min breakpoint for enabling pan. if (window.innerWidth >= minWidth ) { this.controls.enablePan = true } else { this.controls.enablePan = false } }

Luego, en su ciclo de actualización, simplemente invoque la función anterior:

 _RAF() { requestAnimationFrame(() => { this.water.material.uniforms[ 'time' ].value += 1.0 / 60.0 this.controls.maxDistance = 10000.0 this.controls.minDistance = 10.0 this.controls.updatePanning() this.controls.update() this.camera.updateProjectionMatrix() this.renderer.render(this.scene, this.camera) this._RAF() }) }

Podría abordar esto de varias maneras. Por ejemplo: solo puede ejecutar esta función una vez y no todos los cuadros.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda