Paso 1
Todo lo que
puedas hacer para facilitar la tarea de animación de
un personaje estará bien hecho. Usar sliders
o spinners para controlar la rotación de ciertos
huesos es una de las cosas que hace que el proceso de animación
más sencillo. La ayuda que estos te brindan consiste
en que no tienes que ir haciendo zooms y seleccionar cada
hueso individual cada vez que quieres mover la mano. Todo
lo que tienes que hacer es pinchar en el objeto control del
brazo, y variar los valores de los spinners o sliders
para obtener el movimiento que estamos buscando.
Lo primero que debes saber es que éste es un proceso
laborioso, pero el esfuerzo que hacemos para con la construcción
compensa al final. No obstante, hay un script que escribió
Michael Comet que hace este proceso mucho más rápido.
Hasta ahora no he recomendado el uso de ningún plug
in de terceros o script porque creo que debes saber cómo
crear estos "rigs" sin necesidad de recurrir a herramientas
externas a Max. Pero esta vez haré una excepción
porque este script no hace el trabajo por tí, sólamente
acelera bastante el proceso. Entraré en más
detalle cuando lleguemos al punto correspondiente.
Así
pues, empezaremos con la construcción de mano del último tutorial. Para empezar, añade
un ayudante Point a la escena. Éste será
el IK Goal u objeto Helper al que normalmente
asociarías la mano cuando estás construyendo
el brazo.

|
|
Paso 2
Alínea
el ayudante con la base de la palma.

|
|
Paso 3
Con el ayudante
aún seleccionado, añadiremos los Custom Attributes
(CA's) que controlarán en última instancia los
dedos. Abre la ventana Custom Attribute.

|
| Paso 4
Usaremos
los mismos parámetros, excepto los nombres, para todos
los CA's. Mira debajo para saber cómo configurar el primero.
Puedes usar un spinner o un slider, pero yo
prefiero los segundos, aunque no afecta para nada al modo de
trabajar. Al primero, le llamaremos Index Curl, y le
daremos un rango de 0 a 10. Controlará la curvatura del
dedo índice. Pincha en el botón Add en
la parte inferior de la ventana cuando estés seguro de
los parámetros, pero no la cierres.

|
|
Paso 5
Añade
los otros CA's de la misma manera. Los nombres se muestran abajo.
No olvides pinchar Add después de cada uno.
Cierra la ventana cuando los tengas todos. Si lo has hecho todo
bien, deben aparecer todos los spinners en la pestala
Modify del objeto ayudante.

|
|
Paso 6
Siempre es
una buena idea renombrar tus huesos de algún modo en
el que puedas reconocerlos a medida que trabajas con ellos.
Debajo está la lista de todos los huesos en la escena,
y del nombre que les he dado. Bone 01 es el que está
más cerca del nudillo, y Bone 03, el que está
en la punta.

|
|
Paso 7
Ahora viene
la parte más tediosa. Necesitamos un List Controller
en Z Rotation Axis (eje Z de rotación) de
cada uno de los huesos de los cuatro dedos, y no del pulgar.Ve
a la pestaña Motion, expande Rotation Controller,
ilumina el eje Z, pincha en el botón Assign Controller,
y elige Float List. La razón es que vamos a tener
dos spinners para controlar la rotación en el eje Z:
uno para la curvatura de cada dedo y otro para abrir y cerrar
la mano. Si no añadimos List Controller, cuando
hagamos la interconexión conel segundo spinner, se desconectará
el primero, y no tendrá uso alguno.

|
|
Paso 8
Bien, aquí
es donde el Michael Comet's WireConnect script puede echarnos
una mano. Pincha en el enlace para descargarlo. Recomiendo descargarse
el pack entero y leer las instrucciones para saber cómo
instalarlos.
Lo que hace este scripts es permitir hacer la interconexión
en una sóla ventana sin tener que estar pinchando con
el botón derecho todo el rato y navegando por los submenús
de cada hueso. Esto nos va a ahorrar muchísimo tiempo.
Hay un par de cosas a tener en cuenta cuando se usa este script.
Primero, estate atento cuando selecciones en las ventanas MASTER
y SLAVE. La interconexión se completa inmediatemente
después de seleccionar algo en MASTER y en SLAVE.
Así que si accidentalmentepinchas x_rotation
cuando querías hacerlo en y_rotation, tendrás
que desmontarlo todo "a la manera tradicional". Ve
con cuidado dónde pinchas. Lo segundo es que tienes que
darle a la tecla Tab de tu teclado para que los cambios en la
expresión de la interconexión tengan efecto.
Ahora, lo que tienes que hacer es pinchar en el botón
MASTER y seleccionar el ayudante Point. Luego
pincha en el botón SLAVE y selecciona el hueso
que quieres interconectar con Point. Empezarmos con
el hueso de la base del dedo índice, con nombre BoneIndex01.
Busca en la lista de MASTER la categoría ( OBJECT_POINT_HELPER:
CUSTOM_ATTRIBUTES ). Debajo hay una lista con los CA's que
hemos creado. Selecciona Index_Curl. Ahora busca la
cabecera ( Z_ROTATION ) en la ventana SLAVE, y selecciona
bezier_float. Puedes ver también el item available
debajo de bezier_float, que fue creado cuando añadimos
el List Controller anteriormente. Usaremos
Available dentro de un ratillo. En el aparado para las
expresiones, cambiamos lo que hay por -(degtorad(index_curl)*9);
(asegúrate de poner el signo "menos" delante,
para hacer que el dedo gire hacia abajo y no hacia arriba) y
pulsa la tecla Tab para actualizar la interconexión.
En este momento debes de poner cambiar los números en
el CA Index Curl que creamos antes y ver cómo
el dedo índice rota arriba y abajo.
Ahora sigue los mismos pasos para los siguientes huesos. No
te preocupes por el pulgar, porque lo montaremos después.
Aquí hay una lista de cómo interconectar los distintos
huesos de los dedos:
Point01 --> index_curl --> BoneIndex01
--> Z_ROTATION --> bezier_float -->
-(degtorad(index_curl)*9); Point01 --> index_curl --> BoneIndex02
--> Z_ROTATION --> bezier_float -->
-(degtorad(index_curl)*11); Point01 --> index_curl --> BoneIndex03
--> Z_ROTATION --> bezier_float -->
-(degtorad(index_curl)*7); Point01 --> middle_curl --> BoneMiddle01
--> Z_ROTATION --> bezier_float -->
-(degtorad(middle_curl)*9); Point01 --> middle_curl --> BoneMiddle02
--> Z_ROTATION --> bezier_float -->
-(degtorad(middle_curl)*11); Point01 --> middle_curl --> BoneMiddle03
--> Z_ROTATION --> bezier_float -->
-(degtorad(middle_curl)*7); Point01 --> ring_curl --> BoneRing01
--> Z_ROTATION --> bezier_float -->
-(degtorad(ring_curl)*9); Point01 --> ring_curl --> BoneRing02
--> Z_ROTATION --> bezier_float -->
-(degtorad(ring_curl)*11); Point01 --> ring_curl --> BoneRing03
--> Z_ROTATION --> bezier_float -->
-(degtorad(ring_curl)*7); Point01 --> pinky_curl --> BonePinky01
--> Z_ROTATION --> bezier_float -->
-(degtorad(pinky_curl)*9); Point01 --> pinky_curl --> BonePinky02
--> Z_ROTATION --> bezier_float -->
-(degtorad(pinky_curl)*11); Point01 --> pinky_curl --> BonePinky03
--> Z_ROTATION --> bezier_float -->
-(degtorad(pinky_curl)*7);

|
|
Paso 9
No ha ido
tan mal después de todo, ¿no? Sé que es
una tarea muy pesada (Nota del traductor: que me lo digan
a mí :S). Pero si lo has hecho todo bien, los "Curl
spinners" deberán doblar los dedos arriba y abajo.
Ahora, el pulgar. Antes que nada debemos hacerle un pequeño
ajuste. Si te fijas en el tuyo, verás que está
rotado longitudinalmente comparado con los otros dedos. Así
que necesitamos rotar la base del pulgar para que se comporte
de una manera más realista. Rótalo unos -60 grados
a lo largo de su eje local X.

|
|
Paso 10
Sigue los
mismos pasos que con los otros dedos. Aquí tienes la
descripción:
Point01 --> thumb_curl --> BoneThumb01
--> z_rotation --> -(degtorad(thumb_curl)*4); Point01 --> thumb_curl --> BoneThumb02
--> z_rotation --> -(degtorad(thumb_curl)*4); Point01 --> thumb_curl --> BoneThumb03
--> z_rotation --> -(degtorad(thumb_curl)*4);

|
|
Paso 11
En este momento
todos los dedos y el pulgar deben funcionar correctamente. Ya
no es necesario mover directamente los huesos para obtener casi
cualquier pose. Ahora añadiremos un par más de
interconexiones para hacerlo todo aún más sencillo.
Hay muchas ocasiones en que quieres doblar todos los dedos a
la vez, ¿no? Pues vamos a hacer que el spinner Fist
haga precisamente eso.
Y la descripción de los parámetros...:
Point01 --> fist --> BoneIndex01 -->
Z_ROTATION --> available --> -(degtorad(fist)*9);
Point01 --> fist --> BoneIndex02 -->
Z_ROTATION --> available --> -(degtorad(fist)*11);
Point01 --> fist --> BoneIndex03 -->
Z_ROTATION --> available --> -(degtorad(fist)*7);
Point01 --> fist --> BoneMiddle01 -->
Z_ROTATION --> available --> -(degtorad(fist)*9);
Point01 --> fist --> BoneMiddle02 -->
Z_ROTATION --> available --> -(degtorad(fist)*11);
Point01 --> fist --> BoneMiddle03 -->
Z_ROTATION --> available --> -(degtorad(fist)*7);
Point01 --> fist --> BoneRing01 -->
Z_ROTATION --> available --> -(degtorad(fist)*9);
Point01 --> fist --> BoneRing02 -->
Z_ROTATION --> available --> -(degtorad(fist)*11);
Point01 --> fist --> BoneRing03 -->
Z_ROTATION --> available --> -(degtorad(fist)*7);
Point01 --> fist --> BonePinky01 -->
Z_ROTATION --> available --> -(degtorad(fist)*9);
Point01 --> fist --> BonePinky02 -->
Z_ROTATION --> available --> -(degtorad(fist)*11);
Point01 --> fist --> BonePinky03 -->
Z_ROTATION --> available --> -(degtorad(fist)*7);

|
|
Paso 12
Configuramos
un spinner más, Spread, que nos va a servir
para poder separar ligeramente los dedos unos de otros un poquillo.
La descripción, aquí debajo:
Point01 --> finger_spread --> BoneIndex01
--> y_rotation --> (degtorad(finger_spread)*1);
Point01 --> finger_spread --> BoneMiddle01
--> y_rotation --> (degtorad(finger_spread)*.5);
Point01 --> finger_spread --> BoneRing01
--> y_rotation --> -(degtorad(finger_spread)*.5);
Point01 --> finger_spread --> BonePinky01
--> y_rotation --> -(degtorad(finger_spread)*1);
Point01 --> finger_spread --> BoneThumb01
--> y_rotation --> (degtorad(finger_spread)*3);

|
|
Paso 13
Ya está
todo preparado y listo para animar.

|
Hay
un par de cosas que me gustaría comentar. Por ejemplo, los números
que he usado como multiplicadores en las expresiones, como 9,11, 7,
etc. son totalmente arbitrarios. Estos son los que creo que funcionarán
bien con mi "rig". Puedes cambiarlos a cualquier valor que
creas conveniente para tu modelo. Otras cosas también pueden
cambiarse, como el usar spinners o sliders, los valores iniciales y
finales (rango), etc. Lo bueno de esto es que es totalmente configurable.
Juega con los parámetros para comprobar cuáles son los
que te vienen mejor.
Otra
cosa que puedes hacer es añadir un controlador Bezier Float
en el slot Available de Z Rotation, en cada
articulación de los dedos, para poder mover los dedos manualmente
si deseas hacerlo. Ve al Paso 7 para recordar cómo añadir
un controlador. Una vez añadido Bezier Float, necesitas
activarlo, porque si no no ocurrirá nada cuando quieras rotar
el dedo manualmente. Para ello pincha con el botómn derecho del
ratón en Z Rotation del árbol del controlador y
elige Properties. Ahora pincha en Bezier Float y luego
en el botón Set Active. La flecha se moverá al
lado de Bezier Float para indicar que está activo.
Si quieres
volverte loco con esto puedes construir más CA's para controlar
sólo los dos segmentos de la punta de los dedos. De este modo
puedes rotarlos independientemente del segmento de la base para obtener
más control. Prueba a doblar tu propio dedo para comprobar las
muchas maneras que hay de hacerlo. Intenta configurar tus controles
para emular lo que podrías hacer con un dedo real.
Pincha aquí para ir a la siguiente técnica...
Pincha aquí para volver a la página "Manos"... |