From BlenderWiki

Jump to: navigation, search
Note: This is an archived version of the Blender Developer Wiki. The current and active wiki is available on wiki.blender.org.

Blender permite definir rotaciones de distintas maneras. Cada una tiene una serie de ventajas e inconvenientes; no hay una manera mejor que otra, pues cada una es más indicada para casos concretos.

En todos estos modos, valores positivos del ángulo significan dirección de rotación en la dirección contraria a la de las agujas del reloj, mientras valores negativos definen rotación como la de las agujas del reloj.

Aunque se pueden rotar elementos usando las orientaciones de transformación locales o globales, estos ejes no son adecuados para definir rotaciones, pues el efecto de cada uno de estos tres ejes no puede aislarse de los otros dos.

Por ejemplo, tomando 3 valores cualquiera de rotación para X, Y y Z, y realizando estas rotaciones en los ejes globales o locales, vemos que dependiendo del orden aplicado, acabamos con distintas orientaciones. Así que necesitamos sistemas de coordenadas más adecuados.

Modos de rotación Euler

El sistema de ejes usado para realizar rotaciones Euler es el llamado gimbal Euler. Un gimbal es un juego específico de 3 ejes. Lo especial sobre estos es que los ejes tienen una relación jerárquica entre ellos: uno de los ejes está en la parte alta de la jerarquía, y tiene uno de los otros dos ejes como hijo; del mismo modo, este eje hijo es a su vez el padre del eje restante, el cual queda en el fondo de la jerarquía.

Qué eje está arriba, cuál en el medio y cuál abajo, depende del gimbal Euler concreto: hay 6 tipos, pues hay 6 combinaciones posibles: modos de rotación Euler XYZ, XZY, YXZ, YZX, ZXY y ZYX. Estos modos se bautizan usando las letras de los ejes en orden, empezando por el eje que queda abajo en la jerarquía, y terminando por el de la parte superior.

El principal problema con estos sistemas viene cuando pierden su respectiva perpendicularidad. Y ello sucede cuando el eje del centro rota, lo cual causa que el eje de abajo rote con él, haciendo que se eje de abajo se acerque al de arriba del todo. Las cosas se ponen peor cuanto más se acerca el eje inferior al superior, cosa que sucede cuando la rotación del eje central se aproxima a 90° (o ángulos equivalentes). En ese caso, los dos ejes quedan alineados o casi alineados, con lo que en la práctica se pierde uno de los ángulos de rotación. Ello puede causar interpolaciones muy extrañas al animar. Esta pérdida concreta de un eje se conoce como el gimbal lock.

La configuración actual del ejes del gimbal se puede ver mediante los manipuladores 3D con orientación de transformación Gimbal seleccionada, siempre y cuando el objeto tenga seleccionado el modo de rotación Euler.

Una ventaja de este modo es que las curvas de animación son fáciles de comprender y editar. Sin embargo, se debe prestar especial atención a las rotaciones del eje central cercanas a 90° (o equivalentes).

Modo de rotación Axis Angle

Este modo permite definir un eje (X, Y, Z) y un ángulo de rotación (W), en radianes, alrededor de ese eje (1 radian es 180°/Π).

Para definir un ángulo en relación al valor Π, se pueden escribir en los controles cosas como pi/2 (90°), 2*pi (360°), etc.

Si definimos la rotación usando rotaciones interactivas, los valores de X, Y y Z no sobrepasarán 1.0 en valor absoluto, y W irá de 0.0 a 2xΠ (360°).

Si se quieren definir rotaciones por encima de 2xΠ, es decir, si queremos definir múltiples revoluciones, habrá que editar el valor W directamente, pero en cuanto se realice una rotación interactiva sobre el elemento, ese valor será ajustado nuevamente. Lo mismo sucede con los valores de los ejes.

Este sistema es adecuado para elementos que revolucionen alrededor de un eje más o menos fijo. El problema viene al animar (interpolar) ambos componentes simultáneamente: eje y ángulo. El efecto resultante puede no ser el esperado, aunque el sistema axis-angle no sufre de gimbal lock.

La orientación de transformación Gimbal en este modo muestra un juego de ejes en los que el el eje Z va a lo largo del eje de rotación definido, apuntando hacia la dirección definida por el punto (X, Y, Z).

Sin embargo, las curvas de animación en este modo no son intuitivas en absoluto, por lo que son difíciles de comprender y editar.

Modo de rotación Quaternion

En este modo, las rotaciones también están definidas por 4 valores (X, Y, Z y W). X, Y y Z también definen el eje, y W el ángulo, pero lo hace de un modo bastante distinto a axis-angle. Lo importante aquí es la relación entre los cuatro valores.

Para describirlo de una forma intuitiva, tomemos el efecto de la coordenada X: lo que hace es rotar el elemento alrededor del eje X hasta 180 grados. Lo mismo sucede con Y y Z. El efecto de W es evitar esas rotaciones y dejar el elemento con rotación cero. La orientación final es una combinación de los cuatro efectos.

Puesto que la relación entre componentes es lo que defines la orientación final, multiplicar o dividir los cuatro números por un valor constante producirá la misma rotación.

Este modo es ideal para interpolar cualquier par de orientaciones. No sufre de gimbal lock ni de efectos indeseados de interpolación. La mayor desventaja es que no se puede interpolar más de 180°, ya que la animación tomará el recorrido más corto de una orientación a otra: para animar un elemento en revolución se deben configurar fotogramas clave intermedios.

La orientación de transformación Gimbal en este modo es equivalente a Local, y no tiene ningún significado especial.

Las curvas de animación en este modo tampoco sin intuitivas, por lo que son también difíciles de comprender y editar.

Más sobre cuaterniones

Esta sección no es realmente útil para el artista 3D, pero puede ser interesante para el curioso o el científico.

Los cuaterniones son un sistema numérico que amplía el espacio de los números complejos. Tienen 4 componentes (llamados en Blender X, Y, Z y W).

Al rotar interactivamente en modo cuaternión, la llamada norma del cuaternión se mantendrá constante. La norma de un cuaternión q está definida matemáticamente como:

\lVert q \rVert = \sqrt{X^2 + Y^2 + Z^2 + W^2}

Sin embargo, si uno de los componentes del cuaternión está bloqueado durante la transformación interactiva mediante el botón de bloqueo correspondiente, la norma no se mantendrá fija, puesto que ese componente bloqueado no será capaz de ajustarse a sí mismo para mantener dicha norma.

Los compenentes de rotación de un cuaternión mantienen una estrecha relación con los de axis-angle. Para encontrar una correspondencia, primero de todo debemos tratar con la versión normalizada del cuaternión, es decir, uno cuya norma sea igual a 1.0. Para normalizar un cuaternión, hay que dividir cada uno de sus componentes por su norma. Como hemos visto antes, dividir los cuatro valores por el mismo número da la misma orientación.

Una vez hemos calculado los componentes del cuaternión normalizado, la relación con los componentes de axis-angle es como sigue:

  • X, Y y Z significan exactamente lo mismo que en axis-angle: simplemente definen un eje alrededor del cual se produce la rotación.
  • W se puede usar para calcular la rotación efectiva alrededor del eje definido. La fórmula es la siguiente: W = cos(a / 2), donde a es de hecho el ángulo de rotación que estamos buscando.

Otras consideraciones

En los modos axis-angle y cuaternión podemos bloquear componentes de las rotaciones en modo interactivo, en lugar de bloquear ejes. Para ello podemos activar esta posibilidad de bloqueo usando o bien el botón 4L en el panel Transform en la barra lateral Properties del editor 3D View, o el control Rotation del panel Transform Locks en el contexto objeto del editor Properties. Cualquiera de ellos se puede usar para hacer aparecer un cuarto candado, habilitando entonces el bloqueo de componentes.

En cuanto a las animaciones de las rotaciones, todos los fotogramas clave deben ser definidos en el mismo modo de rotación, que debe ser el modo de rotación seleccionado para el objeto.