Mecanica restringida

mecánica restringida.
por maléfico. http://www.malefico3d.com.ar/.

cuando animamos personajes en Blender lo que hacemos es definir un conjunto de poses en el tiempo para nuestros personajes variando las posiciones de piernas, brazos, tentáculos u orejas según nuestro parecer.

Sin embargo, cuando lo que intentamos animar son máquinas o sistemas mecánicos, que deben respetar determinadas leyes físicas o sincronías, este enfoque es inadecuado. Imaginen animar la biela de una locomotora, y que las ruedas se muevan de acuerdo al impulso trasmitido por esa pieza y no locamente como si fueran piezas independientes. Esto claramente es algo que no puede ser hecho mediante poses.

En este tutorial intentaré explicar el uso de constraints para resolver algunos mecanismos simples. Mecanismos más complejos podrán resolverse aplicando los principios aquí delineados.

El primer ejemplo sobre este tema me fue explicado por primera vez por el inefable Caronte a quien le envío un abrazo y un saludo por su generosa y siempre desinteresada ayuda.

Advertencia: este tutorial requiere un conocimiento básico del manejo de Blender por lo que muchas operación básicas no serán explicadas.

Para seguir este tutorial necesitaran al menos la versión 2.22 de Blender.
algo de teoría (muy poco)
Una biela es una pieza muy popular en cualquier máquina. Su función es la de convertir un movimiento circular en un movimiento lineal y viceversa. La biela se encuentra unida por uno de sus extremos y excentricamente a una rueda mediante una pieza que se llama cigüeñal.

El otro extremo de la biela se encuentra restringido en su movimiento mediante una corredera, otra biela, o alguna otra pieza mecánica. Al girar el cigüeñal, la biela solo transmite la componente del movimiento que es colineal con la pieza que la restringe.

Veamos paso a paso cómo se puede recrear en Blender este mecanismo de modo que al animar un objeto, por ejemplo, la rueda, el resto de los objetos se anime automáticamente.
mecánica en Blender.

Iniciemos una escena nueva de la forma acostumbrada y seleccionemos la vista frontal. Crearemos un cilindro en esta vista a modo de rueda. Curiosamente, llamaremos a este cilindro rueda. Movamos el cursor en algún punto lejos del centro del cilindro, pero aun así dentro del mismo y agreguemos un empty al que llamaremos empty0. Lo más aconsejable es ajustar la posición de los objetos mediante la grilla. Para que esta sea la conducta por defecto de Blender conviene setear la opción grabgrid en el panel del usuario de Blender. En este momento debemos tener algo similar a esto:

movamos el cursor hasta la posición del empty0 (si no está allí ahora) y agreguemos un plano. En modo edición alarguemoslo hacía la izquierda unas cuantas unidades de forma que quede algo parecido a la figura. Este plano hará las veces de biela y así lo nombraremos biela1.

Lo más importante es tener en mente que el centro del plano (el centro según Blender, indicado por un punto rosado, no necesariamente el centro geométrico) se encuentre donde se indica. Esto es muy importante porque el eje de giro de la biela pasara por este punto. Si no me creen, seleccionenla y girenla un poco.

ahora movamos el cursor hacia el otro extremo de la biela y agreguemos otro empty y emparentemoslo a la biela. Este será el empty1.

En la posición del nuevo empty agreguemos otro plano. Alarguemoslo para formar otra biela un poco más gruesa que la inicial. La llamaremos biela2 para salirnos un poco de lo común. Seguramente el centro de esta segunda biela nos ha quedado donde estaba el empty1. Para corregir esto movamos el cursor hacia la zona central de la biela2 y recentremos el plano con centrecursor en los botones de edición.

Ahora movamos el cursor nuevamente a la posición del segundo empty, y agreguemos un tercero. Emparentemoslo a la segunda biela.

Hasta ahora las cosas se deben ver así:

restricciones locas.
¿para qué tantos empty y cosas raras? Ahora veremos. Seleccionemos la biela 1 y vayamos a los botones de restricciones (el icono de los eslabones). Agreguemos una restricción copy location, y pongamos el nombre del primer empty en la caja ob. Probemos a girar el cilindro-rueda. Verán como la biela se mantiene paralela al eje X mientras acompaña el movimiento del empty. Perfecto.

Ahora lo que intentaremos es que la biela2 se oriente apuntando hacia el empty 1. Para ello seleccionemos la biela2 y añadamosle una restricción trackto y escribamos el nombre del empty1 en la caja ob. Puede ocurrir que al hacer esto la biela asuma una posición rara. Para resolver este problema iremos a los botones de animación y probaremos con el grupo de botones Track x,y,z y upx,y,z hasta lograr que la biela tome la posición correcta nuevamente. Cosas de Blender.

Analogamente añadiremos otra restricción a la biela1, haciendo un trackto al empty2.
restricciones para la biela1:

Restricciones para la biela2:

Corrijamos cualquier extrañeza y ya estamos.

Ahora si hacemos rotar sobre su eje la rueda veremos cómo las bielas se mueven solas como deberían si estuvieran unidas en el mundo real.

cambiando la posición del empty0 acercándolo o alejándolo del centro de la rueda cambiara la longitud de la Carrera realizada por la biela2 al girar la rueda. No es fabuloso?

modelos más complejos.

La tentación es comenzar a modelar las piezas antes de probar el sistema funcionando. Personalmente creo que no es buena idea, lo mejor es asegurarse que el mecanismo funciona bien usando piezas simples como hemos visto y luego modelar las piezas mecánicas con detalle y emparentarlas a los planos y cilindros.

Para evitar que los objetos originales sean rendereados bastara con moverlos a una capa que mantendremos apagada. Cuando hagamos esto, puede pasar que Blender muestre cosas muy raras al disparar la animación con Alt + a. No le demos importancia, cuando rendericemos todo saldrá bien. Una animación (códec divx) de ejemplo pueden verla aquí.

Lo bueno de este enfoque es que, así toda la parte funcional del mecanismo la podremos modificar y ajustar sin manejar todos los vértices de las mallas finales.

Como todo lo bueno en el mundo este tutorial ya se acaba, pero si tienen alguna duda o quieren ver el ejemplo funcionando sin tanto trabajo pueden bajarse un ejemplo desde aquí.

.

Ver más sobre el tema y los comentarios en el foro