Animación: Constraints de animación, Orientation Constraint

En el mundo de la animación 3D todo lo que se mueve, rota o escala, es decir, todo lo que es posible de “animar” siempre está manejado por un controlador. En el caso de 3DSMAX, un controlador es un plugin que controla el almacenamiento y la interpolación de todos los valores animados, es decir, gestiona todas las tareas de animación. En el programa tenemos tres tipos de controladores predeterminados y estos son los siguientes:

  • Posición: Position XYZ.
  • Rotación: XYZ Euler.
  • Escala: Bezier Scale.

Además de los controladores de animación standard, también disponemos de un tipo especial de controladores llamados Restrictores o Constraints los cuales son precisamente “restrictores de movimiento” que nos facilitan bastante el proceso de animación, ya que gracias a estos se puede restringir y/o controlar la jerarquía, posición, rotación y escala de un objeto. Dependiendo del tipo de animación que deseemos realizar dependerá la cantidad de objetos que necesitemos para aplicar un constraint. En este apunte veremos todos los Constraints de animación a excepción de Path Constraint, ya que este último es estudiado en su apunte respectivo.

Para desarrollar los temas de este apunte, puede descargar el archivo base realizando clic en el siguiente enlace: descargar archivo base.

Constraints o Restrictores de animación

Como ya dijimos en un principio, un Constraint es un controlador o “restrictor” de animación y en el caso de 3DSMAX, tenemos varios tipos de estos los cuales se utilizan para diferentes tipos de animaciones según lo que necesitemos resolver. Los Constraints pueden encontrarse en el menú Animation >> Constraints de la parte superior de 3DSMAX:

En total tenemos siete tipos de constraints los cuales son:

  1. Attachment Constraint: Asocia la posición de un objeto a la cara de otro.
  2. Surface Constraint: Limita la posición de una superficie 2D a la superficie de otro elemento 3D.
  3. Path constraint: Limita el movimiento de un objeto a lo largo de un recorrido.
  4. Position constraint: Limita la posición de un objeto a la posición de otro.
  5. Link Constraint: Genera uno o más vinculos entre el objeto que tiene la restricción y otros.
  6. LookAt constraint: Limita la orientación de un objeto a la posición de otro.
  7. Orientation constraint: Limita la rotación de un objeto a la rotación de otro.

Dependiendo de qué es lo que queremos animar dependerá el o los constraints que aplicaremos. Para este apunte estudiaremos el restrictor llamado Orientation Constraint.

Orientation Constraint

Este es un constraint que se encarga de restringir la orientación de un objeto a la de otro. Esto es sumamente útil para generar animaciones en las que necesitemos que varios objetos giren o roten al mismo tiempo y en el mismo sentido al ser animados, como podría ser por ejemplo una serie de cañones. Para que este Constraint se cumpla es fundamental que los objetos siempre queden en la misma orientación, y para conocer a fondo este restrictor realizaremos los dos siguientes ejercicios:

  • Animación de celosías.
  • Animación simple de una dirección de ruedas.

Animación de celosías

Para realizar este primer ejercicio debemos abrir el archivo llamado 3dsmax_animacion_orientationconstraint.max y al hacerlo se nos mostrará lo siguiente:

Como podemos notar, el archivo representa a un sistema de celosías móviles las cuales se activan mediante una manilla giratoria, la cual se conecta a un Dummy el cual será el que rotaremos para efectuar la animación y por ende, cada celosía se restringirá a la orientación de este. Para ello, lo que haremos será colocarnos en el cuadro 0, seleccionar la celosía inferior y luego aplicaremos el constraint de la siguiente manera: iremos a Animation >> Constraints y elegiremos Orientation Constraint. Notaremos que al aplicarlo, veremos una línea segmentada similar a cuando vinculamos los objetos. En este caso, elegiremos el Dummy y realizamos Click para terminar de asignar el restrictor.

Cuando aplicamos el Constraint notaremos que la celosía se gira en 90° y si bien esto no afecta a la animación final, lo mejor es dejar su posición original para poder manipular el Dummy de forma más sencilla. Para ello, iremos al Panel de animación y en el panel llamado Orientation Constraint activaremos la casilla Keep Initial Offset.

Si tomamos el Dummy y lo giramos en torno al eje X notaremos que el Constraint funciona perfectamente y por ello, nuestra celosía ya gira en la misma orientación que este. Podemos probar la rotación del Dummy respecto a los otros ejes para apreciar los otros efectos de la aplicación del Constraint.

Rotación en el eje X.

Rotación en el eje Z.

Rotación en el eje Y.

Al igual que en el caso de Position Constraint, podremos agregar más objetivos de posición o mejor dicho, la posición de los objetos que queremos a los que nuestra biela se restrinja y ajustar la influencia o peso de cada uno. Podremos agregarlos mediante Add Orientation Target y borrarlos mediante Delete Orientation Target. También podremos añadir el “mundo” como objetivo si seleccionamos Add World as Target. Si en este caso aumentamos el Weight de World, la restricción será más lenta y por ende, el objeto se girará más lento que el objetivo.

En el ejemplo se ha rotado la celosía con la configuración de la tabla adjunta.

Ahora todo es cosa de realizar el mismo proceso con el resto de las celosías y luego rotar el Dummy para definir la animación final. Como tip, podemos elegir todas las celosías restantes al mismo tiempo y aplicarles Orientation Constraint, aunque deberemos configurarlas posteriormente una a una.

Todo lo que nos queda por hacer es girar el Dummy y efectuar la animación final, ya que notamos que al girarlo todas las celosías se giran al mismo tiempo, abriendo o cerrando el panel. Un ejemplo de renderizado final de nuestra animación es el siguiente:

Animación de dirección de ruedas

Para realizar este segundo ejercicio debemos abrir el archivo llamado 3dsmax_animacion_orientationconstraint02.max y al hacerlo, se nos mostrará lo siguiente:

Como podemos notar, el archivo representa a un sistema de dirección de bus o vehículo cuyas ruedas se conectan a un volante vinculado a un Dummy, el cual será el que rotaremos para efectuar la animación y por ende, cada rueda se restringirá a la orientación de este. Si giramos respecto al eje Z cualquiera de los Dummys vinculados a cada rueda, notaremos que esta está correctamente jerarquizada:

La idea del ejercicio es restringir el giro de ambos Dummys a la orientación del Dummy que está en el volante (precisamente llamado “Dummy volante”) y así generar el giro de las ruedas de forma realista. Lo que haremos para ello será colocarnos en el cuadro 0, seleccionar el Dummy de la rueda izquierda y luego aplicaremos el constraint de la siguiente manera: iremos a Animation >> Constraints y elegiremos Orientation Constraint. Notaremos que al aplicarlo, veremos una línea segmentada similar a cuando vinculamos los objetos. En este caso, elegiremos Dummy volante y realizamos Click para terminar de asignar el restrictor.

Cuando aplicamos el Constraint notaremos que la esfera se gira en 90° y debido a su configuración esto no afectará a la animación final, así que en este caso no activaremos la casilla Keep Initial Offset y dejaremos todo tal cual. Ahora repetimos el proceso con el siguiente Dummy (Dummy derecha) y una vez realizado ya podremos testear el controlador Dummy volante de forma correcta.

Podemos probar la correcta aplicación del restrictor girando el Dummy del volante en torno al eje Z, ya que notaremos que las ruedas se giran en el mismo sentido de este junto con el volante, ya que este último está vinculado al Dummy:

Todo lo que nos queda por hacer es girar el Dummy volante y efectuar la animación final. Un ejemplo de renderizado de nuestra animación es el siguiente:

Como pudimos apreciar, los restrictores son fundamentales para lograr animaciones creíbles y realistas puesto que el principio de estos es justamente emular la realidad ya sea mediante la modificación de la jerarquía, posición, orientación o escala de uno o más objetos. El o los constraints a aplicar a los objetos 3D dependerán exclusivamente del tipo de animación que deseemos realizar en 3DSMAX.

Deje un comentario en este artículo