1 Orientation & Quaternions Guillermo Heuer, Reinaldo Chacón. Abstract—El presente informe resume los conceptos más importantes para hablar del tema de rotaciones en animaciones 3D donde los metodos mas importantes son angulos de euler, matrices de rotacion, slerp y quaternions. I. INTRODUCTION E el mundo de las animaciones 3D se necesitan representar la mayor cantidad de movimientos que pueden hacerse en la realidad y con la mejor aproximación posible; uno de los movimientos más importantes es rotar un objeto como por ejemplo un avión alrededor de diferentes ejes. N Durante el presente informe se explicaran los distintos métodos existentes para representar rotaciones en tres dimensiones y la mejor manera para interpolarlas y permitir rotaciones deseadas lo mejor ajustadas a la realidad . II. ANIMACION La animación ha sido históricamente de dos maneras: la primera es la de los artistas, la creación de una sucesión de cuadros de dibujos animados que se combinan en una película; y la segunda forma es mediante el uso de modelos físicos, por ejemplo King Kong, el cual se posiciona en un lugar, se le realiza un movimiento al modelo, la imagen de graba y el proceso se vuelve a realizar. Es del segundo método del cual nos vamos a interesar. Dentro de este, hay que resaltar el uso de la técnica de los fotogramas claves (key framing, el cual se empezó a utilizar en 1971 para animación de modelos en 3D). Un fotograma clave marca el punto en el que se especifica un valor, como por ejemplo la posición en el espacio. Los valores entre los fotogramas clave se interpolan. Al utilizar fotogramas clave para crear un cambio a lo largo del tiempo, se debe utilizar como mínimo dos fotogramas clave: uno para el estado al comienzo del cambio y otro para el nuevo estado al final del cambio. La técnica del los fotogramas claves fue el avance que dio el uso de computadora en la animación, pues ahora el cálculo de los fotogramas intermedios que antes se dibujaban, serían calculados por interpolación de forma automática, sólo colocando los estados necesarios. Este trabajo, se limita específicamente a los métodos de representación y aplicación de la rotación en la animación, haciendo especial énfasis en el método de cuaterniones (quaternions). III. ORIENTACION Para poder definir la rotación de un objeto es necesario definir dos cosas: la posición en la cual se encuentra y la orientación que llevara a cabo esta transformación geométrica, pues realmente esta dependerá de la parametrización espacial de todas las posibles orientaciones del objeto. La orientación de un objeto en el espacio es cada una de las posibles elecciones para colocarlo sin cambiar un punto fijo de referencia. Puesto que el objeto con un punto fijo puede todavía ser rotado alrededor de ese punto fijo, la posición del punto de referencia no especifica por completo la posición, por tanto para especificar completamente la posición necesitamos especificar también la orientación. La orientación puede visualizarse añadiendo una base vectorial ortogonal al punto de referencia del objeto, diferentes bases representarían diferentes orientaciones. IV. ANGULOS DE EULER Históricamente, la más popular parametrización de orientación espacial fue establecida en términos de los ángulos de Euler, donde una rotación general se describe como una secuencia de rotaciones alrededor de tres ejes de coordenadas mutuamente ortogonales fijo en el espacio, teniendo en cuenta que las rotaciones se aplican al espacio y no a los ejes, en palabras más sencillas, que cualquier rotación o conjunto de rotaciones sucesivas puede expresarse siempre como una rotación alrededor de una única dirección o eje de rotación principal. De este modo, toda rotación (o conjunto de rotaciones sucesivas) en el espacio tridimensional puede ser especificada a través del eje de rotación equivalente definido vectorialmente por tres parámetros y un cuarto parámetro representativo del ángulo rotado. Generalmente se denominan a estos cuatro parámetros grados de libertad de rotación. Este método posee 3 ángulos de libertad. Esto significa que puede representar una orientación con 3 números. Suponiendo que nos limitamos a 3 rotaciones sin rotaciones sucesivas sobre el mismo eje, se podría utilizar 2 cualquiera de los siguientes secuencias: XYZ, XZY, XYX, XZX, YXZ, YZX, YXY, YZY, ZXY, ZYX, ZXZ, ZYZ. Esto nos da 12 formas redundantes para almacenar una orientación utilizando los ángulos de Euler. V. SLERP Se refiere al movimiento de velocidad constante a lo largo de una unidad de radio de arco de círculo máximo, habida cuenta de los extremos y un parámetro de interpolación entre 0 y 1. Es un método de interpolación entre dos puntos de una esfera unitaria. Esta tal vez es el mejor método que hay para generar la interpolación de la rotación, sin embargo el problema que posee es lo lento que se ve la rotación por el nivel de detalle generado por esta rotación. VI. MATRICES DE ROTACION Cambiar la orientación es equivalente a girar los ejes coordenados. Sin embargo, el uso de ángulos de Euler en la rotación de objetos en 3D posee dos problemas: el primer problema es el de establecer una orientación arbitraria utilizando ángulos de Euler, esto no es posible, y el segundo es más un profundo problema matemático el momento de realizar una interpolación de orientación. El uso de matrices de 3x3 para representar una orientación genera 9 números en lugar de los 3 que generan los ángulos de Euler, y por lo tanto, disponemos de 6 grados de libertad extra, lo cual da la posibilidad de establecer más ángulos arbitrarios que no eran posibles con el método de Euler. Gimbal Lock: Es la pérdida de un grado de libertad que se produce cuando dos de los ejes se colocan en un mismo lugar, lo cual no puede compensar la rotación alrededor de un eje en un espacio tridimensional. Aunque los tres ejes todavía pueden girar libremente, debido a la orientación en paralelo de dos de los ejes en gimbal lock, no hay eje de rotación disponible para rotar en la dirección que falta. Interpolación con angulos de Euler: Al momento de realizar interpolaciones es necesario indicar las orientaciones inicial y final del objeto, todo esto en base a un eje de referencia que puede ser distinto al del objeto y más aun puede tener una orientación distinta por lo cual al momento de realizar la interpolación los cálculos pueden resultar en algo inesperado debido a los cambios de orientación aleatorios que pueden resultar de escoger un eje de referencia mal ubicado. En angulos de Euler este problema se acentúa debido a que es necesario los ejes de rotación ya que el método los utiliza y es a través de estos por los cuales rota. Las matrices son usualmente la forma más eficiente computacionalmente para aplicar rotaciones a los datos geométricos, pero estas traen problemas de almacenamiento y más aun generan un cambio de la malla, y por ende del tamaño, del objeto. VII. QUATERNIONS El método que permite solucionar los problemas hasta ahora planteados fue el inventado por W. R. Hamilton en 1843, los cuaterniones. Un cuaternión se forma como un vector de cuatro dimensiones cuya base son los números complejos (1, i, j, k), entonces, un cuaternión es una combinación lineal q = ai + bj + ck +d, donde a,b,c (componentes imaginarios) y d 3 (componente real) son escalares. La ventaja que tienen los cuaterniones con respecto a los métodos antes mencionados son: 1.- La representación de una rotación es más compacta en un cuaternión (4 números) que en una matriz ortogonal (9 números). 2.- Más sencillo de interpretar. 3.- Permite hacer “rotaciones suaves”. 4.- Robusto a errores de redondeo en la concatenación de rotaciones. 5.- No hay “gimbal lock”. 6.- La operación de multiplicación es conmutativa, cosas que las matrices no es posible. VIII. COMPARACION DE RENDIMIENTO En esta sección se mostraran cuadros que comparan los métodos desde el punto de vista computacional con criterios de almacenamiento y operaciones que cada uno debe realizar para movimientos de rotación. 1.- Requerimientos de almacenaje Los cuaterniones trabajan en cuatro dimensiones sobre un espacio de rotación llamado hiperesfera construido de la siguiente manera, primero se tiene una rotación de cero grados llamada rotación identidad representada como un punto en el centro del espacio de rotaciones, luego cualquier rotación siguiente diferente a cero grados construyen pequeñas esferas concéntricas alrededor de la rotación identidad donde el radio de la esfera está relacionado con la magnitud de la rotación, a mayor ángulo de rotación más alejado se estará de la rotación identidad. Método Almacenaje Matrices de Rotación 9 Cuaternion 4 Angulos de Euler 4* 4 2.- Operaciones de rotación en cadena. REFERENCES [1] Método Multiplicaciones Sumas/Restas Total [2] [3] [4] Matriz de Rotación 27 18 45 Cuaternion 12 28 16 3.- Operaciones de rotación con vectores. Método Matriz de Rotación Multiplicaciones Sumas/Restas Sin/Cos Total 9 6 0 15 Cuaternion 21 18 0 39 Euler 16 2 41 23 IX. CONCLUSIONES Luego de estudiar los distintos métodos para representar rotaciones en tres dimensiones se puede apreciar las grandes diferencias entre cada uno tanto en la forma de realizar los cálculos como la forma grafica de realizar los cambios de orientación. Los angulos de euler son el primer método que se utilizo para realizar rotaciones siendo estas fáciles de representar pero solo permitiendo rotar en los tres ejes y puede traer problemas de gimbal lock asi como que la interpolación lineal puede tener cambios de velocidad notables lo cual soluciona el método de slerp manteniendo constante la velocidad de rotación a través de toda la interpolación. Otro método también muy utilizado son las matrices de rotación por su eficiencia computacional pero almacenan muchos datos comparado con otros métodos. Los cuaterniones proporcionan una forma compacta y eficiente numéricamente de realizar rotaciones arbitrarias con solo la dirección y el numero de grados necesarios siendo una de las técnicas más utilizadas en la actualidad para mecánica, realidad virtual y animaciones entre otros. [5] [6] Watt Alan, Watt Mark. “Advance Animation and Rendering Techniques” Ed. Addison-Wesley. Quaternion, http://en.wikipedia.org/wiki/Quaternion, 2010. Quaternion & Spacial Rotation. http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation, 2010. Dam Erik, Koch Martin, Lillholm Martin. “Quaternions, Interpolation and Animation”. July 17, 1998. Rotenberg Steve. “Orientation & Quaternions”. 2005. McMillan Leonard, Popovic Jovan. “Computer Animation II”. 2003.