8 may. 2014

Tutorial ruedas que giren al mover el vehículo en Blender 2.70

En este tutorial aprenderemos a realizar ruedas que giren y doblen al desplazar el vehículo. Para tal tarea se usará un modelo de tractor. En primera instancia parece una tarea bastante simple y, de hecho, lo es, pero como siempre tiene algunos tips para que la situación no se nos torne desesperante o, al menos, frustrante. Lo primero que haremos será diseñar la rueda. Aquí la imaginación manda pero para quien lo desea, pondré al menos algunos pasos para lograr una rueda relativamente decente (en este caso de tractor). Por supuesto que hay diseños infinitamente mejores por la web. Luego a una de las cuatro ruedas le asignaremos un Driver y a las demás le indicaremos con una Constraint que copien la rotación de esa rueda que sería algo así como la rueda madre. Luego le indicaremos a las ruedas delanteras que doblen copiando el movimiento de algún otro objeto de fácil acceso como un cono o un Empty, por ejemplo. Y además limitaremos su torción.

Tractor realizado en Blender 2.70 por el autor.

Comienzo del tutorial

Primero diseñamos la rueda. Para hacerlo podemos hacer uso de la función Spin para realizar los dibujos del neumático. Y también para el neumático en sí, dado que partiendo de una curva que presente el corte transversal de la goma será más fácil controlar ciertas dobleces. Luego le aplicamos un Spin de 360º, eliminamos los vértices repetidos y queda muy bien. Abajo se ven las partes de esta rueda:

Diseño de la rueda.
Es decir, están los tornillos por un lado, la llanta, la goma, las letras y el dibujo todo por separado. Esto es útil en caso de necesitar desarmarla o modificar alguna parte y colorearla más simplemente. De todas maneras, si se pretende hacerla de un solo objeto, se pueden crear grupos de vértices (es muy recomendable hacerlo). Para luego, si es necesario, poder volver a separar las partes. Esto sería así si se pretende animar la rueda en una colisión, donde se puede desarmar o destruir por partes.
No voy a expandirme más al respecto dado que el tutorial se haría muy extenso, pero si alguien desea una explicación más detallada de cómo diseñar la rueda no tiene más que pedirlo.
Una vez que tenemos las dos ruedas, la grande y la pequeña, utilizamos el modificador Mirror para crear las otras dos (tendremos que dar vuelta las letras) y luego lo aplicaremos:

Modificador Mirror en Blender
Al modificador Mirror se lo puede aplicar en relación a un objeto, en este caso el Empty que se ve en la imagen.

Haciendo rotar las ruedas

Ahora es el momento de crear un objeto, un cubo por ejemplo, e indicarle a una de las ruedas que gire cuando el objeto se desplace. Algo importante es que todas las partes de la rueda tengan las rotaciones limpias en cero preferentemente. De lo contrario, ocurrirán rotaciones extrañas

Limpiar rotaciones
En caso de estar con rotaciones, poner todo en cero, pasar a modo Edit, acomodar a la posición correcta, y volver a modo Object.
Teniendo las ruedas todas con las rotaciones limpias y todos los centros en el centro físico donde irá el eje, vemos cuál es el eje en el cual se moverán de modo local, en este caso el eje X. Entonces, cerramos con candado todas los demás parámetros variables (no es imprescindible hacer esto) y en la variable x fijamos con clic derecho Add Single Driver:

Add Single Driver para controlar el giro de los neumáticos.
Ahora dividimos la pantalla en la parte derecha, cargamos el Graph Editor y dentro de las opciones elegimos Drivers:


Entonces elegimos una variable, que será el desplazamiento del cubo en Y Local y más arriba, en Scripted Expression colocaremos var o –var según la rueda gire a favor del desplazamiento o en contra (eso lo notaremos al mover el cubo). Entonces, en esta parte le indicamos que cuando el cubo se mueva localmente en el eje Y, la rueda rotará en el eje X:


Más arriba, en la opción Value, colocaremos el valor del ángulo que visualmente haga que la rotación esté en fase con el movimiento de desplazamiento. En ese aspecto lo mejor es experimentar, al igual que con las otras opciones de los Drivers como Averaged Value, Sum Values, etc…

A tener en cuenta el efecto estroboscópico

Un dato interesante es tener presente el efecto estroboscópico, que nos podrá arruinar la sensación de movimiento de la rueda si la fase de rotación de la rueda concuerda con el paso de los fotogramas. Entonces, como las ruedas presentan simetrías (en los dibujos del neumático, en las tuercas) podría ocurrir que con ciertos valores la rueda parezca no girar, o girar al revés. Para ello, no hay otra que ir haciendo uso del ensayo y error. 

Tractor
Continuando, en este punto ya tendremos a la rueda madre girando correctamente cuando el cubo se desplace. Lo siguiente es emparentar todas las partes del tractor con este cubo, para que lo sigan a todas partes. Como la variable está aplicada localmente, si rota el cubo las ruedas seguirán girando en la posición correcta.
Acto seguido, agregamos una Constraint Copy Rotation a las demás ruedas para que copien el movimiento de la rueda madre:

Agregamos una Constraint Copy Rotation a todas las demás ruedas y a las
partes de las mismas en caso de estar separadas.
Con esto, todas las gomas seguirán la misma rotación que la goma que tiene asignado el Driver.
Para terminar, agregaremos otra Constraint a las gomas pequeñas para hacerlas doblar. Para ello generamos por ejemplo un Empty manejador que será hijo también del cubo y es lo que actuará como volante del tractor.
Seleccionamos las gomas chicas y le agregamos dos Constraint, una para limitar la rotación (para que no doblen desmesuradamente) y otra para copiar la rotación del volante:
En este caso sólo copiaremos la rotación en Z, mientras que de la goma madre copia la rotación en X.

Es conveniente (no sé bien si necesario) poner en todos los casos Local Space
Recordemos que si la goma está segmentada en varias partes, todas las partes deberán tener la misma Constraint. También lo que se puede hacer es que todas las demás partes copien la rotación de la goma pequeña que sigue al volante, al igual que la otra goma pequeña.
Luego se completa el tractor de la manera que más nos guste o siguiendo un modelo real. Como se aprecia en esta última imagen siguiente, el Empty que mueve las ruedas tiene todas las variables bloquedadas menos la rotación en Z.

Manejando las ruedas frontales con un Empty volante
Si se producen rotaciones inesperadas o extrañas, hay que experimentar cambiando entre World Space y Local Space. Aunque lo más probable es que todo requiera la opción Local Space para funcionar correctamente.


Bueno, hasta aquí la cosa. Si hay partes que quedaron dudosas o faltantes de explicación hacérmelo saber en el sector de comentarios. Abajo añado un video donde se ve el tractor en funcionamiento.


En el próximo tutorial mostraré cómo realizar movimiento de orugas para tanques y esas otras maquinarias excavadoras o grúas que tanto nos gustan.

Pf. Mariano Miguel Lanzi

No hay comentarios: