Así que he escrito una cámara 3D basada en Quaternion orientada a nuevos programadores, por lo que es muy fácil para ellos integrarla y comenzar a usarla.¿Las cámaras 3D basadas en Quaternion deberían acumular Quaternion o ángulos de Euler?
Mientras lo desarrollaba, al principio tomaba la entrada del usuario como ángulos de Euler, luego generaba un Quaternion basado en la entrada de ese fotograma. Luego tomaría el Quaternion de la cámara y lo multiplicaría por el que generamos para la entrada, y en teoría eso debería simplemente agregar la rotación de la entrada al estado actual de la rotación de la cámara, y las cosas serían todo gordas y felices. Llamemos a esto: Acumulando Quaternions, porque estamos almacenando y agregando Quaternions solamente.
Pero noté que había un problema con este método. Cuanto más lo usaba, incluso si solo rotaba en un ángulo de Euler, decía Yaw, en algunas iteraciones comenzaría a sangrar en otro, digamos Pitch. Fue leve, pero bastante inaceptable.
Así que investigué un poco más y encontré un artículo que decía que era mejor acumular ángulos de Euler, por lo que la cámara almacena su rotación actual como ángulos de Euler, y la entrada simplemente se agrega a cada cuadro. Luego genero un Quaternion de cada cuadro, que a su vez se usa para generar mi matriz de rotación. Y esto solucionó el problema de la sangría de la rotación en ejes impropios.
¿Alguno de los miembros de Stackoverflow tiene alguna idea de este problema? ¿Es esa una forma correcta de hacer las cosas?
lo mismo aplica para el enfoque de matriz de transformación y no es demasiado esfuerzo agregar un contador de operaciones en la clase de cuaternión basada en el ángulo de Euler (solo algunas líneas). Por cierto, no recomiendo normalizar con demasiada frecuencia porque puede ensuciar un poco los efectos de transformación deseados. Normalmente normalizo cada operación de 64-128 – Spektre
_ "para recuperar eso, tendrías que renormalizar de nuevo a ángulos de Euler en cualquier caso" _ - Esto no es cierto en absoluto - el factor de escala puede recuperarse tomando la magnitud del cuaternio – Eric