La animación en MAX 3
Las jerarquías y la animación
Al día de hoy prácticamente todos los programas que soportan animación disponen de opciones (o de módulos enteros) para establecer jerarquías entre objetos. ¿Y por qué son tan importantes las jerarquías? Pues porque resultan básicas para definir la animación de modelos complejos con muchas partes móviles. Crear sin ellas la animación de un ser humano andando o de un caballo lanzado al galope sería algo impensable, una tarea de chinos. Imaginad, por ejemplo, el caso de un modelo que representa a un caballero medieval. Aquí la espada que sostiene el caballero en su mano derecha será un objeto-hijo de dicha mano, la cual, a su vez, será un objeto-hijo del antebrazo derecho y así sucesivamente (o al menos este será el caso si el modelo está correctamente jerarquizado). En este caso cuando el usuario haga rotar el hombro derecho del modelo no tendrá que preocuparse por los objetos que forman el resto del brazo, ya que éstos rotarán también siguiendo la rotación del hombro (que es el objeto padre). Y como cualquier animación de un modelo "orgánico" puede implicar el movimiento de todos los objetos "simples" de dicho modelo, está claro que el usuario se ahorrará mucho trabajo utilizando jerarquías. A esta vinculación jerárquica entre las partes de un modelo se le llama cadena cinemática (kinematic chain).

Básicamente existen dos tipos de jerarquías: la cinemática directa y la inversa (a menudo llamada simplemente IK por Inverse Kinematic). La directa es la más intuitiva para el usuario y en ella las transformaciones realizadas sobre los padres se transmiten a los hijos siguiendo la cadena hasta llegar al último objeto de la misma. El ejemplo anterior es de este tipo: la rotación aplicada por el usuario al hombro es transmitida por éste a su hijo (o sea a la parte superior del brazo), el cual es a su vez padre del antebrazo a quien transmite la misma rotación, etc. Y todo termina al llegar a la espada, que es el último objeto de esta rama de la cadena. En cambio, si rotamos la mano derecha, esta transformación sólo se transmitirá a la espada pero no afectará a los objetos situados más arriba en la jerarquía (el antebrazo y los demás). Bien, para aclarar esto aun más, aquí van unas pocas definiciones empleadas en el mundo de las jerarquías de "MAX" (aunque probablemente nos las encontraremos en cualquier programa que use jerarquías):

Hijo: un objeto que tiene un vínculo con otro situado en una posición inmediatamente más alta de la jerarquía. Un hijo sólo puede tener un padre. A menudo se dice de un objeto hijo que es el objeto descendiente (de su padre).

Padre: un objeto que tiene vínculos con uno o más hijos. Se dice del padre que es el objeto ascendiente del hijo porque está inmediatamente por encima de él en la jerarquía.

Raíz: si se sigue la cadena hasta el punto más alto de la jerarquía se llega al objeto-raíz; Un objeto que no tiene ningún ascendiente y del que todos los demás son descendientes.

Rama: frecuentemente se habla de la jerarquía como si fuese un árbol y también se dice que una rama dada son todos los objetos descendientes que parten de un objeto padre (que es la raíz de la rama).

Hoja: es el objeto final de una rama. O sea, un objeto que puede tener un padre pero no hijos.

Pivote: en "MAX" cada objeto tiene un centro de coordenadas local que está definido por la localización y orientación de un punto pivote. Así, la dirección de los ejes X, Y y Z locales del objeto dependerá de las transformaciones que se hayan aplicado sobre el objeto (en contraste con los ejes del mundo, que nunca cambian). El definir correctamente los puntos-pivote es importante para diversos propósitos.

En fin, como acabamos de ver, en las cinemáticas directas las operaciones de transformación aplicadas sobre un padre se transmiten a los hijos siguiendo la cadena hasta la última hoja de la rama, pero no sucede lo contrario. Es decir, las operaciones aplicadas a los hijos no recorrerán la cadena en sentido ascendiente. Con este tipo de jerarquía podemos simular muy bien la vinculación entre los cuerpos de un sistema estelar (rotando el sol rotan todos los planetas-hijos, rotando un planeta rotan sus satélites, etc.), pero las cinemáticas directas no son tan útiles cuando estamos trabajando con un modelo como el del caballero del ejemplo. En este caso lo real será que, si arrastramos hacia delante la espada del caballero, primero el brazo y luego el torso del modelo sigan el movimiento rotando si es necesario.

Las cinemáticas inversas de "MAX" simulan mejor este tipo de movimientos. Si están activas, cuando el usuario mueva o rote un objeto, los descendientes de este heredarán la transformación de la manera que hemos descrito anteriormente pero, además, algunos de los objetos ascendientes también realizarán transformaciones, aunque no serán las mismas que han heredado los hijos. ¿Cómo funciona esto? Pues antes que nada hay que especificar objetos que servirán como bases de las ramas. Así, cuando el usuario opere en un objeto, "MAX" realizará operaciones subiendo por la rama del objeto seleccionado —que en este sistema se llama efector final (End Effector)— hasta llegar al objeto-base de la rama. Allí, las operaciones se detendrán y los objetos ascendientes situados por encima de la base de la rama no sabrán nada de las transformaciones aplicadas sobre la rama. (Y, por supuesto, los objetos hijos del efector final heredarán su misma operación hasta llegar a los objetos-hojas). A estos objetos que marcan la base de las ramas de cinemática inversa se les llama terminadores (terminators).

(Nota: en bastantes libros y documentos suele decirse que un padre es aquel objeto que controla a uno o más hijos, pero esta definición sólo vale para los casos de cinemática directa, ya que si aplicamos cinemática inversa los hijos también pueden afectar a los padres).

Una ventana de jerarquía típica.
Creación de una jerarquía a la manera tradicional.
En este sencillo ejemplo pueden verse los vínculos entre los objetos.
Anterior Siguiente