Tutorial 10: Animación básica

3dsmax_animacionDesde los tiempos primitivos el hombre ha intentado representar el movimiento, pasando por inventos como el zootropo hasta llegar a los dibujos animados modernos. Valiéndose del principio físico de la persistencia de la visión, en la que el cerebro humano retiene durante unas fracciones de segundo la imagen que captan sus ojos, los cineastas descubrieron que el cerebro, al ver una secuencia de imágenes a gran velocidad no es capaz de individualizarlas y por ende, este crea la ilusión de movimiento continuo. Esta secuencia de imágenes a gran velocidad es lo que se conoce como animación.

En animación cada una de estas imágenes se denomina cuadro o frame y la fluidez de la animación dependerá de la cantidad de cuadros “por segundo” que pasen ante nuestros ojos. Básicamente la cantidad de “cuadros por segundo” nos indica el número de imágenes que se muestran en un segundo de tiempo y se simboliza fps. Este formato se utiliza en cine y en televisión, y son los siguientes:

NTSC (El formato de TV que usamos en Chile): 30 fps.
PAL (El formato de TV que se usa comúnmente en Europa y Argentina): 25 fps.
Cine: 24 fps.

Concepto de cuadro clave

En las primeras décadas del siglo XX (y aún hoy) los dibujos animados eran realizados dibujando el o los personajes “cuadro por cuadro”. Al ser esta una tarea titánica (por ejemplo, para realizar 5 minutos de animación debemos dibujar unos 7.200 cuadros) los animadores se encargaban de dibujar las poses principales de los personajes para que luego animadores secundarios o asistentes dibujaran los cuadros intermedios. A partir de esto nace el concepto de cuadro clave o keyframe. A diferencia de la animación 2D tradicional, en 3DSMAX tenemos la ventaja que el programa dibuja los cuadros intermedios (interpolación) de forma automática mientras nosotros sólo definimos los cuadros clave. Entender perfectamente cómo crear y editar keyframes es necesario para crear animaciones realmente convincentes.

Podemos ver el tiempo total (en frames) de la animación en la línea de tiempo, la cual se ubica en la parte inferior del programa (imagen de abajo). El cuadro que nos indica un frame en la línea (en la imagen de abajo nos indica el frame 87/100) que posee una línea celeste y que podemos mover libremente se denomina regulador de tiempo.

Barra de controles de animación

La barra de controles de animación se encuentra en el lado inferior derecho del programa, y que podemos ver en la imagen de arriba.

En el cuadro de controles de animación encontraremos dos tipos de creación de keyframes, denominados Auto Key y Set Key. El ícono de la llave nos permite crear un keyframe de forma manual, que veremos más adelante.

En el cuadro de control vemos los controles de reproducción de la animación, los cuales funcionan igual que un equipo de música (rew, play, fast forward o ff) además que encontramos la función de play/pause, que nos permite ver a animación cuadro a cuadro. Si presionamos y mantenemos el botón play, podremos elegir Play Selected el cual nos permitirá reproducir la animación sólo de objetos que seleccionemos (seleccionando uno o más objetos que estén animados).

Otro elemento importante del panel de control es la configuración de tiempo o Time Configuration (el cuadro con el reloj de la imagen del lado). Además de este podemos encontrar otro menú en el cual podremos ver cada frame, de la misma forma que con play/pause.

Si activamos la configuración de tiempo accederemos al siguiente cuadro de la imagen derecha. En Frame Rate podemos definir la velocidad de los fps de acuerdo a los siguientes tipos:

– NTSC
– PAL
– Film (cine)
– Custom (fps personalizados).

En Time Display podemos establecer el método para mostrar el tiempo en el regulador de tiempo y en el programa. Esto puede ser en frames (por defecto), SMPTE, cuadros e impulsos o minutos, segundos e impulsos. Internamente 3DSMAX fracciona el tiempo en impulsos (1 impulso equivale a 1/4800 partes de 1 segundo).

En Playback podemos establecer el tipo de reproducción que queramos: en tiempo real (Real Time) el cual dependerá de la capacidad de nuestro PC, 5 velocidades de reproducción (1/4x, 1/2x, 1x, 2x, 4x), si queremos reproducir la animación sólo en la vista seleccionada (Active Viewport Only) o si queremos desactivar la repetición de la animación (Loop). Esto será válido sólo en la viewport de trabajo, pues en el render será siempre de 1X:

Animación reproducida en 1/4X

Animación reproducida en 1X (velocidad normal)

Animación reproducida en 1X (Render)

En Animation podemos determinar la duración de nuestra escena, en frames.

En Start Time podemos elegir el inicio de nuestra animación, el cual no tiene que ser necesariamente 0 ya que podemos iniciarla en algún frame específico incluso si este es negativo (ejemplo: -30).

En End Time podemos definir el final del último cuadro de nuestro segmento de tiempo.

Lenght se relaciona con las anteriores y representa la cantidad de tiempo total.

Frame Count se relaciona con las anteriores, y nos indica el cuadro de conteo.

Current Time nos muestra la posición actual del regulador de la línea de tiempo.

Re-scale Time nos permite reescalar el segmento de animación activo, con esto los cuadros clave son reescalados también lo cual nos permite acelerar o desacelerar una animación.

Métodos de creación de animación

Para crear animaciones existen dos caminos básicos que son:

–       Transformar un objeto mediante operaciones como mover, rotar o escalar.

–       Transformar un objeto mediante modificadores u otros, o editar algún parámetro en el tiempo.

Cuando animamos en 3DSMAX, cada cuadro en el cual hagamos un cambio se transforma en un keyframe y el programa realiza la interpolación de los frames intermedios hasta llegar al keyframe anterior.  Para animar en 3DSMAX podemos elegir el modo automático (Auto Key) o manual (Set Key). Para entender esto haremos un pequeño ejercicio de animación:

tu10_04

Para animar de forma automática, primero dibujaremos una tetera (teapot) y luego presionaremos el botón Auto Key. Notaremos que la línea de tiempo se vuelve roja lo cual nos indica que está en modo de animación. Ahora movemos el regulador de tiempo a la posición 30 y movemos un poco la tetera en X. Una vez que la movamos notaremos que en 0 y en 30 se han creado 2 cuadros rojos. Estos son los cuadros claves que ha creado el programa y que vemos en la imagen de la derecha. Si tomamos el primer cuadro y lo seleccionamos con un click, este se pondrá de color blanco. Los keyframes pueden ser movidos simplemente cambiándolos de posición en la línea de tiempo.

En este caso, movamos este frame hasta la posición 15 en la línea de tiempo y reproduzcamos la animación. Notaremos que esta parte recién en 15 y termina en 30. De la misma forma en que este keyframe puede ser movido, puede ser copiarlo si al moverlo presionamos y mantenemos Shift. En el caso de nuestro ejercicio, copiamos el primer frame a la posición 50 de la línea de tiempo. Intentemos ahora copiar el segundo frame a la posición 70 en la línea de tiempo y reproducimos la animación. Notaremos que la tetera se mueve hacia la derecha, luego a la izquierda y finalmente vuelve a moverse a la derecha. Como se ve en el ejercicio, los keyframes pueden ser movidos y copiados si lo necesitamos, incluso si no tenemos Auto Key activado. Para eliminar un keyframe, simplemente lo seleccionamos y presionamos Suprimir (Supr).

tu10_04b

Si queremos animar la tetera del ejercicio en el modo manual, debemos activar Set Key y luego presionar el ícono de la llave para establecer el primer keyframe en 0, luego movemos el regulador de tiempo a la posición 30, movemos nuestra tetera y una vez que lo hagamos presionamos nuevamente el ícono de la llave, para definir el segundo cuadro clave en 30. Al igual que en el modo automático, podemos mover, copiar o suprimir los keyframes. El modo manual es evidentemente más lento que el modo automático, pero a la larga es el más ventajoso puesto que se tiene mayor control de la animación.

Métodos de edición de keyframe

Sabemos que podemos mover, copiar o suprimir un cuadro clave. Sin embargo, si vemos el ejercicio anterior notaremos que la animación nos queda algo tosca ya que la transformación que le apliquemos será uniforme en todo el objeto. Para resolver esto podemos editar la animación mediante el Curve Editor, el cual nos permitirá editar la forma en que se animan las trayectorias.

Curve Editor: edita las trayectorias de la animación, basándose en los keyframes.

tu10_06

Al abrir Curve Editor, nos aparece el cuadro de arriba. Debemos tener seleccionado el objeto animado para poder ver las trayectorias de la animación. En el caso de nuestra tetera, vemos la curva que representa la animación (curvas rojas) que corresponde al movimiento de la tetera en X:

tu10_06ctu10_06b

Podemos editar esta curva tomando los cuadros clave (en plomo) y seleccionándolos mediante un click. Al igual que en la línea de tiempo, este se pondrá blanco y además aparecerá una línea discontinua con un punto celeste (asa), esta nos permitirá editarlas mediante cuevas bezier si seleccionamos y movemos el punto celeste. Podemos moverlas para ir probando nuestra animación y ver distintos resultados. Si presionamos el botón secundario en el keyframe, podemos acceder al cuadro de la derecha donde podremos definir la posición del keyframe, el value (amplitud de la curva) y el tipo de curvatura que veremos ahora:


     1         2         3      4      5        6        7

1.- Set tangents to Auto: Seleccione keys y elija esta opción en la barra de herramientas Tangentes de key de Track View para definir las tangentes en Auto de forma automática. Un icono desplegable también permite definir en Auto de forma individual las tangentes internas y externas. Mediante la selección de las asas de tangentes Auto, éstas se convierten automáticamente en personalizadas y pueden editarse.

2.- Set tangents to Custom: Define la keyframe en tangentes personalizadas. Seleccionamos la keyframe y luego presionamos este botón si quiere que editar las asas del keyframe. Definimos el tipo de tangente Dentro y fuera por separado utilizando el icono desplegable. Cuando empleamos las asas, utilizamos la tecla MAYÚS para romper la continuidad.

3.- Set tangents to Fast: Define la tangencia de la keyframe en rápido dentro, rápido fuera o ambos, dependiendo de lo que se haya elegido en el icono desplegable.

4.- Set tangents to Slow: Define la tangencia de la keyframe en lento dentro, lento fuera o ambos, dependiendo de lo que se haya elegido en el icono desplegable.

5.- Set tangents to step: Define la tangencia de la keyframe en pasos (steps) dentro, step fuera o ambos, dependiendo de lo que se haya elegido en el icono desplegable. Utilizamos Step para congelar el movimiento de una key a la siguiente.

6.- Set tangents to linear: Define la tangencia de la keyframe en línea dentro, fuera o ambos, dependiendo de lo que se haya elegido en el icono desplegable.

7.- Set tangents to smooth: Define la tangencia de la keyframe en suavizado. Utilizamos esta opción para uniformar el movimiento discontinuo.

Jerarquía y cinemática

En el mundo real los movimientos o rotaciones de muchos objetos dependen de otros a los que están subordinados. Por ejemplo, las ruedas de un auto giran gracias a la rotación del eje a la que están unidas y a su vez este eje puede rotar gracias al motor, etc. Esta relación se conoce como Jerarquía. En 3DSMAX, una jerarquía es una cadena de objetos vinculados entre sí que contienen una relación ascendiente/descendiente. Esto quiere decir que existe un “objeto padre” que es el que manda en la relación y un objeto hijo que está subordinado a este. Si este objeto padre se transforma, lo hará también el objeto hijo. Al igual que en el mundo real, un objeto padre puede tener muchos “objetos hijos” pero los objetos hijos no pueden tener más de un solo padre.

Para crear una jerarquía simplemente presionamos el botón Select and Link (imagen izquierda). Esto nos permitirá crear una jerarquía entre 2 o más objetos.

tu10_08

Seleccionamos el objeto hijo, luego presionamos y mantenemos el botón primario del mouse y arrastramos hasta el objeto padre.

tu10_08b

Así creamos la jerarquía y podemos probarla moviendo o rotando el objeto padre (en el caso de las imágenes del lado derecho el objeto padre es la tetera) y notaremos que la caja también es afectada por la transformación, y esta está subordinada a lo que se haga con la tetera.

Si tenemos seleccionado cualquier objeto que pertenezca a la jerarquía, podemos seleccionar y ver los objetos hijos si presionamos la tecla Av Pag (izquierda), y el objeto padre lo veremos si presionamos Re Pag.

tu10_08c

Si queremos eliminar la jerarquía, simplemente seleccionamos el objeto a desvincular y presionamos el botón Unlink Selection que está al lado del botón Select and Link.

Otra cosa importante es que además tenemos el panel de Hierarchy (izquierda), donde podremos editar los puntos de pivote de los objetos. Esto es importante si queremos, por ejemplo, cambiar el punto de pivote de una primitiva o un modelo 3D para animarlo (por ejemplo, una puerta). Tenemos 3 funciones importantes:

Affect Pivot Only: podremos transformar el punto de pivote del objeto, lo cual nos permitirá ponerlo en cualquier posición y desde ahí transformar el objeto.

tu10_10

Affect Object Only: podremos transformar el objeto sin afectar el punto de pivote original de este.

tu10_10b

Affect Hierarchy Only: podremos transformar la relación jerárquica de ese objeto sin afectar su punto de pivote ni al objeto en sí.

tu10_10c

Podemos activar o desactivar estas funciones simplemente presionando y luego volviendo a presionar el botón correspondiente

En el caso de la Cinemática, esta se divide en 2 partes: Cinemática Directa (Foward Kinematics) y Cinemática Inversa (Inverse Kinematics). La Cinemática Directa es simplemente la forma predeterminada de manipulación de las jerarquías. La Cinemática Inversa es un método de animación que invierte la dirección de manipulación de la relación jerárquica, es decir, si se transforma a los hijos se transforma el objeto padre. Este tipo de cinemática es muy útil para animar seres personajes o complejas jerarquías de huesos, como puede ser el caso de un ser humano.

Gracias a la cinemática y a la jerarquía, podemos por ejemplo animar objetos mediante cámaras simplemente enlazando el target o esta misma a los objetos.

Constraints o Restrictores de animación

Todo lo que se mueve, rota o escala, es decir, todo lo que es posible de animar está manejado por un controlador. Un controlador es un plugin que controla el almacenamiento y la interpolación de todos los valores animados, es decir, gestiona las tareas de animación.

Hay tres tipos de controladores predeterminados y estos son:

Posición: Posición XYZ.
Rotación: XYZ Euler.
Escala: Escala Bézier.

Además contamos con un tipo especial de controlador llamado Restrictor (Constraints) que facilita bastante el proceso de animación. Con los constraints se puede controlar la posición, rotación, y escala de un objeto. Dependiendo de la animación que deseemos realizar dependerá la cantidad de objetos que necesitemos para aplicar un constraint. Hay siete tipos que son:

Attachment Constraint: Asocia la posición de un objeto a la cara de otro:

Surface Constraint: Limita la posición de una superficie 2D a la superficie de otro elemento 3D:

Path constraint: Limita el movimiento de un objeto a lo largo de un recorrido.

Position constraint: Limita la posición de un objeto a la posición de otro:

Link Constraint: Genera uno o más vinculos entre el objeto que tiene la restricción y otros:

LookAt constraint: Limita la orientación de un objeto a la posición de otro:

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 constraint que aplicaremos. Por ejemplo, si queremos animar el recorrido de un automóvil a través de una carretera entonces debemos aplicar Path Constraint ya que este nos permite animar el objeto en torno a un recorrido 2D. En el caso de la Arquitectura, bastará con Path Constraint para animar un recorrido. Realizaremos un sencillo ejercicio donde aplicaremos Path Constraint.

Animando con Path Constaint

tu10_12

Lo primero que haremos es dibujar en la vista top una tetera y un círculo 2D de modo que ambos queden centrados en el origen y que el radio del círculo sea mucho mayor que el tamaño de la tetera. Ahora en la misma vista colocaremos una cámara de tipo target, de tal forma que el objetivo de la cámara esté centrado en el origen. La idea es que todo esto se vea como la imagen:

tu10_12b

Podemos elevar un poco el círculo de tal forma que la altura sea más o menos la mitad de la tetera. Ahora seleccionaremos la cámara e iremos a Animation >> Constraints >> Path Constraint y nos aparecerá una línea discontinua, ahora todo es cosa de seleccionar el círculo y hacer click para aplicar el restrictor.

Notaremos que la cámara está alineada con el círculo, que se han creado 2 keyframes en 0 y 100 y que si reproducimos, notaremos que la cámara ahora orbita en torno a la tetera utilizando el círculo 2D como recorrido. Si queremos, podemos editar el radio del círculo y podemos transformarlo para mejorar la animación de la cámara, o también podemos mover los keyframes creados en la línea de tiempo.

Para ver la animación desde la cámara simplemente tecleamos C en cualquier vista y reproducimos.

Podemos repetir el ejercicio pero esta vez modelando un sencillo vehículo y realizamos los mismos pasos, aunque en ese caso posiblemente el objeto no nos quede bien alineado en el recorrido como podemos ver en la imagen de abajo:

animation001

Podemos resolver esto yendo al cuadro de animación mostrado más arriba y activar las opciones de Follow (seguir) y para que nuestra nave vuele de forma más realista podemos activar Bank (girar en su eje). Esto hará que el objeto siga al recorrido y podremos orientarlo utilizando los Axis X, Y y Z (si la nave nos queda de forma invertida al recorrido podremos invertirla con Flip). En la imagen de abajo, la nave se ha volteado activando follow y luego bank, el Axis se ha modificado a X y luego se ha activado flip para ajustar a la posición correcta:

animation001b

Ahora todo es cosa de reproducir la animación para ver el resultado final:

Los ayudantes o helpers

Los ayudantes son esenciales para la animación de formas complejas ya que son objetos “ficticios” en los cuales podremos aplicarles cualquier relación de jerarquía o algún constraint de animación. Estos son muy utilizados por los animadores cuando queremos no comprometer a los objetos originales con las relaciones o las animaciones o para no crear formas 3D que dificultarían la labor de animación. Los ayudantes se crean en el panel de helpers (imagen derecha) y los más populares son: Dummy, Tape y Point.

Dummy: es un cubo virtual que cumple la función de ser un receptor ya que allí podremos aplicar las restricciones o los vínculos necesarios sin aplicarlos al objeto ya que este pasa a ser el elemento hijo del Dummy. Un Dummy no tiene parámetros modificables.

Point: similar al Dummy pero nos genera una cruz virtual que indica la posición de un punto. Podemos editar el tamaño, o desplegar los ejes del punto.

Tape: es una cinta virtual que nos permitirá acotar los objetos.

Representando la animación

Representar o renderear la animación es tarea sencilla en 3DSMAX, para ello deberemos ir a la opción de Render Setup y en Common nos daremos cuenta que está activada la opción Single. Esto significa que cuando presionemos el botón de render se representará una sola imagen, la cual podremos guardar como imagen de tipo jpg o similar. Esta imagen está por defecto en el frame 0, pero podemos renderear cualquier frame que queramos si antes lo seleccionamos en la línea de tiempo. Para elegir una secuencia de imágenes, tenemos las siguientes opciones:

Active time Segment: selecciona toda la línea de tiempo.

Range: nos permite establecer un rango de animación en la línea de tiempo.

Frames: podemos elegir la cantidad de frames que queramos, de forma similar a cómo elegimos las páginas a imprimir en Word.

En Area to Render podemos elegir el área que se rendereará: View (renderea toda la ventana), select (objeto seleccionado), Region, Crop (área de recorte de la ventana) y Blowup (similar a Crop pero el render utiliza todo el tamaño de imagen).

En la opción Output Size tenemos los diferentes formatos de pantalla, además de los cuadros con los formatos 320 x 240, 720 x 486, 640 x 480 y 800 x 600. El tamaño de la película dependerá de la presentación que queremos realizar, por ejemplo 320 x 240 es ideal para testear la animación de prueba mientras que deberemos renderear en NTSC DV para la animación final si es que queremos presentar una animación que será transmitida por TV, ya que este nos presenta la calidad de DVD.

Si realizamos el render eligiendo una secuencia de imágenes, nos aparecerá un cuadro que nos advertirá que los frames se perderán pues no han sido asignados a un archivo. Esto ocurre porque debemos guardar el archivo antes de realizar el render, pues de otra manera no podremos verlo en el PC una vez rendereados todos los frames. Por ello debemos bajar por la persiana de Common hasta llegar a Render Output y allí presionamos el botón files:

tu10_19

Nos aparecerá un cuadro donde nos pedirá el nombre del archivo a guardar y en el menú de abajo aparecerán los formatos con los que guardaremos la película. Los formatos de Video más populares son AVI y MOV.

tu10_20

Esta opción nos permitirá además guardar la secuencia de imágenes en formatos de imagen como JPG, TIFF o TGA, aunque si lo hacemos nos guardará tantas imágenes como frames tenga la animación. Por ejemplo, si tenemos una animación de 100 frames y guardamos toda la secuencia como jpg y con el nombre de animacion, nos guardará en la carpeta 100 imágenes renombradas como animacion0001.jpg, animacion0002.jpg, etc. Por ello deberemos guardar la película en AVI para que nos cree el archivo de Video.

tu10_21

Una vez que hemos asignado un nombre y el tipo de archivo como AVI, nos aparecerá un cuadro donde elegiremos el compresor para el video. DV video encoder es el mejor para el formato de TV, mientras que Cinepak Codec es ideal para archivos pequeños. Una vez que elegimos el compresor (usualmente Cinepak Codec) damos OK y con esto finalizamos la configuración.

Una vez que creamos nuestro archivo, en Render Output ahora está disponible la opción Save File. Podemos activarlo o desactivarlo si por ejemplo, queremos ver un frame específico y necesitamos renderizar una sola imagen sin que guarde todo el archivo.

Ahora todo es cosa de ejecutar el render y esperar que el programa termine de representar todas las imágenes. Una vez que finalice, vamos a la carpeta donde guardamos el archivo y ya podremos verlo con el reproductor de Windows.

Una cosa importante: el tiempo que demore nuestro render dependerá de la complejidad de la escena y de cómo hayamos aplicado las soluciones de texturizado e iluminación en los modelos. En el caso de escenas 3D muy complejas el tiempo de render será inevitablemente muy largo, por lo que se recomienda renderizar de noche, dejando al PC trabajando “toda la noche” o incluso por algunos días si es necesario.

Este es el fin de este tutorial.

Bibliografía utilizada:

– Tutorial Animation Essentials del profesor Sebastián Huenchual H., Carrera Animación Digital 3D, Instituto DGM.

– 3DSMAX User Guide reference.

– Manuales USERS 3DSMAX por Daniel Venditti. Ediciones MP, Buenos Aires, Argentina.

image_pdfimage_print

2 comentarios en “Tutorial 10: Animación básica”

  1. Do you have a spam problem on this blog; I also am a blogger, and I was curious about your situation; we have created some nice practices and we are looking to swap techniques with
    others, please shoot me an email if interested.

    Look at my webpage: wedding venue

  2. Muy buen tuto amigo!! A ver si soy capaz de arrancarme ya con la animación 😉 aunque yo es enfocado a arquitectura.

Deja un comentario