Reedición de los primeros tutoriales de AutoCAD 2D

Estimados visitantes, después de un tiempo sin actualizar el sitio debido particularmente a lo que está ocurriendo en mi país (Chile), he realizado algunas modificaciones a la web las cuales detallo a continuación:

– Se cambian las imágenes destacadas de todos los tutoriales y artículos del blog ya que esta vez se incluye en estas la categoría a la que pertenecen, además de diferenciarlas por color para que sea más fácil de reconocer (también se arreglan las páginas respectivas). En algunos casos fundamentales estas imágenes se han renovado por completo.

– Se han reeditado los primeros tutoriales de AutoCAD 2D ya que estos estaban bastante obsoletos. La modificación más importante es el recambio de todas las imágenes al formato PNG y por supuesto, actualizados a la versión 2018 de AutoCAD además que en varios casos se agregan más imágenes para hacer más claro el tutorial respectivo. También se agregan más textos y en el caso del tutorial de acotación en AutoCAD se ha complementado con mayor información respecto al editor de estilos de cotas, algo que estaba pendiente desde hace bastante tiempo.

En resumen, los tutoriales que se han reeditado por completo son:

Tutorial 01 (dibujo mediante Snap).

Tutorial 02 (Tramados).

Tutorial 03 (Dibujo de pieza).

Tutorial 04 (dibujo de Timón).

Tutorial 05 (Proyección de vistas).

Tutorial 06 (Acotado en AutoCAD).

Bueno estimados visitantes eso es todo por el momento y como siempre, agradezco de sobremanera el apoyo dado a este blog ya que ello permite que este proyecto siga adelante. Y por supuesto, espero seguir publicando y/o renovando el material de esta web.

Saludos cordiales,

Nuevos tutoriales de 3DSMAX agregados

Estimados visitantes, junto con saludar les anuncio una nueva actualización del blog ya que en esta ocasión se han agregado nuevos tutoriales de 3DSMAX relacionados con el tema de animación 3D ya que, como comenté en un post anterior, el tutorial 10 original se ha renovado por completo y por ello, a partir de aquel se han rehecho desde cero 5 nuevos tutoriales relacionados con el tema. Los nuevos tutoriales que se agregan a 3DSMAX son:

Tutorial 10b: Jerarquías y cinemática directa.

Tutorial 10c: Animación mediante Path constraint.

Tutorial 10d: Animación mediante Constraints parte 1: Attachment, Surface y Position Constraint.

Tutorial 10e: Animación mediante Constraints parte 2: Link, LookAt y Orientation Constraint.

Tutorial 12: Representación final de animación mediante vídeo.

Pueden verlos haciendo click en los enlaces respectivos o yendo a la sección tutoriales 3DSMAX. También notarán que se han mejorado las imágenes destacadas de todos los tutoriales de 3DSMAX y se están editando las de los tutoriales restantes, ya que la idea es usar estas nuevas imágenes en lugar de las anteriores y no se descarta en un futuro seguir agregando más material o renovar por completo varios tutoriales antiguos, como por ejemplo los primeros de AutoCAD 2D que ya están obsoletos.

Como siempre, agradezco sus visitas y nos vemos en una siguiente actualización. Saludos.

3DSMAX Tutorial 12: Animación en 3DSMAX, Representación final en vídeo

En este tutorial aprenderemos a generar la salida final de cualquier animación realizada en 3DSMAX, así como también vamos a conocer los formatos más utilizados en imagen y en vídeo para la correcta visualización de esta. Sin embargo, antes de representar un render o un vídeo debemos tomar en cuenta los siguientes aspectos previos:

1) El formato de salida del renderizado final.

2) La resolución en la pantalla y/o tamaño de impresión.

3) El tiempo total de renderizado.

En este tutorial veremos todos estos aspectos y además, aprenderemos a representar la animación en vídeo mediante 3DSMAX utilizando el cuadro Render Setup.

Formatos de Salida

Como ya sabemos, al presionar la tecla F9 representaremos los objetos 3D de una escena en 3DSMAX mediante un Renderizado o Render, el cual significa literalmente “interpretar” o “representar” ya que el programa toma todos los objetos, materiales, luces, fuerzas, entorno, animaciones y parámetros que hemos aplicado en la escena, y los convierte en un formato apto para ser visualizado y exportado a medios multimedia, además de ofrecer la mejor calidad. En este caso tenemos dos tipos de formato de salida que son:

a) Imagen estática: este formato corresponde a una fotografía o gráfico en formato bidimensional, donde apreciamos el resultado de nuestro trabajo en la escena. Si tenemos una animación ya realizada en 3DSMAX, la imagen será diferente según el cuadro en el cual apliquemos el renderizado. Si en cambio no animamos, el resultado será siempre el mismo independiente del cuadro en el que se renderice. En el caso de las imágenes, 3DSMAX dispone de los siguientes formatos conocidos:

– JPG: este es el más popular de todos ya que al ser un formato de imagen comprimido, posee muy bajo peso y es fácil de manipular y editar. Debido a su naturaleza, este formato no se recomienda para renders finales o impresión en plotter ya que este pierde calidad a medida que se comparte, o se disminuye su resolución. Sin embargo, es bueno para enviar borradores o vistas previas de un trabajo antes del renderizado final.

– BMP: es un formato de imagen no comprimido y por lo tanto no se pierde calidad, aunque tiene por desventaja su excesivo peso y además no soporta Canal Alfa o Alpha Channel, el cual nos permite transparentar el fondo.

– PNG: es el formato ideal para renderizar ya que posee relativamente bajo peso y no se pierde calidad, además de soportar el Canal Alfa. Se utiliza preferentemente para renderizados en páginas web o trabajos finales que no requieran ser impresos.

– TGA: formato ideal para realizar videos profesionales para TV o cine, ya que soporta Canal Alfa y posee la mejor calidad de imagen a pesar de su relativamente alto peso. Para trabajar con este formato, se suele imprimir cada fotograma en TGA y luego se lleva toda la secuencia a un editor de vídeo, donde se convierte en la película final.

– TIFF: es el formato indicado para la impresión mediante plotter o de forma física puesto que nos permite determinar la cantidad de DPI (puntos por pulgada) y el tamaño de impresión final, y ofrece excelente calidad aunque con un peso relativamente alto. Este formato se utiliza para realizar los renders finales.

También existe otro formato que no posee 3DSMAX pero que se debe conocer:

– GIF: formato pensado inicialmente para páginas web ya que posee bajo peso, soporta transparencias y se puede animar, aunque está limitado sólo a 256 colores simultáneos.

Algunos de estos formatos pueden verse en la imagen siguiente:

Comparación de calidad entre los formatos JPG, PNG y TIFF.

b) Vídeo: este formato corresponde a una secuencia de fotografías o gráficos en formato bidimensional, donde apreciamos el resultado de nuestro trabajo en la escena. Esta secuencia es guardada en un único archivo el cual podrá ser reproducido en un dispositivo físico o virtual en forma de película. En este caso, 3DSMAX dispone de los siguientes formatos:

– AVI: el más popular de todos ya que se utiliza en vídeo digital y TV y, por ende, se puede utilizar tanto para enviar pruebas de animación como para el renderizado final. Ofrece buena calidad en general a un peso de archivo aceptable.

– MPG: es un formato que se utiliza para dispositivos DVD ya que su resolución es de 720 x 480 o 720 x 486. Por ello, es un archivo pesado pero con buena calidad de imagen.

– MOV: formato pensado inicialmente para videos Web de Apple el cual posee bajo peso y calidad aceptable, aunque actualmente ya no se encuentra disponible en las versiones nuevas de 3DSMAX.

Existe un tercer formato más moderno que sería el de la impresión 3D, sin embargo este no se considera como formato de animación o de Render ya que que sólo sirve para imprimir de forma física el modelo 3D.

La importancia de conocer los formatos de imagen y vídeo radica justamente en que sepamos cual o cuáles ocupar en caso que necesitemos enviar una prueba, un vídeo final o una imagen para imprimir en forma física. Elegir el más adecuado dependerá de lo que necesitemos realizar.

Resolución y/o tamaños de impresión

Además de los formatos en sí mismos, también deberemos tomar en cuenta la “resolución” de una imagen o un vídeo. La resolución se define simplemente como el tamaño que tendrá la fotografía o el vídeo en la pantalla de un PC, y afecta a una imagen o a una animación completa. En este caso siempre tomaremos en cuenta lo siguiente:

La resolución de una imagen o vídeo es medida en Píxeles (puntos de la pantalla) y por ende, una mayor resolución posee más calidad aunque también agregará más peso por imagen y por ende, hará más demoroso el proceso de renderizado. En cambio, menores resoluciones disminuirán la calidad pero harán más livianos los archivos y por ello, el proceso de renderizado será más rápido.

Las resoluciones Standard más utilizadas y que existen en 3DSMAX son:

– 320 x 240 píxeles (borrador).

– 640 x 480 píxeles (PC antiguo).

– 720 x 486 píxeles (DVD).

– 800 x 600 píxeles (PC Standard).

– 1280 x 720 píxeles (HD).

– 1920 x 1080 píxeles (HD).

En cuanto a los tamaños de impresión, sólo funcionan en el caso que queramos imprimir una fotografía en un medio físico y por ende usando el formato TIFF. El tamaño de impresión se mide en “Puntos por pulgada” o Dot Per Inch (DPI), el cual precisamente representa la cantidad de “puntos” que las impresoras de tinta pueden imprimir en el espacio lineal de una pulgada (2,54 cm). Esto puede apreciarse en el ejemplo siguiente:

 

Imágenes a 10 y 72 DPI respectivamente. Ambas poseen 580 x 580 pixeles de resolución de pantalla para realizar la comparación, pero la primera se pixelea demasiado debido a que en 10 DPI esta debiera tener una resolución de 81 x 81 pixeles. Sin embargo, el tamaño de impresión en plotter para ambas es de 20,46 cms.

Un aspecto interesante de los DPI es que se relaciona directamente con el tamaño de un formato de papel y por ende, mientras la imagen sea de mayor tamaño menos DPI serán requeridos. Por ejemplo, si queremos imprimir un documento en un formato A0 requeriremos unos 76 DPI, mientras que si queremos imprimir el mismo documento en un formato carta o A4, requeriremos 300 DPI para lograr una calidad óptima. Por ello, la cantidad de DPI dependerá siempre del tamaño final del papel.

Hay muchas resoluciones en DPI pero los más utilizados son:

– 72 DPI (periódico, Internet).

– 150 DPI (Formato A2 y calidad media).

– 300 DPI (Calidad Óptima).

Sin embargo, es bueno aclarar también que se pueden colocar más DPI a tamaños grandes y así se logrará una mejor calidad, aunque también a un alto costo de impresión y render.

Tiempo de renderizado

De acuerdo a los puntos 1) y 2), podemos concluir que ambos influirán notoriamente en el tiempo final del proceso de renderizado, aunque también se debe considerar el tipo de PC del que dispongamos y el tiempo que durará nuestra animación. Por esto mismo, al realizar cualquier animación en 3DSMAX se recomienda lo siguiente:

Animaciones previas o de prueba:

– En lo posible se deben realizar varias animaciones de prueba antes del renderizado final. Estas se demorarán relativamente poco ya que normalmente no utilizan luces GI ni iluminación artificial. También se deben realizar ya que el tiempo de animación mostrado por la Viewport del programa NO necesariamente es el mismo tiempo del renderizado final, ya que en este último caso suele reproducirse de forma más lenta.

– Para la animación de prueba siempre se deben usar bajas resoluciones (320 x 240), y en lo posible sin materiales ni iluminación aplicados.

Animaciones finales:

– Usar resoluciones altas en video, mínimo de 640 x 480 píxeles. Nunca usar pequeñas pues se verán pixeladas en pantalla al agrandar el video.

– Usar calidad alta, pero si esto no es posible usar la calidad media ya que esta posee una resolución aceptable y no es tan demorosa como las más altas. Si el PC nos lo permite, podemos usar calidades más altas. En motores de render como ART Render, usar calidad Medium o superior y Noise Filter en un 50% al menos.

– En general, la creación y el renderizado de una animación de forma profesional demora muchísimo tiempo (desde algunas horas hasta varios días incluso) y por lo tanto, se debe realizar con mucha anticipación. Para el caso de proyectos de Arquitectura, se recomienda no utilizar tiempos excesivamente largos (2 minutos como máximo), ni tampoco demasiado cortos que no permitan ver la animación de forma óptima (mínimo de 10 segundos).

– En lo posible, trabajar con varias escenas y luego componer todas las animaciones finales en un editor de vídeo como Premiere o similar. Si se trabaja de forma profesional o para TV, siempre se debe renderizar la animación en una secuencia de imágenes TGA, ya que los formatos de vídeo de 3DSMAX poseen calidad inferior a las que pueden generar el editor de vídeo.

Ya vistos estos principios previos al renderizado final, procederemos con la representación correcta de una animación en el render de 3DSMAX.

Representando la animación en 3DSMAX

Representar o renderizar la animación es una tarea relativamente sencilla en el programa, ya que nos bastará con ir a la opción llamada Render Setup presionando el botón respectivo (imagen inferior) o mediante la tecla F10:

Una vez que accedamos a Render Setup iremos a la persiana Common, ya que allí configuraremos los aspectos básicos de la salida como la resolución o el tipo de renderizado que queremos, además que es la persiana que está activa por defecto.

Nos daremos cuenta que en Common Parameters >> Time Output se encuentra activada por defecto la opción Single (solo). Esto significa que cuando presionemos el botón Render (1) nos aparecerá el cuadro Rendering (2) y el resultado final se representará una sola imagen, la cual aparece dentro del cuadro llamado Rendered Frame Window (3).

En la parte superior izquierda de Rendered Frame Window tendremos varios iconos donde podremos realizar varias operaciones relativas a la gestión de la imagen renderizada. Estas son:

1) Save Image: guarda la imagen en el formato que estimemos conveniente.
2) Copy Image: copia la imagen en el portapapeles.
3) Clone Image: realiza una copia exacta de la imagen pero dentro de la misma interfaz del programa.
4) Print Image: imprime la imagen.
5) Clear Image: limpia o borra la imagen, dejando el marco negro en Rendered Frame Window.

Volviendo a la persiana Common, tenemos las siguientes opciones de configuración del render:

Time Output

– Single: renderiza una imagen única. Si es una animación se renderizará la imagen del cuadro en el que esté posicionado el regulador de tiempo.

– Active time Segment: selecciona todos los cuadros de la línea de tiempo y los renderiza imagen por imagen, o mediante vídeo si lo elegimos. Si previamente no guardamos el video o las imágenes, la secuencia se perderá una vez finalizado el render.

– Range: nos permite establecer un rango de animación en la línea de tiempo. Esto es útil para renderizar la escena por partes y así acortar los procesos de renderizado si la escena es muy compleja. Por ejemplo, si tenemos una animación de 0 a 100 podemos dividir la escena en dos secuencias: una que irá de de 0 a 50 y otra desde 51 a 100.

– Frames: podemos elegir la cantidad de frames que queramos, de forma similar a cómo elegimos las páginas a imprimir en Word. Podemos establecer el número de cuadro seguido de una coma (,) para seguir con el siguiente, o indicar un rango mediante línea (-).

Area to Render

En Area to Render podemos elegir el área que queremos que se renderice, y por defecto es la opción View lo que implica que la imagen se renderizará en toda la ventana o viewport activa. Además de esto tenemos las siguientes opciones:

Select: muestra el render de uno o más objetos seleccionados previamente en la viewport, obviando el resto de los objetos que tengamos en la escena.

Region: selecciona una porción o región de la viewport (la cual podremos definir de forma libre tomándola desde los cuadrados) y la muestra en Rendered Frame Window. Si anteriormente se ha renderizado otra imagen, la región seleccionada se renderizará encima de esta. Esta opción es sumamente útil cuando queremos testear ciertos detalles sin tener que renderizar toda la imagen.

Si activamos la opción Auto Region Selected, en el render final se recortará de forma automática todo lo que no se use en la escena.

Crop: similar a Region ya que podremos realizar lo mismo, pero la región renderizada sólo tomará la región seleccionada y cortará toda el área no utilizada en Rendered Frame Window, mostrando bordes grises.

Blowup: similar a Crop ya que podremos realizar lo mismo, pero el render utiliza toda el área de Rendered Frame Window además que al editar la región mediante los cuadros, esta siempre se escalará de forma proporcional a la viewport.

Output Size

En la opción Output Size tenemos los diferentes formatos de resolución de pantalla, con la opción Custom por defecto la cual nos muestra las siguientes resoluciones:

– 320 x 240.
– 720 x 486.
– 640 x 480.
– 800 x 600.

Además de las resoluciones personalizadas tenemos muchas otras para elegir. Las más importantes son NTSC D-1 y DV, PAL y HDTV (Alta resolución). En la resolución personalizada o Custom podremos modificar el tamaño de la imagen de pantalla mediante los parámetros ancho (Width) y alto (Height), lo cual a su vez modifica la opción Image Aspect el cual es la relación proporcional entre ambos parámetros. Por defecto este valor es 1,33, el cual representa la relación de la clásica pantalla de TV de 4/3.

En el ejemplo, se renderiza la imagen mediante valores personalizados de Width y Height.

Si establecemos el tamaño de imagen de forma personalizada y por ende modificamos Image Aspect, notamos que la imagen queda fuera de cuadro pero que podremos resolver editando el parámetro llamado Pixel Aspect, el cual modifica la escala vertical de encaje de la imagen.

En el ejemplo, se renderiza la imagen mediante valores personalizados de Width y Height pero a su vez se modifica el valor en Pixel Aspect.

Finalmente, podremos bloquear ambas relaciones de aspecto simplemente presionando el candado derecho de cada opción. Esto mantendrá siempre la proporción definida en Width y Height y por ende, bastará modificar un solo valor de estos (Width o Height) para que aumente el tamaño en pantalla.

Como ya sabemos, el tamaño de la película final siempre dependerá del tipo de presentación que queremos realizar ya que no es lo mismo realizar una prueba de animación que la película final. Por ejemplo, 320 x 240 pixeles es la resolución ideal para testear la animación de prueba mientras que para definir la película final deberemos renderizarla en NTSC DV o HDTV.

Si realizamos el render de una animación eligiendo una secuencia de imágenes (Active Time Segment o Range), nos aparecerá el siguiente cuadro:

Este nos advertirá que toda la secuencia se perderá una vez finalizado el renderizado debido a que esta no ha sido asignada a un archivo. Esto ocurre porque para el caso de los vídeos o las secuencias de imágenes, SIEMPRE debemos crear previamente el archivo antes de realizar el render puesto que de otra manera no podremos verlo en el PC una vez renderizados todos los frames. Por ello, debemos bajar por la persiana Common hasta llegar a la opción Render Output y una vez allí presionamos el botón Files…

Al hacerlo, nos aparecerá un nuevo cuadro llamado Render Output File, donde en File Name se nos pedirá el nombre del archivo que deseamos guardar y en el menú Save as Type aparecerán los formatos de vídeo o de imagen con los que guardaremos la película.

Save as Type nos permitirá elegir un formato de vídeo y además guardarla en formato de imagen como JPG, TIFF o TGA. Si elegimos estos formatos, la película se guardará en tantas imágenes como frames o cuadros posea 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.

Ahora bien, si trabajamos de forma profesional en el campo de la TV, debemos siempre guardar la secuencia de imágenes en formato TGA. Para el caso de la película final, también la podremos guardar en formato AVI para que 3DSMAX nos cree el archivo de vídeo respectivo. Si elegimos AVI y luego aceptamos, nos aparece el cuadro llamado AVI File Compression Setup:

En este cuadro elegiremos el compresor más adecuado para el video. En la versión moderna de 3DSMAX podremos elegir entre tres opciones: DV video Encoder, MPEG Compressor y Uncompressed. La mejor calidad la tiene esta última opción (puesto que es el vídeo AVI sin compresión) aunque a su vez el vídeo es por lejos el más pesado, mientras que MPEG Compressor nos dejará el vídeo en MPG el cual es apto para DVD. Las versiones antiguas de 3DSMAX además poseen compresores extras como Cinepak Codec, el cual es ideal para archivos pequeños o animaciones de prueba. Una vez que elegimos el compresor (usualmente DV Video Encoder), aceptamos mediante OK y con esto finalizamos la configuración.

Una vez que creamos nuestro archivo, en Render Output ahora está activa la casilla Save File. Esto creará el archivo definitivo de la película al presionar el botón Render.

Importante: una vez activada esta opción, si renderizamos mediante vídeo o imagen este render SIEMPRE sobrescribirá el archivo si este ya ha sido renderizado anteriormente, aunque por suerte el programa nos avisará sobre esto gracias al cuadro File Exists:

Si ya tenemos un vídeo renderizado y no queremos que al renderizar otra imagen se sobreescriba, debemos desactivar la casilla Save File para por ejemplo, ver y renderizar un frame o cuadro específico mediante una sola imagen (Single) sin que se necesite guardar todo el archivo. Si quisiéramos crear otro vídeo y conservar el archivo ya creado guardarlo debemos ir a Files… y asignar otro nombre al archivo al nuevo vídeo.

Una vez configurado todo lo anterior, ahora es cosa de ejecutar el render mediante la tecla F9 y esperar que el programa termine de representar todas las imágenes. Una vez que este finalice, nos vamos a la carpeta donde guardamos el archivo y ya podremos verlo con el reproductor de Windows.

Una cosa muy importante: como ya sabemos, 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 se 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.

 

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.

3DSMAX Tutorial 10d: Animación en 3DSMAX, Constraints Parte 1

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 todos los Constraints de animación 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_constraints.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 todos los constraints de 1) a 4) a excepción de 3), el cual ya fue visto en su propio tutorial.

1) Attachment Constraint

Attachment Constraint se encarga de asociar la posición de un objeto (mediante su punto de pivote) en la cara de otro, siempre y cuando la superficie o cara sea de tipo “mesh” y por ende, se recomienda que los objetos a los que se asocien sean de tipo Editable Mesh o primitivas básicas ya que si bien se puede ocupar Attachment Constaint en objetos de tipo Editable poly, la animación final no será visible en el render.

Para entender el funcionamiento de la herramienta desarrollaremos el siguiente ejercicio: animaremos una superficie de tipo Editable Mesh mediante Noise simulando un “mar”, y pondremos botes mediante Attachment Constraint. Por ello, abriremos el archivo llamado 3dsmax_animacion_attachconstraint.max y al hacerlo se nos mostrará lo siguiente:

Como podemos notar, el archivo posee una superficie de tipo Editable Mesh ya dividida y animada que simula agua, y cuatro yates. La idea es que los yates se vinculen a la superficie y sean mecidos por las ondulaciones del agua. Lo que haremos será colocarnos en el cuadro 0, seleccionar uno de los yates y luego aplicaremos el constraint de la siguiente manera: iremos a Animation >> Constraints y elegiremos Attach Constraint. Notaremos que al aplicarlo, veremos una línea segmentada similar a cuando vinculamos los objetos. En este caso, elegiremos la superficie y realizamos Click para terminar de asignar el restrictor.

Como notamos, el yate se posiciona en la segunda cara de la superficie de acuerdo a la Tabla Attachment Parameters. Sin embargo, debemos entender este concepto para saber cómo funciona Attachment Constraint ya que de no entenderlo, podemos caer en el error de posicionar el objeto de forma incorrecta. 3DSMAX define como “cara” o “Face” al primer polígono fundamental que forma un polígono cuadrado el cual es un triángulo, lo que implica que cualquier polígono (el cual a su vez es parte de una malla) estará formado por dos caras ya que son dos triángulos los cuales definen a este, tal como se aprecia en la imagen de abajo:

En la imagen se selecciona la cara 1 del primer polígono en el plano.

De acuerdo a la subdivisión de la imagen, la superficie del agua de nuestro ejercicio tiene una división de trama de 15 x 15 polígonos y por ende tenemos en total 225 de estos. Pero como ya sabemos que un polígono está formado por dos caras, en total tenemos 450 de estas mismas. Por lo tanto, al modificar los parámetros de posición de Attachment Constraint, debemos tomar en cuenta que el total de caras será 450 y la primera de las caras se posiciona en la parte inferior derecha, que es donde está precisamente nuestro yate aunque por defecto, tomará la segunda cara como posición inicial.

Selección de todas las caras que forman el plano mediante la trama de 15 x 15 polígonos (total de caras: 450).

Selección de la cara 2 de las 450 totales que forman el plano anterior.

Podemos verificar fácilmente las caras de la superficie moviendo el parámetro Position >> Face en la tabla llamada Attachment Parameters, la cual se encuentra en el panel de animación. Notaremos que si asignamos la cara 451, volverá por defecto a la primera cara de nuestra superficie ya que comienza nuevamente con el conteo.

Posición del objeto en la caras 115 y 451 del plano.

Un aspecto interesante de la opción Position es que, además de poder cambiar la cara a la que se posiciona nuestro objeto mediante Face, podremos ingresar valores de coordenadas numéricas (A y B) para mover el objeto a través de la cara seleccionada, la cual se representa mediante el triángulo de contorno negro que está dentro de la misma tabla. También podremos hacerlo tomando el punto rojo con el mouse y luego arrastrándolo, presionando y manteniendo el primer botón de este. Podremos incluso salirnos de la representación gráfica de la cara y cambiarlo a otra posición aunque estará siempre asociado a la cara asignada en Face, tal como se muestra en los ejemplos siguientes:

Ejemplos de modificación de posición del objeto en la cara 115, mediante la modificación de los parámetros de A y B respectivamente. En la segunda imagen notamos que el punto rojo se sale del cuadro de la representación gráfica de esta.

Si queremos establecer la posición final del objeto, simplemente presionamos el botón Set Position. Esta opción es importante puesto que además de establecer la posición del objeto, nos permitirá animarlo de una cara a otra.

Otras opciones de la tabla Attachment Parameters son:

Attach to: Permite cambiar la superficie o el objeto al que está restringido el objeto al cual se le aplica la restricción, presionando el botón Pick Object y luego seleccionando el objeto.

Align to Surface: es la opción activada por defecto y permite que el objeto se alinee en torno a la superficie de la cara en el que está posicionado. Si esta opción se desactiva, el objeto mantendrá siempre su posición original respecto a esta. Como el restrictor no modifica la orientación del objeto, podremos girar este mediante Select and Rotate.

Align to Surface activado.

Align to Surface desactivado.

Manual Update: al establecer esta opción, Attach to Surface se desactiva y por ello, el objeto siempre permanecerá en su posición original, es decir, no se moverá junto a la superficie si esta es animada, aunque seguirá vinculado a ella. Podemos actualizar manualmente si presionamos el botón Update.

Manual Update activado.

Manual Update desactivado.

Key Info: permite ir a uno o más cuadros clave mediante las flechas < > y a la vez nos muestra el cuadro exacto en el que estamos en la línea de tiempo mediante la opción Time. Esto nos permitirá animar el movimiento del objeto desde una cara hacia otra, ya que por defecto al crear la restricción se crea un keyframe en el cuadro 0. Si queremos animar el objeto debemos realizar lo siguiente: activamos Auto Key, elegimos el frame que queremos en la línea de tiempo, luego presionamos Set Position para establecer la posición que deseemos mediante A y B y asignamos una cara mediante Face. Con esto podremos se creará un segundo cuadro clave y ya animar el objeto, puesto que este se moverá hacia la siguiente cara asignada, ejemplificada en la siguiente secuencia:

Animando los cuadros 0 y 50 mediante Set Position y auto Key, y testeando la animación en el cuadro 25.

Podremos repetir el mismo proceso creando todos los cuadros clave que estimemos conveniente y eligiendo otras caras para nuestra animación.

TCB: sólo funciona si agregamos la rotación de tipo TCB al objeto, y por ello la orientación del objeto de origen también se interpola y se ve afectada por esta configuración. Sus parámetros son los siguientes:

Tension (Tensión): controla la cantidad de curvatura en la curva de animación. La alta tensión produce una curva lineal. La baja tensión produce una curva muy ancha, redondeada. Por defecto su valor es 25.

Continuity (Continuidad): controla la propiedad tangencial de la curva en el Keyframe. La configuración predeterminada es el único valor que produce una curva de animación suave a través del Keyframe. Todos los demás valores producen una discontinuidad en la curva de animación que provoca un cambio brusco en la animación. Por defecto su valor es 25. Valores de Continuity altos crean un sobreimpulso curvo en ambos lados de la tecla, mientras que valores bajos crean una curva de animación lineal.

Bias (Parcialidad): controla dónde se produce la curva de animación con respecto al Keyframe. Por defecto su valor es 25. Valores de Bias altos empuja la curva más allá del Keyframe. Esto produce una curva lineal que entra en la clave y una curva exagerada que sale de la clave, mientras que los valores de Bias bajos tira de la curva antes del Keyframe. Esto produce una curva exagerada que entra en la clave y una curva lineal que sale del Keyframe.

Ease To (Facilidad para): reduce la velocidad de la curva de animación a medida que se acerca al Keyframe. Por defecto su valor es 0. Valore altos de Ease To hacen que la animación se desacelere a medida que se acerca al Keyframe mientras que valores bajos harán lo contrario. La configuración predeterminada no causa desaceleración adicional.

Ease From (Facilidad de): disminuye la velocidad de la curva de animación cuando sale del Keyframe. Por defecto su valor es 0. Valores altos hacen que la animación comience lentamente y se acelere al salir del Keyframe, mientras que valores bajos harán lo contrario. La configuración predeterminada no causa cambios en la curva de animación.

Ya conociendo estas opciones, lo que nos queda es ir posicionando nuestros yates aplicando Attachment Constraint y dejando Align to Surface activada en todos los casos. Podremos girarlos si lo deseamos mediante Select and Rotate aunque en este caso no moveremos los barcos sino que más bien, estos se mecerán con el movimiento del agua ya animado previamente. Rotaremos nuestros yates colocando el modo Local en Reference Coordinated System, luego activando Angle Snap, seleccionando cada yate y finalmente girando cada uno en 90° o 180° mediante Select and Rotate, ya que el Attachment Constraint NO restringe la orientación de los objetos. Con esto realizado, ya podremos iniciar la animación.

La idea de nuestra animación es que todos nuestros barcos sean visibles desde la cámara detalle que incorpora el archivo, tal como se aprecia en el ejemplo siguiente:

Testeando la animación final en el cuadro 50.

El renderizado final de toda la escena desde la cámara de detalle es el siguiente:

2) Surface Constraint

Este Constraint nos permite enlazar un objeto (mediante su punto de pivote) a la superficie o cara de otro y a su vez nos permite su animación en torno a esta. Sin embargo, este constraint no puede ser aplicado a todos los objetos puesto que está limitado solamente a objetos 3D que puedan ser representados de forma paramétrica. Por lo tanto, las superficies de los objetos en los cuales puede ser utilizado este Constraint son:

– Esfera o Sphere.
– Cono o Cone.
– Cilindro o Cylinder.
– Dona o Torus.
– Quad Patch (creado mediante la opción Patch Grids).
– Objetos realizados mediante la operación compuesta llamada Loft.
– Curvas de tipo NURBS.

(imagen con objetos 3D que pueden usar el constraint)

Para entender el funcionamiento cabal de la herramienta desarrollaremos un ejercicio sencillo ya que realizaremos una animación de tanques en un terreno con inclinaciones. Por ello, abriremos el archivo llamado 3dsmax_animacion_surfaceconstraint.max y al hacerlo se nos mostrará lo siguiente:

Como podemos notar, el archivo posee cuatro pequeños tanques y un terreno realizado mediante Loft el cual posee montículos. La idea es que los tanques se vinculen a esta superficie y se muevan en línea recta por esta. Lo que haremos será colocarnos en el cuadro 0, seleccionar uno de los tanques verdes y luego aplicaremos el constraint de la siguiente manera: iremos a Animation >> Constraints y elegiremos Surface Constraint. Notaremos que al aplicarlo, veremos una línea segmentada similar a cuando vinculamos los objetos. En este caso, elegiremos la superficie y realizamos Click para terminar de asignar el restrictor.

Como notamos, el tanque queda vinculado a la superficie y por ende, se coloca en la esquina superior izquierda de esta.

Lo que corresponde ahora es hacerlo caminar por el terreno y para eso, con el tanque seleccionado, iremos a la tabla llamada Surface Controller Parameters que se ubica en el panel de animación:

En este caso el panel es sencillo de controlar ya que, además de poder cambiar la superficie o terreno a escoger mediante Current Surface Object, podremos mover el objeto vinculado por la superficie mediante los parámetros U Position y V Position, los cuales representan el movimiento en X e Y respectivamente ya que en verdad el Constraint NO vincula a la superficie real, sino más bien crea una superficie virtual de manera similar a cuando se coloca una textura en un objeto. En el caso de nuestro tanque, colocamos en U el valor 99,9 y en V el valor 7. El resultado es el siguiente:

Si bien se podría colocar el valor 100, el problema al hacer esto es que si lo alineamos y luego efectuamos la animación final el tanque se invertirá. Por esto mismo es que realizaremos lo mismo con el resto de los tanques, es decir, les aplicaremos Surface Constraint y colocaremos el mismo valor en U a todos. En el caso de V colocaremos el valor 16 para el segundo tanque, 27 para el tercero y 45 para el último. El resultado de la operación es el siguiente:

Antes de realizar la animación final es importante ver el resto de los parámetros de Surface Controller Parameters, ya que además de mover un objeto en U y V podremos elegir el cómo se alinea este en la superficie. La opción No Alignment no alinea el objeto, mientras que Align to U hará que su pivote en X se alinee en torno a U y finalmente, Align to V hará que su pivote en X se alinee en V. Al activar cualquiera de las dos opciones anteriores podremos invertir el objeto activando la casilla Flip. Podemos ver aplicaciones de estas opciones en el ejemplo siguiente:

En el ejemplo, los tanques de color verde tienen seleccionada la opción Align to U. Notamos que el primero de estos no posee la opción Flip activada y por ello queda invertido. En cambio, los tanques de color café tienen activada la opción Align to V, pero el tanque inferior posee la opción Flip activada.

Para terminar el ejercicio, en todos los tanques seleccionamos la opción Align to V y aplicaremos la opción Flip. Sin embargo, notaremos que todos apuntan hacia fuera del terreno lo cual hará que al animarlos, se dirijan en modo “marcha atrás”:

Solucionaremos esto simplemente colocando el modo Local en Reference Coordinated System, luego activando Angle Snap, seleccionando cada tanque y finalmente girando cada uno en 180° mediante Select and Rotate, ya que Surface Constraint NO restringe la orientación de los objetos. Con esto realizado todos nuestros tanques ya apuntarán hacia el frente y por ello, podremos iniciar la animación definitiva.

Una vez realizada esta acción, ya podemos testear el movimiento de nuestros tanques simplemente modificando los valores de U, en la tabla Surface Controller Parameters. Notaremos que los tanques se mueven por la superficie de manera similar a un tanque real:

Para animarlos, seleccionamos cada tanque y establecemos Auto Key, nos vamos al cuadro 200 y colocamos el valor 0 en U. Con esto nuestro tanque se moverá por la superficie desde un extremo a otro de esta. Si lo queremos, podremos animar el parámetro en V pero en este caso debemos ser cuidadosos, ya que valores altos harán poco creíble el movimiento. Realizamos esto mismo en el resto de los tanques.

El renderizado final de toda la escena desde la cámara de detalle es el siguiente:

3) Path Constraint

Este Constraint ya posee su propio tutorial donde se explica a fondo su funcionamiento y opciones, y se puede ir a este haciendo click en este enlace.

4) Position Constraint

Este es un constraint que se encarga de restringir la posición de un objeto a la de otro. Esto es sumamente útil para generar animaciones en las que necesitemos que un objeto quede siempre en una misma posición independiente si este se está orientando en un ángulo diferente. El mejor ejemplo de esto son los pedales de una bicicleta ya que estos deben permanecer en posición horizontal mientras se pedalea para girar el plato. En este caso haremos otro ejercicio diferente, ya que animaremos una biela de ferrocarril para entender el funcionamiento del constraint. Por ello, abriremos el archivo llamado 3dsmax_animacion_positionconstraint.max y al hacerlo se nos mostrará lo siguiente:

Como podemos notar, el archivo representa a un sistema de ruedas de locomotora las cuales están vinculadas a dos Dummys, los cuales a su vez están conectados entre sí mediante Wire Parameters (que veremos en un siguiente tutorial). Por ello, si tomamos el Dummy llamado Dummy eje padre y lo rotamos en Y, podremos animar todas las ruedas a la vez tal como se muestra en la imagen:

Como notamos, las bielas no se vinculan a nada y por ello flotan en el aire. Para entender la diferencia entre un vínculo y el constraint, primeramente enlazaremos cada biela a su respectivo pivote y luego moveremos las ruedas para apreciar el efecto, tal como se aprecia en la siguiente secuencia:

Enlazando las bielas a su respectivo pivote en ambas ruedas mediante Select and Link.

Si giramos el Dummy eje padre notaremos que las bielas se rotan junto con los pivotes y por ende, la animación no es realista ya que necesitamos que estas siempre estén en posición horizontal mientras las ruedas giran. Resolveremos esto desvinculando las bielas de los pivotes y esta vez aplicaremos Position Constraint. Lo que haremos será colocarnos en el cuadro 0, seleccionar cualquier biela y luego aplicaremos el constraint de la siguiente manera: iremos a Animation >> Constraints y elegiremos Position Constraint. Notaremos que al aplicarlo, veremos una línea segmentada similar a cuando vinculamos los objetos. En este caso, elegiremos su pivote y realizamos Click para terminar de asignar el restrictor.

Cuando aplicamos el Constraint notaremos que la biela se mueve un poco hacia adentro y si bien esto no afecta en la animación final, lo mejor es dejarla en la posición original en la cual fue modelada. Para ello, iremos al Panel de animación y en el panel llamado Position Constraint podremos definir los parámetros del restrictor.

Al igual que en el caso de Path 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 Position Target y borrarlos mediante Delete Position Target. En el caso de nuestra biela, mantendremos su posición inicial activando la casilla Keep Initial Offset.

Si giramos el Dummy eje padre notaremos que la biela esta vez se anima correctamente ya que debido a la naturaleza de Position Constraint, esta siempre permanece en posición horizontal. Ahora todo es cosa de repetir la operación con la siguiente biela y luego podremos animar para finalizar el ejercicio.

Un aspecto curioso es que si aplicamos el Position Constraint de la biela al pivote de la segunda rueda en lugar de la inicial, la posición será respecto del pivote de la segunda rueda y se puede aplicar Keep Initial Offset. En este caso puntual, no hay problema al animarlo ya que el restrictor se aplica de igual manera que el anterior.

Ahora todo es cosa de animar el Dummy eje padre y efectuar la animación final (podemos animar el giro al cuadro 30 y luego usar la curva de animación para repetir la secuencia). El renderizado final de nuestra animación es el siguiente:

En la segunda parte del tutorial veremos los siguientes restrictores de animación, los cuales son: Link Constraint, LookAt Constraint y Orientation constraint.

Este es el final de este tutorial.

3DSMAX Tutorial 10c: Animación mediante Path 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: Escala Bézier.

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 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 animación de objetos mediante el constraint especial llamado Path Constraint ya que al igual que en el caso de Anipath de AutoCAD, este controlador nos permitirá animar cámaras enlazándolas a uno o más recorridos llamados PATH, los cuales pueden ser abiertos o cerrados ya que en el caso de la Arquitectura, la animación base son las cámaras las cuales se utilizan para enfocar o mostrar el exterior e interior de un proyecto o edificación. Si bien este constraint es el más indicado para animar cámaras y/o los objetivos de estas, también es útil para realizar algunas animaciones 3D las cuales también serán vistas en este apunte.

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_pathconstraints.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. Estos 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 ocuparemos específicamente el Constraint llamado Path Constraint, ya que es el que más se utiliza en el área de la Arquitectura, aunque también veremos otros casos puntuales de animación. El resto de los Constrains serán enseñados en un siguiente tutorial.

Path Constraint

Como ya definimos anteriormente, Path Constraint es un restrictor que limita el movimiento de un objeto a lo largo de un Path o recorrido que definamos previamente, creando los cuadros de animación necesarios para efectuar la animación. Este recorrido puede ser cualquier forma lineal 2D como por ejemplo círculos, elipses, líneas rectas, curvas, splines, etc. sean estas abiertas o cerradas, siempre y cuando estén unificados sus vértices. Estos recorridos podrán ser creados fácilmente mediante las herramientas de líneas o Splines.

Ejemplos de diferentes tipos de recorridos o Paths.

Para entender el funcionamiento cabal de la herramienta desarrollaremos tres ejercicios base:

a) Animación de un avión mediante un recorrido normal.
b) Animación de un tren en una vía continua (muchos elementos en el mismo recorrido).
c) Animación de un proyecto de vivienda mediante cámaras.

a) Animación de recorrido normal

Para este caso abriremos el primero de los archivos base llamado 3dsmax_animacion_pathconstraint01.max, el cual nos muestra un avión con su respectivo “aeropuerto” y el recorrido base el cual animaremos mediante Path Constraint. Al abrir el archivo, se nos muestra lo siguiente:

Como notamos en el archivo, tenemos una cámara que apunta hacia nuestro avión la cual nos mostrará todo el proceso de animación aunque en principio no enfoca a este. En este caso, la dejaremos tal cual debido a que ya está animada y porque lo que nos interesa realmente es animar el avión mismo. También notaremos que este está vinculado a un Dummy ya que la idea es que la restricción se aplique a este y no al avión mismo, tal como se especificó en el tutorial de Jerarquías. Para aplicar el Path Constraint realizaremos lo siguiente: seleccionamos el Dummy del avión e iremos a Animation >> Constraints y elegiremos Path Constraint. Notaremos que al aplicarlo, veremos una línea segmentada similar a cuando vinculamos los objetos. En este caso, elegiremos el recorrido definido en la pista de aterrizaje y realizamos Click para terminar de asignar el restrictor.

Al terminar la operación notaremos que el avión y el Dummy se conectan con el inicio del recorrido y aparentemente el avión está listo para “volar”. También notaremos que se han creado cuadros clave en 0 y en 1000 y con ello, ya podremos ver la animación. Pero, si presionamos play para reproducirla, notaremos que al elevarse y al doblar la curva el avión no vuela de forma realista puesto que no “sigue” el patrón del recorrido, tal como se aprecia en la secuencia siguiente:

Recorrido del avión en la vista Top.

Recorrido del avión en la vista Front.

Para resolver esto debemos conocer a fondo el panel de animación, el cual es similar al panel para modificar los objetos 3D pero que como su nombre lo indica, está pensado para editar los parámetros de las animaciones.

El panel de animación o Motion Panel

Cuando realizamos cualquier animación de un objeto mediante la aplicación de un Constraint, inmediatamente podremos acceder al Panel de Animación o Motion. Este se encuentra por defecto en el área derecha de la interfaz junto al resto de los comandos ya que de hecho, es el cuarto de los paneles principales:

Ubicación del panel de animación o Motion Panel en la interfaz de 3DSMAX.

Además de las persianas Assign Controller y PRS Parameters, podemos acceder a los paneles más importantes de este: Position List y Path Parameters. Position List nos mostrará todos los Constraints que se han aplicado en el objeto y en el caso de nuestro Dummy, claramente podremos ver Path Constraint con una flecha que indica que este está activo:

Como vemos en la imagen, podemos dejar el Path Constraint ya aplicado mediante el botón Set Active (establecer como activo). Si queremos terminar el vínculo, dejar los objetos en la posición original y por ende, eliminar el Path Constraint, lo seleccionamos y presionamos Delete. La opción Cut nos permitirá cortar la restricción y aplicarla en otro momento. Weight establece el nivel de dependencia del vínculo o el “peso” de este entre los objetos, y por defecto siempre será 100 (por ciento), lo que implica la conexión total del objeto al recorrido o Path. Si disminuimos este valor el vínculo del objeto al recorrido será menor y si el peso es 0, el objeto no se vinculará al recorrido y por lo tanto no se animará.

Animación del avión en el cuadro 120, con Weight 50.

Animación del avión en el cuadro 120 con Weight 0, donde el objeto no se anima y por lo tanto, queda en su posición inicial.

Al aplicar el Path Constraint y tener el Dummy del avión seleccionado, notaremos lo siguiente en el panel Path Parameters:

En este panel podremos editar los parámetros referentes al recorrido mismo. Notamos los botones Add Path y Delete Path. Lo interesante de estos botones es que Add Path nos permitirá agregar más recorridos al ya existente e incluso distribuir los pesos en estos, lo cual nos creará un recorrido promedio el cual dependerá de los pesos que establecemos aunque si agregamos un Path, el peso por defecto será de 50. Si en un recorrido colocamos un peso de 100 y el otro en 0, el objeto se vinculará al del recorrido con el peso total. Podremos borrar uno o más recorridos seleccionándolo primeramente en el panel y luego presionando Delete Path.

En el ejemplo, el avión se ha vinculado a dos recorridos lineales rectos mediante Add Path: un recorrido A y otro B los cuales poseen un peso o weight de 50, y la animación final es una recta que a la vez es la bisectriz entre las líneas anguladas que forman cada recorrido.

Path Options nos muestra varias opciones relevantes para mejorar la animación del objeto en nuestro recorrido. Por ejemplo, % Along Path (porcentaje de recorrido) nos permitirá definir la distancia de nuestro recorrido expresada en porcentaje, ya que si dejamos el regulador de tiempo en cualquier cuadro veremos el porcentaje del recorrido total en ese mismo cuadro. Podemos hacer una prueba sencilla simplemente colocándonos en la mitad de la animación (en el ejercicio es el cuadro 500) donde notamos que el valor de % Along Path será de 50 lo cual representa el 50% del recorrido total. Mediante esta opción podremos modificar este valor para adelantar o retrasar la posición del objeto en el recorrido mismo y por ende, alentar o apurar la animación entre un rango de cuadros. Si queremos cambiar este valor en cualquier tramo de un recorrido, debemos activar Auto Key y luego colocar el nuevo porcentaje para apreciar el efecto.

En el ejemplo, se ha establecido un 1% en % Along Path, donde notamos que el avión parte más adelante en el cuadro 0 al iniciar la animación.

Más abajo encontramos las opciones Follow y Bank. Follow nos permitirá seguir el recorrido mediante el punto de pivote del objeto y en el caso de nuestro ejercicio, permitirá que el avión vuele de forma realista si simplemente activamos la casilla.

Al activarla notaremos que si bien el avión vuela, este queda invertido respecto al recorrido. Podremos resolver el problema simplemente presionando la casilla Flip (voltear) que se encuentra en la opción llamada Axis, donde además notamos que el eje está marcado en X. Podemos ir cambiando el eje para apreciar el resultado, ya que esta opción nos permitirá orientar el objeto en todos los ejes para asegurarnos que quede siguiendo al recorrido de forma correcta, como se aprecia en las imágenes siguientes:

Avión con Axis en el eje Y activado, sin Flip.

Avión con Axis en el eje Z activado, sin Flip.

Avión con Axis en el eje X activado, con Flip encendido.

Otras funciones del panel Path Parameters son las siguientes:

Bank: esta interesante opción permitirá al objeto poder ladearse al enfrentar las curvas, lo cual en el caso de nuestro ejercicio activaremos para generar un viraje realista. Podremos aumentar el ángulo de giro al aumentar el valor de Bank Amount. La opción Smoothness nos permitirá controlar la rapidez con la que cambia el ángulo de balanceo a medida que el objeto se mueve a través de la curva en el recorrido. Valores pequeños harán que el objeto responda mejor a los cambios sutiles en la curva, mientras que los valores más grandes suavizarán las sacudidas.

El avión del ejercicio sin Bank  activado.

El avión del ejercicio con Bank activado, donde apreciamos el efecto de este en las curvas.

Allow Upside Down: esta opción nos permitirá invertir el objeto. Esto puede utilizarse en caso que un objeto se voltee cuando realiza un giro en un recorrido vertical ya que al activar esta opción se evita esto.

Constant Velocity: al encenderlo, mantiene la velocidad constante del objeto durante todo el trayecto. Cuando la opción está apagada, la velocidad del objeto dependerá de la distancia entre todos los vértices del recorrido o Path. Por lo tanto, si queremos una animación más realista, lo ideal sería apagar esta opción o modificar los valores de % Along Path donde se quiera modificar la velocidad.

Loop: repite la animación al terminar el recorrido.

Relative: esta opción iniciará la animación no en el recorrido mismo, sino que tomará en cuenta la posición inicial del objeto antes de ser vinculado y el recorrido estará basado en esa posición, aunque igualmente se vincula al Path.

Vínculo al recorrido con la opción Relative desactivada (normal).

Vínculo al recorrido con la opción Relative activada.

Habiendo conocido ya las funciones del panel Path Parameters, procederemos a preparar la animación final de nuestro avión. En el caso del ejercicio, el panel nos deberá quedar con la siguiente configuración:

Ahora todo es cosa de reproducir la animación para ver el resultado final de nuestro ejercicio. El renderizado final de la animación se puede ver en el siguiente vídeo:

b) Animación con varios elementos en un mismo recorrido

Para este segundo ejercicio ocuparemos la misma lógica usada con el avión, pero en este caso vincularemos varios objetos en un mismo recorrido. Para ello, animaremos el tren del ejercicio de jerarquías aunque en este caso se le ha agregado un vagón más y se han dejado los puntos de pivote de los vagones y la locomotora en el centro de cada Dummy. La idea es animar todo el conjunto a través de un recorrido ovalado el cual representará a las vías de nuestro tren. Si abrimos el archivo llamado 3dsmax_animacion_pathconstraint02.max veremos lo siguiente:

Como notamos en el archivo, este es el tren del ejercicio de jerarquías con pequeños cambios y sus respectivas vías en forma de óvalo. Esta vez tenemos dos cámaras que nos ayudarán con el proceso de renderizado: una que irá en el tren mismo (ya vinculada) y otra que nos enfoca la visión general de todo el conjunto, es decir, el tren mismo y todas las vías. Al igual que en el caso del avión, aplicaremos Path constraint de la siguiente forma: seleccionamos el Dummy de la locomotora e iremos a Animation >> Constraints y elegiremos Path Constraint. Notaremos que al aplicarlo, veremos una línea similar a cuando vinculamos los objetos. En este caso, elegiremos el recorrido definido en el centro de las vías y realizamos Click para terminar de asignar el restrictor.

Una vez realizado esto, iremos al Panel de animación y en Path Parameters activaremos la opción Follow y luego Flip. Si presionamos play para ver la animación, notaremos que la locomotora se anima sin mayor problema y por ende, ya podremos animar el resto de los vagones. Sin embargo, si aplicamos Path Constraint en el siguiente vagón nos ocurre lo siguiente:

Como notamos en la secuencia, el tender queda en la misma posición que la locomotora lo cual hará que al animarlo ambos sigan el mismo patrón lo que resultará en una animación irreal, ya que ambos modelos quedan traslapados. El truco para resolver esto está simplemente en tomar el Dummy del tender, ir al Panel de animación y en Path Parameters, modificar el valor de % Along Path. Establecemos el valor -2,33 y luego presionamos enter para ver el resultado:

Como vemos, el vagón se ha colocado justo detrás de la locomotora y con ello al reproducir la animación se nos muestra de forma más real y convincente. Finalizamos la configuración del tender yendo a Path Parameters y activando la opción Follow y luego Flip. Ahora todo es cuestión de vincular el siguiente vagón (el de pasajeros de color Cyan) y establecer el siguiente valor de % Along Path: -4,51.

Notaremos que el vagón de pasajeros queda más bajo que la locomotora y el tender pero eso tiene una solución fácil, ya que este último está en la altura correcta y por ende, lo que debemos hacer es bajar la locomotora y el tender sin tener que mover el Dummy de la jerarquía que tiene aplicado el Constraint. Para hacer esto, bastará tomar la base del tender y de la locomotora y, usando Select and Move, dejar la altura en Z=20,03 (esta es la altura de la base del vagón de pasajeros). Al ser la base del tender y de la locomotora el padre de la jerarquía de ambos objetos, al modificar su altura esto hace que ambos se muevan por completo y por ende, se resuelva el problema. Este proceso puede visualizarse en la secuencia siguiente:

Una vez corregido el problema de las alturas en el tren, seleccionamos el Dummy del vagón de pasajeros y en Path Parameters activamos Follow y Flip. El resultado debe ser el siguiente:

Ahora todo es cuestión de realizar el mismo proceso en el resto de los vagones de pasajeros y en estos casos, los valores de % Along Path son los siguientes:

Vagón 2 (Verde): -6,74.
Vagón 3 (Rosado): -8,97.
Vagón 4 (Naranjo): -11,2.

Activaremos Follow y Flip en el resto de los vagones y si lo hacemos bien, el resultado sería el siguiente:

Ahora todo es cosa de reproducir la animación para ver el resultado final de nuestro ejercicio. El renderizado final de la animación de todo el conjunto se puede ver en el siguiente vídeo:

Y el resultado de toda la animación desde la perspectiva del tren mismo se puede ver en este otro vídeo:

c) Animación de cámaras mediante Path Constraint

En este último ejercicio aplicaremos la misma lógica de los anteriores, pero esta vez animaremos cámaras ya que el archivo es un pequeño proyecto de Arquitectura y por ende, utilizaremos las cámaras como patrón de animación. Si abrimos el archivo llamado 3dsmax_animacion_pathconstraint03.max veremos lo siguiente:

Como se aprecia en la imagen, el archivo corresponde a una casa de dos pisos la cual posee sus correspondientes muros perimetrales y entrada, en un terreno plano y rodeada de varios recorridos o Path. La idea es mostrarlo mediante la animación de cámaras usando los cuatro movimientos de cámara básicos que se suelen utilizar para mostrar un proyecto de Arquitectura. Estos son los siguientes:

1 – La cámara se moverá por el recorrido o path, mientras que el target (objetivo) se mantendrá fijo en un punto y apuntará hacia el o los objetos enfocados. Esto se conoce como giro o recorrido de cámara.

2 – La cámara permanece fija en un punto y sólo el target u objetivo se moverá a través del recorrido o path. Esto se conoce como recorrido panorámico o paneo.

3 – Tanto la cámara como el objetivo se moverán por el mismo recorrido o path. Esto se conoce como cámara libresubjetiva o de primera persona.

4- La cámara y el objetivo se mueven por diferentes recorridos o paths. Esto se conoce como travelling.

Si analizamos el archivo notaremos que también hay varias cámaras las cuales se nombran según cada tipo de movimiento a animar ya que a diferencia de AutoCAD, en 3DSMAX sí tenemos que crear las cámaras ya que deberemos aplicar a cada una un Path Constraint, el cual nos servirá tanto para la cámara misma como también para el Target de esta puesto que ambos son objetos independientes. Una ventaja en particular de 3DSMAX es que podremos ver todas nuestras cámaras en la misma escena y animarlas todas sin mayor problema, ya que aplicaremos el Constaint a cada objeto en particular y no necesitaremos Dummys ni ayudantes extras. Comenzaremos creando el recorrido de cámara seleccionando la cámara llamada Camara Recorrido, aplicamos Path Constraint en ella y finalmente seleccionamos el recorrido circular llamado Recorrido de cámara. El resultado es el siguiente:

Como notamos, la cámara se vincula al recorrido y por ende ya podremos testear la animación mediante Play. En este caso, no debemos modificar el panel de animación ya que el target queda fijo y por ende, sólo se moverá la cámara.

Vista desde la cámara vinculada al recorrido mediante Path Constraint, en el cuadro 195.

Si reproducimos o renderizamos la animación, el resultado es el siguiente:

Un aspecto interesante de cualquier Path es que podremos modificarlo a nuestro gusto aún cuando se haya aplicado Path Constraint lo cual nos permitirá alargar, acortar, modificar o cambiar el punto de inicio (usando Make First) el recorrido según lo necesitemos y por ello, tendrá efecto sobre la animación final. En el caso de ser una forma circular o no ser dibujada mediante líneas (Circle, Rectangle, Star, etc.), podremos aplicar el modificador Edit Spline para editarla.

Edición de Path mediante aumento de radio y mediante el modificador Edit Spline, y su efecto en la vista de cámara del recorrido.

Ahora haremos el recorrido de tipo Panorámico. Para ello, animaremos la cámara llamada Cámara Panorámica, pero en este caso sólo animaremos el Target de esta. Por ello, lo seleccionamos y aplicamos Path Constraint en el recorrido curvo llamado Recorrido panorámico. El resultado es el siguiente:

Como notamos, el target se vincula al recorrido y por ende ya podremos testear la animación mediante Play. En este caso, no debemos modificar el panel de animación ya que la cámara queda fija y por ende, sólo se moverá el target el cual sigue de manera automática al recorrido. Si reproducimos o renderizamos la animación, el resultado es el siguiente:

El siguiente recorrido que realizaremos será el de tipo subjetivo. Para ello, seleccionamos la cámara llamada Cámara subjetiva ya que esta es de tipo Free o libre (es decir, sin target), lo que implica que siempre apuntará hacia adelante. Aplicamos el Path Constraint y la vinculamos al recorrido llamado Recorrido subjetivo. El resultado es el siguiente:

Como notamos, la cámara se vincula al recorrido y por ende, ya podremos testear la animación mediante Play. En este caso, sí debemos activar Follow en Path Parameters para que la cámara siga al recorrido y se nos muestre la perspectiva de primera persona. Sin embargo, notaremos que esta se invierte hacia la izquierda así que solucionaremos esto cambiando en Axis el eje X a Y:

Si reproducimos o renderizamos la animación, el resultado es el siguiente:

Ahora sólo nos queda realizar el Travelling de cámara, y para eso debemos hacer dos Path Constraints: en el primero seleccionamos la cámara llamada Camara travelling y la vinculamos al recorrido llamado Recorrido Travelling cámara. Luego realizaremos el segundo seleccionando el Target de la cámara y lo vinculamos al recorrido llamado Recorrido Travelling target. el resultado es el siguiente:

Vinculando la cámara al primer recorrido.

Vinculando el target de la cámara al segundo recorrido.

Como notamos, la cámara se vincula al primer recorrido y el target de esta al segundo, y por ende ya podremos testear la animación mediante Play. En este caso, no debemos modificar el panel de animación ya que la cámara y su target se desplazan por distintos recorridos y por ende, lo siguen automáticamente. Si reproducimos o renderizamos la animación, el resultado es el siguiente:

Como hemos visto en todos los ejercicios anteriores, Uno de los Restrictores más importantes usados en la animación en 3DSMAX es Path Constraint ya que su uso no solamente se enfoca a la Arquitectura y la animación de cámaras, sino que también se utiliza en el ámbito de la animación 3D. Este nos permitirá mostrar a cabalidad un proyecto, modelo o espacio ya que además de generar la animación respectiva podremos modificar los vértices de nuestros Path para subir de pisos o niveles, o alentar el recorrido para dar énfasis en ciertos espacios o aspectos.

Este es el fin de este tutorial.

Actualizaciones recientes al blog: animación en 3DSMAX

Estimados visitantes, después de mucho tiempo sin postear una actualización debido a varios factores (uno de ellos es que fui padre hace poco tiempo), esta vez aprovecho de anunciar las siguientes actualizaciones importantes hechas a MVBlog:

– Hacía un tiempo atrás se reestructuraron los menús laterales del diseño de la web y además, se ha agregado una encuesta nueva en relación a la posibilidad de publicar libros respecto a los temas tratados en este sitio web.

– Se arreglan los widgets laterales de 3DSMAX y Rhinoceros, ya que se veían Tutoriales de AutoCAD en lugar de los respectivos.

– En el caso del Tutorial 10 de animación básica de 3DSMAX, después de revisarlo exhaustivamente he decidido reestructurarlo ya que el original tenía varias falencias y por ello, se separarán los temas de animación en 3DSMAX en varios tutoriales, porque la idea es que estos sean mucho más completos y se incorporen nuevos ejercicios y archivos. Por el momento se han publicados dos tutoriales sobre este tema: introducción y conceptos básicos y jerarquías entre objetos. Pueden verlos yendo a los enlaces respectivos o en la sección Tutoriales 3DSMAX.

También se están reparando algunos errores en los archivos y por ello, se está constantemente actualizando la web a pesar de no poder escribir posteos de forma regular. Como siempre, les agradezco sus visitas y el apoyo dado a este sitio.

Saludos cordiales y hasta la siguiente actualización.