Estoy tratando de rotar un objeto en Three JS hacia una ubicación xyz fija dentro de un espacio. Actualmente soy capaz de lograrlo así:
var position_x = -0.85; var position_z = -4.44; model.lookAt(position_x, 0, position_z);Sin embargo, la función lookAt() rota el modelo instantáneamente y me gustaría rotar el modelo más lentamente. ¿Hay alguna manera de lograr esto utilizando las funciones integradas de Three JS?
¡Gracias!
¿Hay alguna manera de lograr esto utilizando las funciones integradas de Three JS?
Sí, puede usar Quaternion.rotateTowards() que funciona de manera similar al método Quaternion.rotateTowards() de Unity.
La idea es calcular una orientación objetivo que está representada por un cuaternión. Puede hacer esto usando Matrix4.lookAt() y luego crear un cuaternión basado en esta matriz a través de Quaternion.setFromRotationMatrix() .
A continuación, calcula un paso angular por cuadro que definirá cuánto gira su objeto hacia el objetivo. El cálculo del step se ve así:
const step = speed * delta; delta es el valor delta de tiempo en segundos y la speed representa la tasa de giro de nuestro modelo en radianes por segundo.
Un ejemplo de código completo está disponible aquí:
https://tresjs.org/ejemplos/webgl_math_orientation_transform