IK / FK Arm Rig

Explicare como hacer un rig de brazo con Forward Kinematics e Inverse Kinematics (IK / FK ), de nuevo explico este concepto no es creación mia. bueno a lo que vamos. Primeramente crearemos 3 cadenas de joints, estas tres cadenas seran una para el IK, otra para el FK, y otra que llamaremos Bind, que es a la que ira pegado nuestro personaje, aqui podemos hacernos un poco de bolas con esto, va asi, la cadena de IK es donde montaremos nuestro IK handle en pocas palabras un rig normal de brazo, y la de FK sera la que controlemos a traves de las rotaciones de los Joints, la ultima cadena de Bind ozilara entre estas dos, controlando los movimientos de nuestro personaje :)

Crearemos bien las tres cadenas de joints, en la Cadena de Bind, es donde ira emparentada nuestra mano, las otras solo iran del hombro a lo que es la muñeca, como se muestra en la imagen. Para ahorrarnos tiempo podemos duplicar la cadena de joints y solo renombrarla entre IK y FK , estas cadenas no llevan joints en la mano, terminan en la muñeca.

Ahora si empezaremos a hacer contraints, primeramente haremos un Contraint Orient con maintain Offset activado del IK_shld a Bind_shld , y de FK_shld a Bind_shld, selecionaremos nuestro contraint en el outliner y cambiaremos el Interp Type a Shortest, Repetiremos el mismo paso en los otros Joints, Ik_elbow, Ik_forarm, Ik_wirst, fk_elbow, fk_forarm y fk_wrist, respectivamente con su joint correspontiente en la cadena de Bind.



A continuacion crearemos nuestra curva de control para la mano y la llamaremos ctrl_hand, agregaremos un atributo en add attribute con el nombre de switch, para poder cambiar entre el IK y el FK, ahora vamonos al hypershade y creemos un node MultiplyDivide que llamare ikfk_muldiv y cambiaremos el Input 2 X a 0.1.


Conectaremos usando el connection editor nuestra ctrl_hand al ikfk_muldiv, conectando el valor switch a input1X.

Abriremos el outliner y con el boton de en medio (middle click) arrastraremos al hypershade los constrints del bind, es decir bind_shld_orientConstraint1, bind_elbow_orientConstraint1, bind_forarm_orientConstraint1 y bind_wrist_orientConstraint1. ya una ves ubicados en el hypershade pasaremos a conectarlos con el multiplydivide. Empezaremos conectando el ikfk_muldiv.input1x a bind_shld_orientConstraint1.FK_shld_w1 y repetiremos esto con cada constraint respectivamente.

Ahora traeremos otro nodo a nuestra area de trabajo en el hypershade, crearemos un Reverse node y renombremoslo a ikfk_rev, conectaremos nuestro ikfk_muldiv.outputx al ikfk_rev.inputx, ok con esto hecho empezaremos a conetar el reverse a los constraints, conectamos ikfk_rev.ouuputx a bind_shld_orientConstraint1.ik_shldW0, y repetimos el mismo paso par los otros constraints faltantes.

Con esto tenemos casi terminado el rig, ahora soo falta crear los controladores y el ik. empezemos pues por el ik handle, hagmos un IK handle del ik_shld al ik_forarm , ahora seleccionemos su effector en el outliner y movamos su pivote al joint ik_wrist con un snap to point, creemos un controlador para el hombro ctrl_elbow lo colacamos a la altura del codo un poquito hacia atras, ahora seleccionamos el controlador shift el ik handle y constraint pole vector, ahora selectionamos nuestra ctrl_hand shift el ik, constraint point, ok super hazta shi tenemos seteado el control del IK, nos falta orientar la mano, selecionamos nuestra ctrl_hand shift ik_wirst y constraint orient con maintain offset activado.

Ahora crearemos 2 controladores mas para el FK, uno para el hombro y otro para el codo, y los colocaremos en su joint respectivo, renombremoslo ctrl_shld_fk y ctrl_elbow_fk, freeze transformation para mandar sus valores a cero, eso es logico :p , ok ahora selecionamos nuestro ctrl_elbow_fk shift fk_elbow y constraint orient con el offset activado, y repetimos lo mismo con el ctrl_shld_fk y fk_shld , ahora selecionamos nuestro ctrl_elbow_fk shift ctrl_shld_fk y le damos un parent, por ultimo podemos usar un set driven key, solo para ocultar estas curvas cuando estemos en IK, traeremos nuestro set driven key y le daremos key al visibility de ambas curvas cuando nuestroo switch este en 0, el visibility estara en 0ff, y cuando el switch, este en 0.1 el visibility en 0n.


Ahora si podemos provar nuestro setup de IK FK y todo deve funcionar a la perfección ;) espero les haya servido.

Un rato modelando...

Bueno todavia me falta algo de trabajo!! pero ahi va, el modelado pues fue en maya , y ahi voy en zbrush un ratin para no aburrirme ;) , esa idea ah kamviado tanto :s, pero vueno aver ke tal keda, pozteo y azi no me aburro :p, bueno luego la pongo ya terminada

Reverse Foot IK y stretchy Leg Tutorial



En el siguiente pequeño tutorial explicare como hacer un rig de pierna con reverse foot IK y que podamos estirarla cuando queramos y usarla de manera normal cuando no sea necesario. Aclaro que el método aquí usado no es inventado por mi al contrario es como un conjunto de varios tutoriales que eh encontrado muy útiles. Bueno, primeramente obvio trazamos nuestro rig y lo renombramos de una manera que para nosotros sea mas fácil de entender.


Creamos 3 IK's, uno que va del primer joint en este caso lo llamare leg_r al talón, que sera ankle_r, el segundo IK, iria del ankle_r a ball_r que es el joint que tenemos en la planta del pie, y el ultimo de ball_r a toe_r que seria nuestro ultimo joint en la cadena.



Agruparemos el ankleIK_r en si mismo, ubicando el pivote en el joint ball_r y llamamos este grupo gp_ball , ahora agruparemos el ballIK_r y toeIK_r ubicando su pivote en el joint ball_r de la misma manera que el anterior, este grupo lo llamaremos gp_toe. Con esto lograremos tener un control en alzando el talón sin afectar la planta del pie y así mismo alzar la planta (los dedos) sin afectar al talón.
Ahora agruparemos gp_toe y gp_ball para crear el grupo gp_toetip y colocaremos su pivote en el joint toe_r , este grupo nos permitirá que podamos alzar o girar el pie usando como pivote la punta del pie de nuestro personaje. Nos queda de la siguiente manera.


Creamos una curva, con la forma que nos guste para controlar estos movimientos, llamare a esta ctrl_foot_r , colocando su pivote en ankle_r , démosle un freeze tranformation y agreguemos atributos a esta curva que serán los siguientes Ball Raise, Toe Raise, Toe Pivot, Ankle Raise, normalmente uso esos nombres, puedes usar los que mas te gusten :p.

Recurramos al conecction editor, y conectamos cada movimiento respectivamente, Ankle Raise a gp_ball lo conectamos a su rotacion en X, Ball Raise a gp_toe igual su rotación en X, Toe Raise a gp_toetip en rotate X y por ultimo Toe Pivot a gp_toetip en rotate Y, concluido este ya solo los faltaría crear una curva para la rodilla y hacer el pole vector y listo tenemos nuestro rig de la pierna, solo nos faltaría ya hacer el stretchy.

Para esto tomaremos el Distance tool, colocando nuestro primer locator en leg_r y el ultimo en ankle_r, haremos un Constrin Ponit del joint leg_r a nuestro primer locator, que llamare dsloc_leg_r, luego haremos un Constrain Point igual pero ahora del ankleIK_r al segundo locator que llamare dsloc_knee_r, por ultimo renombrare mi distancia a dsdist_leg_r, esto solo para no hacerme bolas y sea mas facil referila cuando hagamos el codigo.



Ya con esto hecho, agregaremos a nuestra curva algun elemento de control que nos permita prender y apagar el Stretchy, en este caso usare Mode en boleano solo para que tenga on y off.


Vamos a estirar un poco nuestra pierna hasta el punto en el que veamos que la rodilla queda totalmente estirada y justo antes del limite en el que el controlador se separa de nuestro pie. y tomemos esa medida. en este caso es 8.75.


Pasaremos ahora si al Expression Editor, y creamos la siguente expresion, llamemosla Stretchy_limb. colocaremos el siguente codigo :

if (ctrl_foot_r.mode == 1)
{
if (dsdist_leg_rShape.distance >= 8.75 )
{
leg_r.scaleX = dsdist_leg_rShape.distance / 8.75;
knee_r.scaleX = dsdist_leg_rShape.distance / 8.75;
}
else
{
leg_r.scaleX = 1;
knee_r.scaleX = 1;
}
}
else
{
leg_r.scaleX = 1;
knee_r.scaleX = 1;
}

Si probamos nuestro Rig veremos como si tenemos el mode en on la pierna se alargara al pazar los 8.75 que le marcamos, con esto estamos ya casi completos, pero tmb ocaciona un problema, si tienes un rig en el cual piensas escalar tu personaje verar como la pierna llega a romperse, claro aqui supondre que tienes tu rig acomodado pensando en los grupos y eso, bueno, esto lo solucionaremos creando un MultiplyDivide Node, llamemoslo div_leg_r , cambiemoslo a Divide y pongamos en su Input1X nuestra distancia, 8.75, y de la misma manera en Input2X, luego cambiareos un poco nuestro mel.

Primero crearemos una nueva expresion, llamemosla div_scale, :

div_leg_r.input1X = charScale.sy * 8.75;

y cambiaremos nuestro Stretchy_limb a :


if (ctrl_foot_r.mode == 1)
{
if (dsdist_leg_rShape.distance >= div_leg_r.input1X )
{
leg_r.scaleX = dsdist_leg_rShape.distance / div_leg_r.input1X;
knee_r.scaleX = dsdist_leg_rShape.distance / div_leg_r.input1X;
}
else
{
leg_r.scaleX = 1;
knee_r.scaleX = 1;
}
}
else
{
leg_r.scaleX = 1;
knee_r.scaleX = 1;
}

Con esto ya no tendremos problemas al escalar nuestro personaje y funcionara de manera correcta. Bueno espero les haya servido, funciona de la misma manera para el brazo, es algo que a mi me ah zido de vastante utilidad ;)

Eunoia Morelia



Pues vengo regresando de conocer Eunoia Morelia, todavia le falta algo de trabajo a las instalaciones, pero pinta muuy vien, las nuevas oficinas estan muy cukiz, porke no fueron asi en eunoia san angel -.- otra historia avria sido :p por cierto ke padre esta morelia, me encanto la ciudad , se me hizo muy curiosa , limpia y todo la onda.

Maya 2009!!!!


Al fin hoy llego a mis manos Maya 2009, por lo que habia visto en los videos de autodesk tiene cosas muy prometedoras, que ahora tendre ke aprender a usar :p, lo mas interesante es Nparticles creo sho, unque los assets, los leyers de animacion se ven suuuuper cookies!!! aver que me pongo a modelar para ver que tantas monerias hace!! :p

requiero un tripie u_u


tzzz me disponia a preparar un HDRI y descubri que olvide el tripie en el DF -.- sale la idea de cortar 3 escobas y hacer uno pero no creo que funcione muy bien...trizteza!!! ahora tendre que salir a comprar uno...

So...

Chantalas con el blogspot! hoy como que bajo el trabajo un poco y me decidi a editar esto un poco, mm ... ya me hablaron de que quieren mas y mas puro pedir, les hablo un poco de mi rapido, me llamo fer, algunos me dicen Likyz, Me gusta el Diseño , aunque no es mi fuerte , me interesa mas el 3d, composión y efectos visuales, claro azi como master pues todavia falta y un vuen *violin mas pequeño del mundo* pero bueno ire aqui poniendo algunos trabajos si se puede tutos, y scripts o cosas que vaya considerando relevantes , ah por cierto si quieren cosas en 3d hechen un grituko! :p