XSIforum.com

Challenge Nº3: "Rig conjunto" WIP César Sáez

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

KeyAllBoy

  • **
  • 130
  • Animation is Concentration
Re: Challenge Nº3: "Rig conjunto" WIP César Sáez
« Respuesta #10 en: 23 Abril 2010, 10:50:34 »
Interesante propuesta! Me ofrezco para animarlo y sugerir cosas si fuese necesario.

Re: Challenge Nº3: "Rig conjunto" WIP César Sáez
« Respuesta #11 en: 23 Abril 2010, 12:26:10 »
Lo tengo pendiente, algo he hecho en casa pero no lo suficiente como para subir un avance (lo cierto es que toda la movida de la api de nombres me ha tirado un poco para atrás).

En cuanto tenga algo mostrable lo subo y pido feedback :)

Re: Challenge Nº3: "Rig conjunto" WIP César Sáez
« Respuesta #12 en: 23 Junio 2010, 21:18:00 »
No tengo nada mostrable pero sigo con esto, me auto-dejo un recordatorio para subir cosas.

Con la salida de softimage 2011 y la posibilidad de escribir kinematics mediante ICE el enfoque de todo esto ha cambiado bastante para mi, haré una guía mucho más dinámica con previews en tiempo real basados en ICE (partículas y representaciones openGL) y luego usando python usaré esas partículas para crear los deformers y controles para el rig (ICE Kinematics) de forma que todo será mucho más procedural que lo que pensaba al principio. La idea es usar esto como una forma de crear mi propio mini pipeline y a la vez probar metodologías para hacer rigs basados en ICE Kinematics, es toda una revolución en la forma de hacer rigging y este ejercicio me parece perfecto para investigar como afrontarlo.

----------------------------------
Actualmente y a raíz de la nueva guía estoy buscando la forma de calcular la posición de los deformers (y representarla en ICE) interpolando con longitud de arco constante a través de una bezier de 4 puntos.

Me explico, la ecuación clásica de una bezier está expresada en función de un parámetro que va de 0 a 1 (como quien dice la U de una curva nurbs), el problema es que ese parámetro tiene que ver con las tensiones y no con longitud de arco por lo que no asegura una uniformidad y no me sirve.

Según he repasado en mis apuntes para lograr la longitud de arco de una línea continua debemos integrar la raíz cuadrada de 1 más la derivada al cuadrado de su ecuación (que mal queda por escrito), pongo un ejemplo:

f(x) = x                                     ---> ecuación de una línea recta desviada 45 grados
f'(x) = 1                                    ---> derivada de f(x)
S = ∫ sqrt(1 + 1^2) == ∫ 2^1/2
S = 2^1/2 * x                            ---> ecuación de la longitud de arco

De esta forma la longitud de arco entre los límites 0 e 1 en el eje x sería:
S = 2^1/2 * 1 + 2^1/2 * 0 = 2^1/2 = 1.4142...

Lo cual funciona perfectamente en este caso, el problema con la ecuación de la bezier es que es bastante más compleja y si no me equivoco con algún número llegamos a una ecuación no integrable por lo que no se podría resolver de forma empírica.

f(x) = A*(1-x)^3 + 3*B*x(1-x)^2 + 3*C*x^2(1-x) + D*x^3
donde A, B, C y D son los 4 puntos de control

f'(x) = 3*x^2*D + (6*x-9*x^2)*C + (9*x^2-12*x+3)*B + (-3*x^2+6*x-3)*A

S = ∫ sqrt( 1 + ( 3*x^2*D+(6*x-9*x^2)*C+(9*x^2-12*x+3)*B+(-3*x^2+6*x-3)*A ) ^ 2 ) -> no integrable :(

He estado buscando alternativas y tengo una solución que medio funciona donde por medio de iteraciones sobre la bezier calculo la longitud de arco e interpolo la posición en base a ello, aún tengo que refinar la forma de interpolar las posiciones de los segmentos pero no descarto usar alguna forma más elegante de resolverlo (por ejemplo descomponiendo la bezier de forma que llegue a una ecuación integrable). En definitiva aún no doy con la tecla pero estoy en ello.

Si alguien tiene una sugerencia es bienvenida, parece una tontería de hacer cuando se piensa sólo en el resultado final pero es bastante más difícil (y divertido) de lo que parece.

Pronto más!
« Última modificación: 23 Junio 2010, 21:25:20 por César Sáez »

Re: Challenge Nº3: "Rig conjunto" WIP César Sáez
« Respuesta #13 en: 24 Junio 2010, 00:17:49 »
Sigo con mi monólogo :)

Se me ha ocurrido una forma de hacerlo mediante aproximación que por fin me convence, de hecho creo que es la misma forma que usa internamente softimage (exactamente el mismo resultado), lo interesante es que lo calculo de forma paralela sin recaer en múltiples ejecuciones y es bastante más limpio/rápido de lo que tenía, con esto ya tengo mi distribución uniforme y puedo seguir, dentro de poco trataré de subir alguna captura o algo.

Como mola ICE :)

siru

  • ***
  • 1761
  • Artista incomprendido
Re: Challenge Nº3: "Rig conjunto" WIP César Sáez
« Respuesta #14 en: 25 Junio 2010, 12:15:42 »
Joder si te empanas de todo eso.... Animo tengo ganas de ver algo!

Re:Challenge Nº3: "Rig conjunto" WIP César Sáez
« Respuesta #15 en: 27 Enero 2014, 22:44:53 »
Hola a todos,

Aunque no lo creáis lo que comentaba al principio del hilo no ha quedado en el olvido y estoy trabajando en ello desde hace 1 año o asi (en mi tiempo libre), no quiero daros la chapa con todo el rollo del framework y tal (que por cierto, le he llamado riglab) pero si alguien quiere saber más al respecto hay un preview (de hace 1 año) y algunas entradas técnicas relacionadas en mi blog.

Al lio, revivo este hilo porque he retomado el personaje de este challenge como conejillo de indias y he pensado que lo mínimo que puedo hacer es primero dar las gracias a quien lo ha cedido y en segundo lugar compartir los timelapses del proceso, probablemente más adelante los edite añadiendo un voice over y tal pero por ahora simplemente grabaré el proceso con tal de revisar el workflow.

Asi que nada, os dejo el primer vídeo con el timelapse del esqueleto (4x) y ya iré actualizando a medida que afronte el resto.
https://www.dropbox.com/s/a7wp2sfgoasve7d/00_skeleton.mp4

Cosas que rescataría (que lo mismo al estar tan acelerado no se entiende):
- Herramienta para dibujar curvas dentro de la geometría.
- Herramientas para pasar de curvas a cadenas de nulls y viceversa (con orientaciones consistentes).
- Posibilidad de re-alinear la selección de acuerdo a una curva.
¿Porque curvas?
Limpieza, no tenemos que lidiar con orientaciones, compatible con todos los deformadores de softimage (por ejemplo se puede hacer control de versiones mediante shapes, re-proyectar cambios de la geometría mediante gator, usar lattices, etc), el manipulador de softimage a nivel de componentes brinda posibilidades muy chulas (pivotes temporales, escalado, etc).

Como lo veis? Tiene sentido?
« Última modificación: 28 Enero 2014, 02:41:17 por Cesar Saez »

Re:Challenge Nº3: "Rig conjunto" WIP César Sáez
« Respuesta #16 en: 27 Enero 2014, 22:51:55 »
Vamos que esto debería estar ya acabado!!:P Dale caña que la cosa pinta bien, a ver si mañana puedo echarle un ojo que no lo he probado. Animo crack!

Re:Challenge Nº3: "Rig conjunto" WIP César Sáez
« Respuesta #17 en: 27 Enero 2014, 23:51:23 »
Jejeje
Riglab no es un auto-rigger y probablemente es diferente a lo que la mayoría de la gente espera de un sistema para hacer rigs, pero creo que tiene sus ventajas. Me encantaría conocer tu opinión a medida que os enseñe cosas más interesantes, ya me dirás :)

El siguiente vídeo tiene que ver con la inicialización del rig, se crea un rig en el editor de riglab, se le asocia un esqueleto + geometrías y como paso opcional se puede definir una pose neutra para el proceso de rigging, de esta forma aseguramos que luego las curvas de animación tengas ejes limpios y 'normalizamos' la pose que viene de modelado sin perder las ventajas de una pose creada para favorecer deformaciones (que no necesariamente es la más favorable para animación).
https://www.dropbox.com/s/t0p84npsygfdmk9/01_init.mp4

Por cierto, la compresión del preview de dropbox destroza la calidad del video, la versión descargable se ve mucho mejor.
« Última modificación: 28 Enero 2014, 00:02:47 por Cesar Saez »

Re:Challenge Nº3: "Rig conjunto" WIP César Sáez
« Respuesta #18 en: 28 Enero 2014, 11:05:48 »
Muy interesante Cesar!

Re:Challenge Nº3: "Rig conjunto" WIP César Sáez
« Respuesta #19 en: 29 Enero 2014, 06:45:48 »
Buenas!
Es algo tarde pero no quería dejar pasar el día sin subir algo del proceso, en el siguiente vídeo se puede ver como se pueden asignar distintos comportamientos a partes del esqueleto, agrupándolos en un stack (como los operadores de softimage) y permitiendo controlar el estado de cada solver o de todo el grupo mediante presets (para generar rigs multicapas, ik/fk y todo el rollo).
https://www.dropbox.com/s/1b9v152ddtt9f37/02_leg-solvers.mp4

Una cosa interesante de riglab es que no abarca solo la creación sino que todas las operaciones son persistentes entre sesiones, por lo que se puede interrumpir/retomar el trabajo en el rig sin problemas, se puede explorar rigs existentes de forma muy visual y/o interactuar con ellos mediante python (donde obtienes exactamente la misma instancia que durante el proceso de creación, creación y edición comparten una api única) :)
« Última modificación: 29 Enero 2014, 06:52:05 por Cesar Saez »