• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

235
Views
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 3 years ago · Juan Pablo Isaza
1 answers
Answer question

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 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error