Nuevo Tipo de Columna - Tarea 05

Moderadores: David, Tutores

AlbertoFdez
Junior
Junior
Mensajes: 27
Registrado: Lun Abr 04, 2011 7:36 pm

Nuevo Tipo de Columna - Tarea 05

Mensajepor AlbertoFdez » Mié May 25, 2011 9:11 pm

Hola gente.
Bueno, todo esto empieza cuando veo que Iker dice que el hacer una columna FK con Offsets(el segundo tipo) se pierde la habilidad de rotar la cadera desde, digamos, el centro de masas, el ombligo.
Y yo digo: esto no puede ser, tiene que haber alguna manera de tener lo mejor de cada mundo, Offsets y rotacion de columna como Dios manda.

Y después de decirlo, pues me puse a hacerlo, y esto que adjunto es el resultado.

Si la abris y punto puede parecer un poco caótico, así que en lugar de escribir una parrafada sobre su construcción he decidido hacer un FOTOTUTORIAL paso a paso.

Aqui el Scriptillo que se le añade al contrlador de la cadera

Código: Seleccionar todo

addModifier $ (EmptyModifier ()) ui:on -- renombramos nuestro modificador $.modifiers[1].name = "HipControl" -- [1] es el modificador de más arriba -- refrescamos(max tiene problemas de refresco automático) max create mode max modify mode ATH = attributes HipControl ( rollout HipSnap "HipSnap" ( --Nombres genéricos, renombrar segun los objetos reales en escena local HipHlpStart = $Rig_SnapHelpStart local HipHlpEnd =$Rig_SnapHelpEnd local HipStart = $Rig_Cadera_RotCenter local HipEnd = $Rig_Cadera_RotEndRef Local HipOffset = $Rig_CaderaOffSet local HipCTR = $CTR_Cadera local HipCTRorigin = $Rig_HipCtrOigin local HipEndOrigin = $Rig_SnapHelpEndOrigin local HipStartOrigin = $Rig_SnapHelpStartOrigin local HipRefAlign = $Rig_CaderaOffSetRefAlign local OffSpine01 = $CTR_SpineOffSet_01 button SnapHIP "Align Controllers" Width:120 Height:30 tooltip:"Mantiene la posición de los huesos; Reajusta el Rig para que las transformaciones funcionen" on SnapHIP pressed do ( HipHlpEnd.position = HipRefAlign.position HipStart.position = HipHlpStart.position HipEnd.position = HipHlpEnd.position HipCTR.position = HipCTRorigin.position ) button ResetHIP "Initial Pose" Width:120 Height:30 tooltip:"Devuelve la Cadera a su posicion Inicial" on ResetHIP pressed do ( in coordsys HipCTRorigin HipCTR.rotation = eulerangles 0 0 0 HipCTR.position = HipCTRorigin.position OffSpine01.position = HipStartOrigin.position HipHlpStart.position = HipStartOrigin.position HipStart.position = HipStartOrigin.position OffSpine01.position = HipStartOrigin.position HipHlpEnd.position = HipEndOrigin.position HipEnd.position = HipEndOrigin.position ) ) ) custAttributes.add $.modifiers[#HipControl] ATH-- esto es para añadir estos parametros al modificador recien creado
Cuando lo Comprobeis vereis que su funcionamiento es algo engorroso, el control funciona, pero el rig internamente se "desajusta", con este script y la ayuda de un buen puñado de helpers consigo que cuando pulsamos el boton, los huesos mantengan la posicion y rotacion que le hemos dado. lo Ideal es que cada vez, antes de usar ese controlador(que se puede rotar y mover) se pulse el boton.
Ahora vuene la pregunta mágica Iker, se podría conseguir que lo que hace ese boton estuviese continuamente ejecutandose?
Por lo demás ¿le veis algun otro problema que yo he pasado por alto?
Adjuntos
SpineFKCaderaInvertida.rar
(26.68 KiB) Descargado 318 veces
Spine FK&offset INVERSE HIP 01.jpg
Spine FK&offset INVERSE HIP 02.jpg
Spine FK&offset INVERSE HIP 03.jpg
Spine FK&offset INVERSE HIP 04 .jpg
Spine FK&offset INVERSE HIP 05.jpg
Spine FK&offset INVERSE HIP 06.jpg

gmendieta
Junior
Junior
Mensajes: 44
Registrado: Jue Oct 08, 2009 10:47 am
Alumno: SI

Re: Nuevo Tipo de Columna - Tarea 05

Mensajepor gmendieta » Mié May 25, 2011 9:37 pm

Esto es para conseguir que la columna gire desde el punto de pivote superior como en el tipo 1 de columna?

Yo lo que he hecho ha sido poner un punto alineado con el primero de abajo de la columna. Y ese punto tiene LOOKAT al 2º punto. Y las piernas linkados a este segundo punto. De esta manera consigo automáticamente la rotación que molaba del primero.

Un saludo

AlbertoFdez
Junior
Junior
Mensajes: 27
Registrado: Lun Abr 04, 2011 7:36 pm

Re: Nuevo Tipo de Columna - Tarea 05

Mensajepor AlbertoFdez » Dom May 29, 2011 6:14 pm

Bueno, siguiendo la corrección de IKER sobre lo de mantener una función activa en un Expression Script he intentado cambiar el funcionamiento de esta columna que he hecho, para que en lugar de tener que refrescar manualmente, el rig se ajuste automáticamente.
mi problema es que no se qué escribir en el script para que no me cree claves de animación en TODO el timeline.

esto lo que quiero que se ejecute constantemente

Código: Seleccionar todo

HipHlpStart = $Rig_SnapHelpStart HipHlpEnd =$Rig_SnapHelpEnd HipStart = $Rig_Cadera_RotCenter HipEnd = $Rig_Cadera_RotEndRef HipOffset = $Rig_CaderaOffSet HipCTR = $CTR_Cadera HipCTRorigin = $Rig_HipCtrOigin HipEndOrigin = $Rig_SnapHelpEndOrigin HipStartOrigin = $Rig_SnapHelpStartOrigin HipRefAlign = $Rig_CaderaOffSetRefAlign OffSpine01 = $CTR_SpineOffSet_01 HipHlpEnd.position = HipRefAlign.position HipStart.position = HipHlpStart.position HipEnd.position = HipHlpEnd.position HipCTR.position = HipCTRorigin.position
Se lo he puesto al control central, dentro de una checkbox vacía que he creado con Parameter Editor.
NEcesito algo que le indique que esa operación tiene que hacerla solo para el fotograma actual sin poner keys en todos lados.
hay unos cuantos comandos que he probado; como "currenttime", pero no se me ocurre como aprovecharme de ellos para conseguir lo que quiero
¡¿ayuda?!

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

Re: Nuevo Tipo de Columna - Tarea 05

Mensajepor ikerJ » Lun May 30, 2011 4:15 pm

Buenas,

Tiene buena pinta lo que muestras, Alberto. ¿Vas a implementarlo en tu personaje? Lo que interesa sobre todo es probarlo durante la animación. Vamos a ver si me puedo explicar...

Lo primero, creo que no vendría nada mal englobar lo que tienes dentro del código de cada botón dentro de una sentencia 'with undo on()'. De ese modo, si el usuario alinea o vuelve a la pose inicial y quiere deshacer el comando tiene esa posibilidad.

Luego, puedes usar un 'change handler' para alinear. Realmente, lo que queremos es alinear dos objetos después de transformar el control de la cadera. Así que siguiendo lo que comentó Gorka en su día podrías hacer:

Código: Seleccionar todo

when transform $CTR_Cadera changes do ( local HipHlpStart = $Rig_SnapHelpStart local HipHlpEnd =$Rig_SnapHelpEnd local HipStart = $Rig_Cadera_RotCenter local HipEnd = $Rig_Cadera_RotEndRef Local HipOffset = $Rig_CaderaOffSet local HipCTR = $CTR_Cadera local HipCTRorigin = $Rig_HipCtrOigin local HipEndOrigin = $Rig_SnapHelpEndOrigin local HipStartOrigin = $Rig_SnapHelpStartOrigin local HipRefAlign = $Rig_CaderaOffSetRefAlign local OffSpine01 = $CTR_SpineOffSet_01 with undo on ( HipHlpEnd.position = HipRefAlign.position HipStart.position = HipHlpStart.position HipEnd.position = HipHlpEnd.position HipCTR.position = HipCTRorigin.position ) )
Esto es un 'callback' (un evento que se ejecuta constantemente y que está a la espera de recibir órdenes), con lo que habría que prestar especial atención a su gestión/encendido/apagado.

==============================================================================================================

Pero observa que cuando empiezas a animar, y a rotar y a mover el control de la cadera (como un animador haría), como las alineaciones ('snaps') se producen en fotogramas clave y por defecto se está interpolando entre estos claves, ocurre esto:

http://somosposmodernos.com/liveOnLine/albertoSpine.swf
[swf]http://somosposmodernos.com/liveOnLine/albertoSpine.swf[/swf]
*para el 'alineado' automático he usado el código que he puesto arriba.

¿Maneras de solucionarlo? Pues se me ocurre que poner más 'keys', para que los objetos que se alinean no interpolen. Pero ahora vamos al centro de la cuestión: si esos objetos están ocultos, y están animados (hemos puesto 'keys' en ellos para que el sistema funcione), ¿qué ocurre cuando un animador cambia su animación y desplaza las 'keys' de su control de un punto a otro en la línea de tiempo? El invento deja de funcionar, a no ser que hagamos nosotros la gestión automática de esas 'keys'... con lo cual empezamos a añadir dificultad a una tarea aparentemente sencilla como es manipular la columna de un personaje.

Por eso en la mayoría de los casos se suele ir a lo más sencillo, aunque implique tener que elegir entre todas las soluciones disponibles. Prueba lo que te digo a ver si se te ocurre alguna manera de saltarnos ese problema :)


Volver a “Rig de Personajes”

¿Quién está conectado?

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