XSIforum.com

Rig pierna, controlador de rodilla.

0 Usuarios y 1 Visitante están viendo este tema.

Re: Rig pierna, controlador de rodilla.
« Respuesta #10 en: 19 Enero 2009, 17:23:32 »
Bueno, llevo un rato dandole vueltas y solo he consguido llegar a esto:

En caso de que el escalado sea justo la mitad, multiplicar por 2 las expresiones de ctr distance, pero claro, en el momento que no está escalado justo a la mitad del escalado original, no funciona, seguiré dandole vueltas...  ^-^
Alguna pista?  ;D


alanf

  • *****
  • 6029
  • Pipeline Developer @ Felix & Paul Studios
Re: Rig pierna, controlador de rodilla.
« Respuesta #11 en: 19 Enero 2009, 20:55:27 »
Alguna pista?  ;D
Prueba multiplicar o dividir por el valor de cualquier eje (axis - X, Y o Z) global (no local!) de escalado del root de la cadena.

Re: Rig pierna, controlador de rodilla.
« Respuesta #12 en: 20 Enero 2009, 08:10:24 »
Entonces me acerqué a la solucion, ayer es que dormí poco  :P

Se soluciona dividiendo la expresion por el valor de escalado que tenga el null padre


por ejemplo si el escalado es 0,7257
ctr_dist( Model.root.kine.global.pos, Model.sphere.kine.global.pos ) / 0.7257

no?

Lo que no entiendo es el pq pasa esto, si la expresion le dice que calcule la distancia entre 2 puntos, pq deja de respetarlo?  ???

Algun problema mas que resolver? me gustan estas cosas e intentar descubrirlas por mi mismo  O0


alanf

  • *****
  • 6029
  • Pipeline Developer @ Felix & Paul Studios
Re: Rig pierna, controlador de rodilla.
« Respuesta #13 en: 20 Enero 2009, 15:25:13 »
ctr_dist( Model.root.kine.global.pos, Model.sphere.kine.global.pos ) / 0.7257
Bueno, mas bien que dividirlo por un valor especifico, lo referencias. Por ejemplo en vez del numero, si tu null se llama "pepito", seria "pepito.kine.global.sclx" (cualquier eje, da igual ya que al escalar normalmente afectas todos los ejes igual), o sea:
ctr_dist( Model.root.kine.global.pos, Model.sphere.kine.global.pos ) / pepito.kine.global.sclx

Lo que no entiendo es el pq pasa esto, si la expresion le dice que calcule la distancia entre 2 puntos, pq deja de respetarlo?  ???
Porque los hijos de un padre heredan las transformaciones y escalado de su padre. O sea, lo de ctr_dist() es tecnicamente correcto dentro del contexto del hijo, pero no globalmente. (Da igual que pongas ".global.pos" ya que a la expresion solo le interesa nombres de objetos en realidad.)


Algun problema mas que resolver? me gustan estas cosas e intentar descubrirlas por mi mismo  O0
Y a mi el poder responderte una frase corta y que descubras cosas por tu cuenta. XD En mi opinion asi se suele aprender mas que si te doy una respuesta detallada con todo ya hecho.

Como continuacion de practica con ctr_dist() te propongo que intentes hacer una pierna elastica mas o menos automatica... Que al estar en posicion normal, y encojer, no pasa nada, pero al estirar, se estira con el controlador.

Luego una vez hagas eso, que tambien sea capaz de ser comprimida. Es casi lo mismo. Y por ultimo, que todo esto sea controlable via dos booleans (on/off) o dos sliders para blending. (Realmente un boolean switch en este caso esta bien.) Mira el manual sobre las expresiones cond() - condicionales.

Bonus si consigues todo esto + rodilla movible que se traslade proporcionalmente en relacion al comienzo y fin de la pierna/brazo.

Suerte! O0

Re: Rig pierna, controlador de rodilla.
« Respuesta #14 en: 20 Enero 2009, 16:30:20 »
Bueno, estoy dandole vueltas al tema de estirar y que no se encoja con un custom parameter para desactivarlo.

La condicional es esto:
cond( la condicion , lo que pasa si se cumple , y lo que pasa si no se cumple ) no?

Como condicion entonces seria, que el custom parameter este activado y que la longitud total de los huesos tenga que ser mayor a la total original, supongamos que cada uno tiene 6 de longitud asi que seria >12.

Si esto se cumple entonces ctr distance del root al effector.

Y si no se cumple que tenga la longitud original, osease 6.

seria algo asi?


Voy a probar


Re: Rig pierna, controlador de rodilla.
« Respuesta #15 en: 20 Enero 2009, 17:01:30 »
Lo he planteado mal, ya que lo he pensado en caso de un rig sin el controlador de la rodilla como yo tengo.

Seria la condicion el parametro activado y un valor mayor a la distacion entre el root y el controlador de la rodilla, osease >6.

Si se cumple ctr distance del root al controlador

y si no se cumple? ni idea, pq poniendo la longitud original del hueso, el sistema funciona, pero al desactivar el parameter sigue sin encojerse, asi que estoy dandole vueltas.

Aparte hay otro problema, el effector tiene constraint de posicion a un controlador situado en su misma posicion, pero no lo respeta al encojer, no se el pq.

Dejo un video demostracion: