Espero que sepas GL Mathematics ( GLM ) porque tengo un problema, no puedo romper:
Tengo un conjunto de ángulos de Euler y necesito realizar una interpolación suave entre ellos. La mejor manera es convertirlos a Quaternions y aplicar el alrogirthm SLERP.
El problema que tengo es cómo inicializar glm :: quaternion con Euler Angles, ¿por favor?
Leí una y otra vez la documentación de GLM , pero no encuentro la adecuada Quaternion constructor signature, eso requeriría tres ángulos de Euler. La más cercana que encontré es la función
angleAxis () , que toma el valor del ángulo y un eje para ese ángulo. Tenga en cuenta, por favor, lo que estoy buscando de alguna manera, cómo analizar RotX, RotY, RotZ.
Para su información, esta es la firma de la función angleAxis () mencionada anteriormente :
detail::tquat< valType > angleAxis (valType const &angle, valType const &x, valType const &y, valType const &z)

operator *para la multiplicación de Quaternion, por lo que posiblemente tendré que realizar la multiplicación manualmente .Donde
anglehay un tono queglm::vec3contiene , guiñada, rodar respectivamente.PD. En caso de duda, solo ve a los encabezados y mira. La definición se puede encontrar en glm / gtc / quaternion.hpp:
¿Para dónde
quates un tipo flotantetquat?fuente
La solución está en wikipedia: http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles
usando eso:
Constructores para un cuaternión, dado un Euler (donde la aplicación de rotación es XYZ o ZYX). Sin embargo, son solo dos de las seis combinaciones posibles de ángulos de Euler. Realmente necesita averiguar en qué orden se construyen los ángulos de Euler al convertir a matriz de transformación. Solo entonces se puede definir la solución.
En la antigua empresa en la que trabajaba, teníamos Z como reenvío (como la mayoría de las tarjetas gráficas), por lo que el orden de la aplicación era ZYX, y en mi compañía actual el eje Y está hacia adelante y Z está arriba, por lo que nuestro orden de aplicación es YZX. Este orden es el orden en el que multiplicas tus cuaterniones para generar tu transformación final, y el orden de las rotaciones es que las multiplicaciones no son conmutativas.
fuente
¡El ángulo debe estar en radianes!
fuente