3DSMAX Tutorial 10e: Animación en 3DSMAX, Constraints Parte 2

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 tutorial veremos los Constraints restantes de animación (Link, LookAt y Orientation Constraint) a excepción de Path Constraint, ya que este último fue visto en un tutorial pasado. Para la correcta realización de este tutorial, en la página de descargas de los archivos de tutoriales 3D está el archivo base llamado 3dsmax_animacion_constraints2.rar.

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 tutorial veremos los constraints de 5) a 7) a excepción de 3), el cual ya fue visto en su propio tutorial.

5) Link Constraint

Este es un constraint bastante útil puesto que se encarga de vincular o desvincular uno o más objetos dentro de un margen de tiempo. Por ello mismo es que se usa en animación para generar sistemas en serie como por ejemplo el mover un objeto, luego elevarlo y volverlo a colocar en otro lugar, o dejarlo estático. En este caso, veremos la herramienta mediante el siguiente ejercicio: abriremos el archivo llamado 3dsmax_animacion_linkconstraint.max y al hacerlo se nos mostrará lo siguiente:

Como podemos notar, el archivo representa a un sistema con el cual moveremos una caja dorada la cual primeramente se apoyará en la primera base (la cual es móvil), luego esta será tomada por la grúa la cual la depositará en la siguiente base para finalmente moverse junto con esta última. Todos los elementos ya están animados de antemano y por ende, no se debe hacer nada ya que sólo trabajaremos con la caja dorada. Para entender el funcionamiento del constraint, debemos primero generar el esquema de toda la animación asignando etapas:

Etapa 1: la caja se apoya en la base 1 la cual se mueve hacia la grúa, lo que implica que la caja deberá vincularse a la base en el lapso de tiempo en que esta se mueve.

Etapa 2: la caja será tomada por las tenazas de la grúa la cual luego girará para depositarla en la siguiente base, lo que implica que la caja deberá vincularse a un elemento de la grúa en el lapso de tiempo en que esta realiza toda la acción.

Etapa 3: la caja se apoya en la base 2 la cual sale desde la grúa, lo que implica que la caja deberá vincularse a la base en el lapso de tiempo en que esta se mueve.

Una vez analizado, es hora de llevar la animación a nuestro archivo. Lo que haremos será colocarnos en el cuadro 0, seleccionar la caja dorada y luego aplicaremos el constraint de la siguiente manera: iremos a Animation >> Constraints y elegiremos Link Constraint. Notaremos que al aplicarlo, veremos una línea segmentada similar a cuando vinculamos los objetos. En este caso, elegiremos la base que está debajo de la caja y realizamos Click para terminar de asignar el restrictor.

Si reproducimos la animación notaremos que la caja queda vinculada a la base 1 y por ende se moverá con ella, pero quedará restringida a esta mientras dure toda la animación. Como queremos que en un siguiente momento se vincule a la grúa, con la caja seleccionada observaremos el Panel de animación ya que en este encontraremos la siguiente tabla llamada Link Params:

Link Params nos muestra los parámetros de Link Constraint dentro de los que se destacan:

Add Link: añade un objeto el cual será el “objeto padre” en un lapso de tiempo predefinido. En este caso, siempre debemos definir previamente el cuadro en el cual comience la influencia del objeto vinculante.

Link to world: esta es la opción por defecto y lo que hace es vincular el objeto al “mundo”, es decir, al espacio libre lo que implica que el objeto no podrá estar sujeto a ninguna jerarquía ya que no se vincula a ningún otro objeto.

Delete Link: borra el vínculo entre un objeto y otro.

Start Time: nos permite cambiar el cuadro en el que empieza el vínculo de acuerdo a lo que seleccionemos en la tabla Frame#.

Key Mode: establece modos de creación de Keyframes. Por defecto es No Key, pero podremos establecer la creación de cuadros clave sólo si el objeto pertenece a una jerarquía y se le aplica una restricción. Estos modos son:

Key Nodes: los cuadros clave se crean según las opciones Child (hijo) y Parents (padre). En el primer caso, los Keyframes se aplican a los objetos hijos mientras si escogemos Parents el keyframe se crea para el objeto padre y todos sus hijos.

Key entire Hierarchy: los cuadros clave se crean en la jerarquía del objeto según las opciones Child (hijo) y Parents (padre). En el primer caso, los Keyframes se aplican a los objetos restringidos y sus padres mientras si escogemos Parents el keyframe se crea para el objeto, todos sus objetivos y su jerarquía superior.

Nota: si se agregan objetos a la jerarquía después de aplicar Link Constraint, las opciones anteriores no funcionarán y por ello debemos volver a aplicar el Constraint con una de las opciones seleccionadas. 

Volviendo a nuestro ejercicio, mediante el regulador de tiempo iremos al cuadro 100 y una vez allí presionamos Add Link, y seleccionamos el soporte horizontal de la grúa ya que la idea es que este quede vinculado a la caja. Si bien se hubiera podido seleccionar el cuerpo de la grúa como objeto vinculante, esto no funcionaría puesto que este no “sube” ni “baja” ya que sólo rota, y tampoco se pueden seleccionar la tenazas puesto que la orientación de la caja cambiaría al moverse estas. Por esto mismo es que debemos seleccionar el soporte ya que este el único objeto que realiza las dos acciones definidas en la etapa 2 del esquema.

Una vez realizado esto, notamos que en la tabla tenemos los dos primeros parámetros ya definidos: en el cuadro 0 se define el link “Base 1” mientras que en el cuadro 100 se establece como link el objeto “soporte”, tal como se aprecia en la imagen siguiente:

Si reproducimos la animación notamos que la caja queda vinculada de forma correcta, aunque desde el cuadro 220 en adelante la caja no se vincula a la base 2. Para resolver esto, simplemente elegimos la caja y nos vamos al cuadro 220. En el panel de animación y mediante Add Link, elegimos la base 2 para resolver totalmente el problema y definir la animación final.

El renderizado final de nuestra animación es el siguiente:

6) LookAt Constraint

Este es uno de los constraints más interesantes puesto que significa literalmente “mirar hacia” ya que, al restringir la orientación de un objeto a la posición de otro, el primer objeto literalmente “mira” hacia el otro, y por ende se utiliza en animación de personajes ya que gracias a este restrictor podremos controlar la mirada de un personaje o realizar animaciones de objetos que sigan a algún otro. En este caso y para no realizar el ya clásico ejercicio de la mirada, veremos la herramienta mediante el siguiente ejercicio: abriremos el archivo llamado 3dsmax_animacion_lookatconstraint.max y al hacerlo se nos mostrará lo siguiente:

Como podemos notar, el archivo representa a un misil con el cual sigue una trayectoria y a la vez hay cuatro antenas, las cuales seguirán al misil para detectarlo. El misil ya está animado de antemano y por ende, no se debe hacer nada ya que sólo trabajaremos con el Dummy que controla el pivoteo de las antenas ya que a este es el que se le aplicará el Constraint. Podemos probar la correcta jerarquización de las antenas seleccionando el Dummy y luego rotándolo, donde apreciamos que todo funciona sin problemas:

Ahora aplicaremos el constraint de la siguiente manera: seleccionamos el Dummy de la antena más cercana al misil y luego iremos a Animation >> Constraints, y elegiremos LookAt Constraint. Notaremos que al aplicarlo, veremos una línea segmentada similar a cuando vinculamos los objetos. En este caso, elegiremos el misil y realizamos Click para terminar de asignar el restrictor.

Notaremos que en el caso de nuestra antena, se gira un poco y se activará el panel LookAt constraint. Al igual que en el caso de Path Constraint, podremos agregar más objetivos de mirada o mejor dicho, la orientación de los objetos que queremos a los que nuestro Dummy se restrinja y ajustar la influencia o peso de cada uno. Podremos agregarlos mediante Add LookAt Target y borrarlos mediante Delete LookAt Target. También podemos corregir la posición de la antena manteniendo su posición inicial activando la casilla Keep Initial Offset.

Aplicación de Keep Initial Offset.

Sin embargo, en el caso del Dummy esto último no es necesario ya que si bien se aplicó la restricción esta no es correcta, puesto que lo que necesitamos es que sea la antena la que “mire” al misil y al aplicar el restrictor esto no ocurre, ya que por defecto LookAt Constraint define que la orientación del Dummy respecto al eje “X” sea la que realmente esté observando al misil. Corregiremos esto simplemente yendo a Select LookAt Axis y estableciendo “Z” como eje de mirada. Esto hará que el Dummy se oriente en esa posición y por ende, toda la antena mire al misil y así se resuelva el problema:

Si bien el problema ya ha sido resuelto es interesante conocer la opción Viewline Length, ya que esta nos permitirá ajustar la longitud de la línea de mirada que se forma al realizar el Constraint. Por defecto es 100, perpo podremos alargarla o acortarla según lo necesitemos.

En el ejemplo, la longitud de Viewline es 70.

Si nos vamos a la cámara y reproducimos la animación mediante play, notaremos que la antena ya sigue al misil sin ningún problema y con esto hemos aplicado correctamente el restrictor.

Animación de la antena y el misil en el cuadro 75.

Ahora todo es cosa de repetir el procedimiento en el resto de las antenas para resolver el ejercicio y renderizar nuestra animación final.

Configuración final y test de la animación de las antenas y el misil en los cuadros 60 y 114.

El renderizado final de nuestra animación es el siguiente:

7) 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:

a) Animación de celosías.
b) Animación simple de una dirección de ruedas.

a) 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:

b) 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.

Este es el final de este tutorial.

Print Friendly, PDF & Email

¿Qué tan útil fue este artículo? Haga click en una estrella para puntuarlo

Puntuación media 5 / 5. contador de votos: 1

5
(1)

Contenido relacionado

Deje un comentario en este artículo