Inicio >1. Introduccion2. Modelado3. Materiales e Iluminacion4. Animacion5. Render y Postproduccion
4.5. Cinemática Directa e Inversa Práctica 8. Animación Básica con curvas IPO

4.6. Simulaciones Físicas

Una de las características que más sorprenden de Blender es el módulo de simulaciones físicas integrado. Cuando enseño a los compañeros de trabajo este grupo de funcionalidades muchos me preguntan: "¿En serio que esto es libre?". Efectivamente es libre y puede competir en muchos aspectos con soluciones de simulación física privativas de famosos paquetes de diseño 3D. Las principales propiedades de simulación física se encuentran en el grupo de botones de Objeto , en los botones de Simulaciones Físicas .

Figura 01. Grupos de pestañas de las opciones de simulación física.

En estos botones se distinguen cuatro grupos de pestañas (ver Figura 1); de izquierda a derecha tenemos la primera pestaña Collision sirve para especificar que el objeto se tendrá en cuenta en el motor de simulación a la hora de calcular las colisiones. La pestaña de su izquierda Fields sirve para definir campos de energía (como por ejemplo Viento). El siguiente grupo de pestañas Softbody sirve para añadir cuerpos blandos (semi-rígidos). Las pestaña de Collision y Solver agrupadas con Softbody permiten indicar propiedades particulares para ese tipo de objetos. No debe confundirse con la pestaña Collision de la izquierda. El grupo de pestañas de Cloth permite crear simulaciones físicas de tela. Finalmente, el grupo Fluid permite realizar simulaciones físicas de fluidos. Se podría hacer un curso de más de 100 horas para empezar a sacar el verdadero rendimiento de los motores de simulación física de Blender. En los siguientes apartados nos centraremos en ver algunas de sus capacidades básicas a modo de tutorial y comentaremos algunos de los controles principales.

Más información
Para saber más...
 

Bounce, Tumble and Splash!: Para profundizar en el uso de los motores de simulación física, la obra de referencia oficial de Blender es el libro de Tony Mullen Bounce, Tumble and Splash!, publicado por la Editorial Sybex (ISBN: 978-0-470-19280-1). En este libro de nivel medio/avanzado se describen en detalle el uso de partículas, cuerpos rígidos y blandos, telas, pelo... (Ver más información en la Tabla de Contenidos).

Cuerpos Blandos (Soft Body)

Figura 02. Pestaña Collision.

El simulador de cuerpos blandos (o soft bodies) permite realizar la simulación de colisiones de cuerpos con cierto grado de elasticidad. Veremos cómo utilizar este módulo para simular también cuerpos rígidos. Los objetos que deban ser tenidos en cuenta a la hora de simular colisiones deberán tener activo el botón Collision de la primera pestaña Collision de la Figura 1. Si el botón está activo, aparecerán nuevos controles como se muestra en la Figura 2. En esta pestaña se distinguen dos grupos de opciones; las que se aplicarán a los cuerpos blandos y telas y las que se aplicarán a los sistemas de partículas. Damping es el factor de amortiguación (si se establece alto, el objeto se comportará como una cama elástica) Friction es el factor de fricción con otros cuerpos. Inner y Outer controla el volumen que se aplicará a las caras poligonales para simular que tienen volumen y calcular así de forma correcta la colisión.

Figura 03. SoftBody.

La pestaña SoftBody (ver Figura 3) permite controlar las opciones concretas de este tipo de cuerpos. Algunos parámetros interesantes de esta pestaña son:

  • Friction: Factor de fricción (rozamiento) del objeto con el resto. Un valor de 0 hace que no tenga fricción (50 es el máximo).
  • Mass: Masa para los vértices del objeto.
  • Grav: Gravedad (en el eje Z). Valores negativos hacen que el objeto salga disparado hacia arriba.
  • Speed: Permite controlar la velocidad de caida del objeto (simulando que es más pesado). Aumentar la masa puede tener efectos de penetración con otros objetos del mundo.
  • Use Goal: Si está activo, permite interactuar con otros elementos animables de la escena (mediante curvas IPO por ejemplo). Requiere definir grupos de vértices. Para los propósitos de esta introducción básica lo dejaremos desactivado.
  • Use Edges: Si está activo, las aristas del objeto funcionarán como "muelles" para el simulador de física.
  • Stiff Quads: Añade muelles internos en las diagonales de las caras cuadradas. Esto les da mucha mayor consistencia, haciendo que el objeto se comporte como un cuerpo rígido. Lo emplearemos para simular en este módulo este tipo de cuerpos.
  • CEdge y CFace: Utiliza las aristas y las caras para calcular internamente las colisiones. Cuidado, puede ser muy lento con modelos complejos. Por lo general funciona con suficiente precisión incluso si se deja desactivado.
  • Pull, Push, Damp: Valores relacionados con la dureza de los muelles. Valores pequeños significan objetos muy elásticos.
  • Plas: Nivel de plasticidad. Si vale mayor que cero, las deformaciones debidas a los impactos contra otros objetos se vuelven permanentes.
  • Be: Fuerza de curvatura. Parámetro importante para que el cuerpo no se doble por las aristas.

Cuerpos Rígidos
Uso del Game Engine para simular colisiones entre cuerpos rígidos.
  Cuerpos Rígidos y Game Engine: Blender incorpora además un simulador de cuerpos rígidos que está integrado en el motor de juegos. No está previsto en un futuro cercano que este motor se integre además en la parte de animación, por lo que es necesario utilizar el grupo de botones de la lógica del Game Engine para utilizarlo. Una vez realizada la simulación, se puede guardar en curvas IPO para aplicarlas en el módulo de animación (en el menú principal, Game/ Record Game Physics to IPO. Queda fuera del alcance de este curso comentar la funcionalidad del Game Engine.

A continuación veremos un ejemplo de uso de SoftBodies. Crearemos una escena sencilla y modificaremos algunos parámetros para mostrar el efecto que produce sobre la animación resultado. Recordemos que para reproducir la animación se puede realizar mediante el botón de la ventana o mediante el atajo de teclado Alt Shift A.

Player
Player
Arriba: Resultado del ejemplo.
Izqda: VideoTutorial.

Ejemplo de uso de cuerpos semirígidos. Modificación de parámetros y previsualización de resultados.

Figura 04. Cubo gelatinoso.

Aplicando mallas de mayor resolución y jugando con los parámetros de nivel de rigidez de los muelles se pueden obtener simulaciones de tipo "gelatina". La Figura 4 muestra algunos fotogramas de una animación realizada aplicando 4 niveles de subdivisión al cubo del video anterior. Queda como ejercicio propuesto al alumno que experimente con los parámetros explicados anteriormente y con diferentes objetos simples (con bajo número de polígonos). El cálculo de la colisión depende de la complejidad del modelo por lo que, para probar opciones lo mejor es emplear objetos con bajo número de vértices.

Simulación de Telas

Figura 05. Opciones Cloth.

Figura 06. Pestaña Collision.

La simulación de telas es muy parecida a la simulación de cuerpos semirígidos que hemos visto anteriormente, pero funciona mejor con mallas abiertas (como planos, por ejemplo), lo cual tiene mucho sentido ya que la "ropa" normalmente se modela con superficies abiertas. Las opciones de simulación se pueden ver en la Figura 5.

Blender dispone de configuraciones prefijadas de materiales que pueden seleccionarse en la lista desplegable de Material Preset como cuero (leather), tela vaquera (denim), goma (rubber), algodón (cotton) o seda (silk). La calidad de la simulación se establece en el parámetro Quality (valores más altos requieren mayor tiempo de cómputo). Aunque requiere más tiempo de cálculo es aconsejable activar el botón Enable selfcollisions de la pestaña Collision del grupo de pestañas de Cloth. Este botón, como su nombre indica, calcula las colisiones producidas entre los pliegues de la tela, obteniendo resultados realistas. Como la simulación se realiza a nivel de cara poligonal, es interesante que la malla de la tela tenga resolución suficiente (pero no excesiva, ya que influirá en el tiempo de cómputo de la simulación).

Veamos a continuación algunos ejemplos de uso del simulador de tela. Como se puede ver en el siguiente video, es posible emplear el simulador con otros objetos que tengan la propiedad de Collision activa, como el cubo rotando del ejemplo. En   Video: 01:03 se subdivide el plano sobre el que se aplicará el simulador de tela para que tenga polígonos suficientes; como el nivel de subdivisión elegido es bajo, en   Video: 03:32 se aplica de nuevo un nivel más.

Player
Player
Arriba: Resultado del ejemplo.
Izqda: VideoTutorial.

Ejemplo básico de simulación de telas. Se emplean diferentes configuraciones de tela, obteniendo diversos resultados de flexibilidad del material.

Figura 07. Paint (Pesos).

Una funcionalidad avanzada que aún no hemos visto es la capacidad de establecer factores de aplicación de deformaciones mediante "pesos". Empleando un código de color, se aplica un factor de aplicabilidad de la deformación a cada vértice del modelo, empleando el modo de Pintado de Pesos , seleccionable como es habitual en la cabecera de la ventana 3D. Al igual que ocurría con el modo de pintado de vértices o de textura, en este modo aparece una nueva pestaña Paint en los botones de edición con las opciones de coloreado (ver Figura 7). El color rojo indica un peso a los vértices de 1, y el azul de 0. Valores intermedios de color (entre rojo y azul) implican pesos intermedios.

Activando el botón Pinning of cloth de la pestaña Cloth (Figura 5) Blender tendrá en cuenta el peso de los vértices para establecer la deformación adecuada. De este modo es muy sencillo animar cualquier tela que esté "colgada" (como banderas, cortinas, ...) o elementos de tela con los que interactúen los personajes de la escena (por ejeplo, un pañuelo sujeto por una esquina).

En el siguiente video de ejemplo se utiliza esta funcionalidad. Se define que las esquinas del plano tendrán influencia 1 (estarán fijas), estableciendo el parámetro Weight de la pestaña Paint a 1   Video: 00:30. Al pintar en la ventana 3D en modo los vértices se pintarán de color rojo   Video: 00:33. Al hacer la simulación de nuevo, el plano se caerá al suelo   Video: 00:42 porque no se había activado el botón Pinning of cloth   Video: 00:48. Hecho esto se añade un campo de fuerza de tipo viento Wind mediante un Empty   Video: 01:03 - 01:10. El eje Z del Empty indica la dirección del viento, por lo que se rota para que apunte a la tela. A continuación se realizan varias pruebas para obtener un valor de fuerza del viento Strength adecuado. En la última parte del video   Video: 02:36 - 05:39 se añade un cubo ajustando su animación para que llegue a chocar con la tela. Cabe destacar en   Video: 02:21 se establece un nuevo rango de cálculo de la simulación para la tela (por defecto Blender lo calcula en el intervalo 1-250). Esto se realiza en la pestaña Collision de cada grupo de simulación.

Player
Player
Arriba: Resultado del ejemplo.
Izqda: VideoTutorial.

Ejemplo de simulación de telas con definición de pesos de vértices. Utilización de campo de fuerza Wind mediante un elemento Empty. Interacción con otros objetos.

Fluidos

El simulador de fluidos de Blender es una de las características más impresionantes del grupo de botones de simulación. Este módulo crea una malla poligonal para cada frame de la animación. Es un proceso computacionalmente costoso y requiere definir una serie de elementos básicos (ver Figura 8):

  • Domain: Dominio en el que el simulador se ejecutará. Deberá limitar el espacio sobre el que se realizará la simulación. Todo lo que no abarque el objeto que haga de dominio no tendrá efecto sobre la simulación. En el dominio se especifica la resolución de la malla poligonal resultante (campo Resolution, a valores altos, mejor precisión pero mayores tiempos de cómputo y memoria consumida). El tiempo de inicio y de fin de la simulación Start Time y End Time se miden en segundos. Cuando el resto de parámetros está listo, el botón Bake permite calcular la simulación.
  • Figura 08. Pestañas de simulación de Fluidos.

  • Obstacle: Mediante este botón es posible establecer que un objeto actuará como un obstáculo en la simulación. Típicamente los recipientes contenedores del líquido actuarán como obstáculos.
  • Inflow/Outflow: Estos dos botones permiten especificar los elementos de la escena que actuarán como productores o consumidores de fluido. En el caso de Inflow, será un productor de fluido con la velocidad inicial que se especifique (hay que tener en cuenta que la gravedad también influye en la simulación). La diferencia con el botón Fluid de la fila de botones superior es que éste no es un productor de fluido, sino que define un volumen que contiene fluido.
Una vez que se han definido los elementos que van a formar parte de la simulación, se pulsará el botón BAKE del panel Fluid para iniciar el cálculo de la simulación.

En el siguiente video de ejemplo se muestra un ejemplo de uso del simulador de fluidos. Se utiliza el cubo inicial de la escena por defecto de Blender como contenedor de dominio. En   Video: 00:16 se fuerza a que se muestre en modo alambre (para no molestar en el modelado del resto de etapas de la escena). A continuación se añade un cubo   Video: 00:23 con el que modelaremos el vaso mediante superficies de subdivisión   Video: 00:43 - 01:30. En   Video: 01:32 se aplican el modificador de subdivisión para que el cómputo de las colisiones del simulador se realicen correctamente. Finalmente se añade otro cubo   Video: 01:38 que servirá como productor de fluido. Inicialmente se establece en este cubo una fuerza en el eje Z del cubo de 0.15 unidades   Video: 02:38, pero se nos olvida activar el botón de Local Coords Enable, por lo que al realizar la simulación posteriormente el fluido sale hacia arriba (respecto del eje Z global). Pulsamos Control Z para deshacer las modificaciones   Video: 02:57 y realizamos de nuevo la misma operación, ahora activando el botón del coordenadas locales   Video: 03:16. Finalmente activamos el botón de BAKE y calculamos la simulación   Video: 03:30.

Player
Player
Arriba: Resultado del ejemplo.
Izqda: VideoTutorial.

Ejemplo de simulación de fluidos. Definición de los tres elementos básicos; dominio, obstáculo y productor de fluido.

4.5. Cinemática Directa e Inversa Práctica 8. Animación Básica con curvas IPO