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:
... 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!
Si véis que me he dejado algo, adelante
======================================================================================