Animación procedimental de una rueda en Max (1)

Hola a todos:

Estoy trabajando en un corto de animación 3D en el que, durante determinados planos, aparece una furgoneta en marcha rodando por un terreno ligeramente bacheado. No pretendo llegar a un nivel de realismo fotográfico, pero sí obtener una simulación medianamente decente. Por ello, he investigado cómo realizar determinados efectos, y hoy voy a explicarlo aquí. Para aquellos interesados en conseguir un rig más completo de un vehículo, recomiendo el trabajo de Laurens Corjin y también el de Laurent Renaud. En nuestro caso, partiremos de un conjunto de supuestos muy concreto, lo cual limita la validez de nuestra solución, aunque obviamente puede extenderse para abarcar escenas más complejas. Por ello, para comenzar, tengamos en cuenta lo siguiente:

  • El vehículo se desplaza longitudinalmente en una sola dirección
  • Los accidentes del terreno no son demasiado pronunciados

En este post trataremos de la solución a tres dificultades:

  • Conseguir que la velocidad de rotación de la rueda se adecúe completamente a la velocidad de desplazamiento longitudinal
  • Conseguir que la rueda vaya pegada a un terreno con desniveles
  • Conseguir un efecto de deformación (achatamiento) en la parte inferior de la rueda, tal como sucede con los neumáticos reales

Obviamente, todo lo anterior puede conseguir añadiendo keys y más keys, pero nosotros vamos a emplear controladores basados en float expressions y scripts, así como un space warp FFD (Free Form Deformation).

 

Planteamiento básico de la escena

En nuestra prueba de concepto, emplearemos primitivas sencillas. El terreno se consigue mediante un plano al que se añade un modificador Noise, cuyo parámetro Strenght Z ajustaremos a 5 cm. Con esto lograremos el primer efecto de baches y, sobre esta pila, añadimos un modificador Edit Poly, de manera que podamos realizar algunas depresiones suaves moviendo polígonos en el modo soft selection. Para la rueda, empleamos un cilindro con un número suficiente de lados. En su centro, fijamos (con Select and Link) una pirámide para apreciar mejor la rotación. Conviene, para obtener mejores resultados, situar el centro de pivote del cilindro en su centro geométrico, y no en su base.

En el modo Auto Key, añadimos las dos únicas keys de la animación: una en el fotograma cero, con la rueda en su posición inicial, y otra en el último fotograma, con la rueda en su posición final. Hablamos exclusivamente de desplazamiento longitudinal, sin preocuparnos en absoluto de su rotación.

Todas las operaciones anteriores se llevan a cabo con técnicas sencillas que no explicaremos aquí (si alguno de vosotros tiene dudas, puede dejarme un comentario y trataré de solucionarlas). Concentrémonos ahora en la sustancia de nuestra animación.

Escena básica

Planteamiento general de la escena

Rotación de la rueda

Aplicamos un poco de geometría básica, concretamente la siguiente fórmula:

Arco = Ángulo x Radio

Recordemos que el ángulo ha de estar expresado en radianes. No entraré en los detalles matemáticos, que tampoco son excesivamente complejos. Lo importante es que, si la rueda no derrapa, es decir, si no pierde adherencia al suelo, el desplazamiento longitudinal del vehículo coincide con el arco. Esto tampoco es del todo cierto en el mundo real, dado que el neumático sufre deformaciones, pero nuestra aproximación simple servirá para lo que pretendemos. Veamos cómo llevar la fórmula anterior a nuestra animación.

Seleccionamos el cilindro, nos vamos al panel Motion y allí, dentro del árbol de transformaciones de posición y rotación, seleccionamos Y Rotation. Tengamos en cuenta que los ejes a seleccionar dependerán de la geometría concreta de nuestra escena. Pulsamos el pequeño botón que aparece en la parte superior izquierda (Assign controller) y elegimos Float expression.

 

Panel Motion

Panel Motion

 

Lo interesante viene ahora. Se nos abre una ventana donde podemos introducir expresiones (de manera similar a los wire parameters, pero con posibilidad de emplear variables y funciones matemáticas). Creamos dos variables:

  • dY, que vincularemos al controlador de posición Y del cilindro;
  • r, que vincularemos a su radio.

Escribimos la expresión tal como aparece en la figura siguiente (nada más que una traducción directa de la fórmula del arco) y nuestra rueda girará sin necesidad de keys. Además, su velocidad de rotación siempre irá sincronizada con la del desplazamiento longitudinal. Así de sencillo…

Editor de expresiones

Editor de expresiones

En el siguiente post de esta serie abordaremos el problema de la altura de la rueda y los desniveles del terreno, usando para ello objetos ray y la función intersectRay. Hasta entonces, espero que estas técnicas os hayan resultado interesantes.

Un saludo a todos.

 

Anuncios

2 comentarios en “Animación procedimental de una rueda en Max (1)

  1. Pingback: Animación procedimental de una rueda en Max (II) | Ars longa, vita brevis

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s