La idea es pasar de la posición actual de la cámara al centro de una malla (es una esfera y quiero estar dentro de ella) cuando se hace clic en el botón.
Esta es la función con una interpolación, se llama a onUpdate, pero es instantánea en lugar de ejecutarse con el tiempo, ¿qué pasa?
nextButton.onclick = function () { const cameraCoords = { x: camera.position.x, y: camera.position.y, z: camera.position.z }; new TWEEN.Tween( cameraCoords ) .to( { x: mesh2.position.x, y: mesh2.position.y, z: mesh2.position.z }, 600) .easing(TWEEN.Easing.Linear.None) .onUpdate(function () { camera.position.set(mesh2.position.x, mesh2.position.y, mesh2.position.z); }) .start(); };Esta es una función animada donde llamo actualizaciones de interpolación (en caso de que algo esté mal aquí).
function animate(time) { requestAnimationFrame( animate ); controls.update(); TWEEN.update(time); renderer.render( scene, camera ); } animate();¡Gracias!
El problema está en la devolución de llamada onUpdate :
camera.position.set(mesh2.position.x, mesh2.position.y, mesh2.position.z); Siempre está configurando la posición final, cuando debería configurar la posición actual que está en el objeto cameraCoords :
camera.position.set(cameraCoords.x, cameraCoords.y, cameraCoords.z);