Lección 4 - Preguntas y Respuestas

Mensajes de los cursos de junio y octubre del año 2010.

Moderadores: David, Tutores

jquinchia
Junior
Junior
Mensajes: 47
Registrado: Lun Oct 04, 2010 5:15 am
Alumno: NO
Ubicación: Medellín (Colombia)

Lección 4 - Preguntas y Respuestas

Mensajepor jquinchia » Vie Nov 12, 2010 7:00 am

Un saludo a todos.
Bueno estuve trabajándole al snap de la pierna y me funciona (en base a la pierna suministrada) al pasar de modo FK a Ik. El problema es en el sentido contrario, es decir de IK a Fk, pero específicamente en el hueso del dedo "L_toesMain_BF", el hueso toesMain se adapta a la posición que trae la IK cuando debería paras lo contrario. Y me queda mi duda pues aparentemente el código esta bien y acorde a los nombres de la escena. En la lección no veo q se pruebe un cambio de IK a FK en el que implique un movimiento del dedo (podría ser un error desde la lección? :?: ) o a lo mejor ya estoy cansado y no veo lo evidente.
Si a alguien le ha funcionado perfectamente agradecería que me lo contara y asi saber que efectivamente estoy cansado jeje

Espero ser claro y no generar un enrredo.

Muchas gracias!!!

ikerJ
Miembro Vip
Miembro Vip
Mensajes: 212
Registrado: Mar Jun 15, 2010 9:21 pm

Re: Lección 4 - Preguntas y Respuestas

Mensajepor ikerJ » Sab Nov 13, 2010 3:15 am

Muy buenas, Jorge,

Pues parece ser que has dado con algo que no está demasiado bien atado, porque hasta ahora no me había percatado de ello. ¡Muy bien visto! Tironcillo de orejas para mí :) Parece que hemos dejado a su libre albedrío la alineación del hueso 'main' (que también actúa de FK) que hace de los dedos de los pies, y tanto al pasar de FK a IK como de IK a FK tiene pequeños saltitos.

Estoy trabajando en ello para poder solucionarlo, y colgar aquí el código del 'snap' para la pierna, además de alguna cosita más.

¡Gracias por señalarlo!

ikerJ
Miembro Vip
Miembro Vip
Mensajes: 212
Registrado: Mar Jun 15, 2010 9:21 pm

Re: Lección 4 - Preguntas y Respuestas

Mensajepor ikerJ » Sab Nov 13, 2010 3:38 am

Mientras tanto, vamos a dejar por aquí escritas algunas de las cosas pendientes de esta sesión:

- ¿Guión bajo en el parámetro 'footRoll'?
---------------------------------------------------------------------------
No recuerdo si fue Abel o Alejandro quien lo comentó, pero te confirmo, David, que es debido a cómo trata 'Parameter Editor' los espacios.

- Comprobar crecimiento/escala de una cadena de huesos cuyo tamaño es distinto cuando usamos 'autostretch'.
---------------------------------------------------------------------------
Después de haber estado probando en distintas situaciones, llego a la conclusión de que podemos instanciar los controladores de 'autostretch' en los distintos huesos que participen. Siguiendo el siguiente gráfico:

Imagen

... nos damos cuenta de que no importa las proporciones relativas entre un hueso de la pierna y otro, sino que lo que importa es que el factor de multiplicación cuando la estiramos tiene que ser, necesariamente, el mismo, para poder mantener estas proporciones.

En el ejemplo C y D, la relación de tamaño entre ambos huesos es 4:1, es decir, el azul oscuro es 4 veces más grande que el claro. Si multiplicamos el primero por un factor X, y el segundo, por un factor menor, la igualdad no se cumple:
80 + 20 = 100
80 * 2 + 20 * 2 = 100 * 2

80 * 2 + 20 * distinto de 2 != 100 * 2
- ¿Diferencia de valores (1,100) entre los pesos del controlador y de los 'targets'?
---------------------------------------------------------------------------
Cuando dentro de un 'constraint' elegimos uno o más objetos como 'target', le asigna un peso, por defecto, de 50.0. A partir de ahí, cómo tratemos nosotros esos pesos depende del valor que tengamos en ese momento en el parámetro que controla esos pesos.

Por ejemplo, un punto con un 'position constraint' a otros dos parte de unos pesos para cada 'target' de 50.0/50.0. Sabemos que necesitamos un par de expresiones del tipo:

valor
100 - valor

... para acercar dicho punto a uno u otro objeto. Ese '100' lo sustituiremos por el máximo de nuestro parámetro (siempre que ese rango sea positivo) para que nos funcione. Es decir, el peso entre los 'targets' de un 'constraint' es relativo.

Por otro lado, confirmo que el 'weight' del controlador sí está normalizado de 0 a 1, aunque en la pestaña MOTION veamos que tenga un valor de 100. Cuando queramos alterar el peso de un controlador deberemos tener esto en cuenta.

---------------------------------------------------------------------------

- Custom Attributes: lista de comandos por 'script' para no depender de CAManager y vivir un poco más tranquilos.
---------------------------------------------------------------------------

- Escalas Y/Z, grosor, fórmula
---------------------------------------------------------------------------
Uno de los principios de la 'compresión y extensión', o 'squash & stretch', es que el volumen de lo comprimido/estirado debe permanecer constante. Si estiramos el brazo de un personaje, y su grosor permanece constante, no da la sensación de que realmente se esté estirando.

¿Cómo haremos para controlar el grosor de este brazo automáticamente en nuestro sistema 'autostretch'? La longitud de un hueso sí se puede modificar mediante otra cosa distinta a la escala (posición X del siguiente hueso de la cadena), pero no así el grosor. Podemos variar los parámetros 'width' y 'height' del hueso, sí, pero eso no va a afectar a la geometría controlada por él, puesto que estos valores afectan únicamente a su apariencia.

Así que tenemos que usar la escala en Y y en Z. ¿Pero no es esto peligroso, puesto que entonces tendríamos escalas no uniformes? Sí, es MUY peligroso, pero por suerte disponemos de una opción en MAX para que los hijos en la jerarquía no hereden la escala de un objeto. Interesante, ¿verdad? Esto está dentro de la persiana 'Inherit', dentro del apartado 'Link Info' en la pestaña 'Hierarchy'.

Y aquí os dejo una escena para que la desmenucéis. Al mover el punto rojo de arriba, veréis que aunque se cambia el grosor no queda demasiado bien, ya que la escala es directamente proporcional a la distancia. Si movemos el de abajo, la escala es inversamente proporcional a la distancia, más alguna otra cosa más, resultando en que el comportamiento es muy 'cartoon' y cumple con los preceptos de 'squash & stretch':

La escena
---------------------------------------------------------------------------

- lookAt, profundizar en upnodes.
---------------------------------------------------------------------------
Lo dejaremos para después de la siguiente lección.

- Comprobar si existe algún parámetro dentro de IK que mida la distancia del 'solver' al principio de la cadena.
---------------------------------------------------------------------------
No he encontrado nada al respecto. Si alguien encuentra algo que pueda ser de utilidad, ¡decidlo! :rofl:

Si véis que me he dejado algo, adelante ;-)

======================================================================================
Adjuntos
sqSt.rar
(21.68 KiB) Descargado 466 veces
escalas.jpg
Última edición por ikerJ el Dom Nov 14, 2010 10:36 pm, editado 2 veces en total.

ikerJ
Miembro Vip
Miembro Vip
Mensajes: 212
Registrado: Mar Jun 15, 2010 9:21 pm

Re: Lección 4 - Preguntas y Respuestas

Mensajepor ikerJ » Sab Nov 13, 2010 5:36 am

Creo que he solucionado lo de los dedos de los pies, Jorge. Voy a grabarlo junto con el vídeo donde repaso la conexión del pie 'main' con el pie IK, pero básicamente he necesitado dos cosas:

- crear una capa nueva de controladores en rotación para ese punto auxiliar que creamos en la posición y orientación del hueso del dedo del pie IK (para que su homónimo FK supiera dónde orientarse cuando subíamos el peso del 'Orientation Constraint'),y atar esa rotación Z a un parámetro 'ToeH' en la huella IK del pie.

- leer la rotación en Z del hueso dedoDelPie-Main al alinear desde FK a IK, y usar ese valor con el parámetro que acabo de mencionar.

Qué complicado es describir estas cosas y que se entiendan ;) Adjunto la escena, y éste es el código del 'snap'. En las próximas horas grabo y subo este vídeo.
Adjuntos
piernaSnap_01.rar
(33.23 KiB) Descargado 319 veces

ikerJ
Miembro Vip
Miembro Vip
Mensajes: 212
Registrado: Mar Jun 15, 2010 9:21 pm

Re: Lección 4 - Preguntas y Respuestas

Mensajepor ikerJ » Sab Nov 13, 2010 5:36 am

Creo que he solucionado lo de los dedos de los pies, Jorge. Voy a grabarlo junto con el vídeo donde repaso la conexión del pie 'main' con el pie IK, pero básicamente he necesitado dos cosas:

- crear una capa nueva de controladores en rotación para ese punto auxiliar que creamos en la posición y orientación del hueso del dedo del pie IK (para que su homónimo FK supiera dónde orientarse cuando subíamos el peso del 'Orientation Constraint'),y atar esa rotación Z a un parámetro 'ToeH' en la huella IK del pie.

- leer la rotación en Z del hueso dedoDelPie-Main al alinear desde FK a IK, y usar ese valor con el parámetro que acabo de mencionar.

Qué complicado es describir estas cosas y que se entiendan ;) Adjunto la escena, y éste es el código del 'snap'. En las próximas horas grabo y subo este vídeo.

Código: Seleccionar todo

attributes CustomControls -- redefine: misAtributos ( parameters main rollout:myRollout ( spn_blend type:#float ui:spn_blend default:0.0 spn_aStretch type:#float ui:spn_aStretch default:0.0 spn_uLegStretch type:#float ui:spn_uLegStretch default:0.0 spn_lLegStretch type:#float ui:spn_lLegStretch default:0.0 spn_footRoll type:#float ui:spn_footRoll default:0.0 spn_footTilt type:#float ui:spn_footTilt default:0.0 spn_footSlide type:#float ui:spn_footSlide default:0.0 spn_heelRoll type:#float ui:spn_heelRoll default:0.0 spn_ballRoll type:#float ui:spn_ballRoll default:0.0 spn_toeRoll type:#float ui:spn_toeRoll default:0.0 spn_toeV type:#float ui:spn_toeV default:0.0 spn_toeH type:#float ui:spn_toeH default:0.0 ) -- ###### ésta es la parte de código generada automáticamente por Visual MAXScript Editor ###### -- rollout myRollout "Custom Controls" width:162 height:36 ( button btn_snap "snap" pos:[12,23] width:138 height:22 groupBox grp_Leg "Leg Control" pos:[4,4] width:154 height:146 spinner spn_blend "FK_IK_Blend " pos:[33,53] width:116 height:16 spinner spn_aStretch "autoStretch " pos:[36,77] width:113 height:16 range:[0,1,0] spinner spn_uLegStretch "upperLeg_Scale" pos:[21,101] width:128 height:16 range:[0,100,0] spinner spn_lLegStretch "lowerLeg_Scale" pos:[23,125] width:126 height:16 range:[0,100,0] groupBox grp_Foot "Foot Control" pos:[4,155] width:154 height:220 spinner spn_footRoll "foot_Roll " pos:[54,181] width:94 height:16 range:[-100,100,0] spinner spn_footTilt "foot_Tilt " pos:[56,207] width:92 height:16 range:[-100,100,0] spinner spn_footSlide "foot_Slide " pos:[49,231] width:99 height:16 range:[0,100,0] spinner spn_heelRoll "heel_Roll " pos:[53,255] width:95 height:16 range:[0,100,0] spinner spn_ballRoll "ball_Roll " pos:[57,279] width:91 height:16 range:[0,100,0] spinner spn_toeRoll "toe_Roll " pos:[57,303] width:91 height:16 range:[0,100,0] spinner spn_toeV "toe_V " pos:[66,326] width:82 height:16 range:[-100,100,0] spinner spn_toeH "toe_H " pos:[65,348] width:83 height:16 range:[-100,100,0] on btn_snap pressed do ( case $L_footCTRL_SA.modifiers[#Attribute_Holder].CustomControls[#spn_blend].value of ( 100.0: -------- pasando de IK a FK with undo on ( --poner valor FKIK a 0 $L_footCTRL_SA.modifiers[#Attribute_Holder].CustomControls[#spn_blend].value = 0 -- alinear rotación upperLegFK upperLegIK in coordsys $L_upperLegIK_BA $L_upperLegFK_SA.rotation = eulerangles 0 0 0 -- alinear rotación lowerLegFK lowerLegIK in coordsys $L_lowerLegIK_BA $L_lowerLegFK_SA.rotation = eulerangles 0 0 0 -- alinear rotación footMain footIKOrient02 in coordsys $L_footIKOrient02_DH $L_footMain_BF.rotation = eulerangles 0 0 0 -- alinear rotación toesMain footIKOrient01 in coordsys $L_footIKOrient01_DH $L_toesMain_BF.rotation = eulerangles 0 0 0 ) -------------------------------------- ------------------------------------------ 0.0: with undo on ( -- alinear posición footControl IK al pie FK $L_footCTRL_SA.position = $L_legFootIKSnap_DH.position -- alinear rotación footControl IK al pie FK in coordsys $L_legFootIKSnap_DH $L_footCTRL_SA.rotation = eulerangles 0 0 0 -- alinear posición upVector rodilla a la pierna FK $L_legUpVector_DA.position = $L_legKneeIKSnap_DH.position -- poner valor FKIK a 100 $L_footCTRL_SA.modifiers[#Attribute_Holder].CustomControls[#spn_blend].value = 100 -- ------------------ alinear rotación de toes $L_footCTRL_SA.modifiers[#Attribute_Holder].CustomControls[#spn_footRoll].value = 0 $L_footCTRL_SA.modifiers[#Attribute_Holder].CustomControls[#spn_toeV].value = ($L_toesMain_BF.rotation.controller[2].controller.value as eulerAngles).z ) ) ) ) -- custAttributes.add $.modifiers[#Attribute_Holder] misAtributos )
Adjuntos
piernaSnap_01.rar
(33.23 KiB) Descargado 333 veces

jquinchia
Junior
Junior
Mensajes: 47
Registrado: Lun Oct 04, 2010 5:15 am
Alumno: NO
Ubicación: Medellín (Colombia)

Re: Lección 4 - Preguntas y Respuestas

Mensajepor jquinchia » Sab Nov 13, 2010 6:19 am

Iker muchas gracias...Ya mismo lo miraría, sino fuera porque olvidé el password de el curso en la oficina jejeje

Alguien por favor que me recuerde el password por un mensaje interno acá en el foro, o en la plataforma del curso.

¡Gracias!

ikerJ
Miembro Vip
Miembro Vip
Mensajes: 212
Registrado: Mar Jun 15, 2010 9:21 pm

Re: Lección 4 - Preguntas y Respuestas

Mensajepor ikerJ » Sab Nov 13, 2010 7:08 am

Revisa tu bandeja de mensajes privados aquí en el foro ;-)

ikerJ
Miembro Vip
Miembro Vip
Mensajes: 212
Registrado: Mar Jun 15, 2010 9:21 pm

Re: Lección 4 - Preguntas y Respuestas

Mensajepor ikerJ » Dom Nov 14, 2010 1:05 am

Pie en 2 cadenas en lugar de 3: explicación un poco más detallada

[swf]http://www.somosposmodernos.com/liveOnL ... roller.swf[/swf]

Para verlo a pantalla completa, que aquí se ve muy pequeño:
http://www.somosposmodernos.com/liveOnL ... roller.swf (1280 x 720)


Volver a “Convocatorias 2010”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado