XSIforum.com

Expresión para stretch de huesos

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

Expresión para stretch de huesos
« en: 16 Marzo 2015, 01:33:48 »
Buenas chavales

Estoy probando con los rigs elásticos (en Maya, pero lo pongo aquí que siempre sois mis salvadores  :angel:). Se que es una tontería pero no consigo hacer que un atributo active o desactive el codigo, con idea de que el stretch no siempre esté activo.

La expresión es esta

Código: [Seleccionar]
//
if (  distance_stretchShape.distance >= 14.308003 )
{
hueso1.scaleX = distance_stretchShape.distance/14.308003;
hueso2.scaleX = distance_stretchShape.distance/14.308003;
}

else
{
hueso1.scaleX = 1;
hueso2.scaleX = 1;
}

Y quiero hacer simplemente que sólo funcione cuando el valor del atributo está a 1, pero al meterlo en la expresión no me deja cambiar el valor del atributo.
Lo escribo así
 
Código: [Seleccionar]
//
if ( ( distance_stretchShape.distance >= 14.308003 ) && ( ATRIBUTO = 1 ) )
{
hueso1.scaleX = distance_stretchShape.distance/14.308003;
hueso2.scaleX = distance_stretchShape.distance/14.308003;
}

else
{
hueso1.scaleX = 1;
hueso2.scaleX = 1;
}


¿Qué hago/escribo mal?

Re:Expresión para stretch de huesos
« Respuesta #1 en: 16 Marzo 2015, 10:11:47 »
Estas cosas se hacen mediante nodos, las expresiones son muchísimo más lentas de evaluar y pierdes todos los beneficios del modelo push-pull del DG de Maya (la expression reside en 1 nodo y se reevalua cuando cualquiera de las dependencias cambia).

Es poco intuitivo al principio, pero puedes hacer todas las operaciones matemáticas básicas mediante shading nodes (multiplyDivide, blendColors, clamp, etc), si necesitas calcular un valor en lugar de un vector simplemente usa uno de los componentes ;)
« Última modificación: 16 Marzo 2015, 10:45:59 por Cesar Saez »

Re:Expresión para stretch de huesos
« Respuesta #2 en: 16 Marzo 2015, 10:50:03 »
Gracias César, imaginaba de las ventajas de trabajar con nodos, pero como en SI prácticamente no los toqué, he empezado trabajando con la expresión.
Ya estoy en ello, y parece que lo consigo, aunque no termino de entenderlo muy bien... tiempo al tiempo jeje


Por cierto otra pregunta que no tiene que ver con el tema principal

Llevo mucho tiempo usando en softi los 'doritos' para el rig facial ¿Qué hay acerca de esto en Maya? ¿Cuál es la forma mas común de hacer este tipo de rig (blendshape + deformadores)?
He visto algún tuto aplicando la misma técnica, pero no se si este método está muy extendido en este soft

Re:Expresión para stretch de huesos
« Respuesta #3 en: 16 Marzo 2015, 11:24:03 »
Se hace exactamente igual, el concepto es el mismo. Es un poco más lioso de conectar ya que el equivalente al "static kine state" reside en el nodo skinCluster (es un array y los indices deben coincidir).

En general, una de las grandes diferencias en el diseño de Maya vs Softimage es la cantidad de metadatos que lleva cada nodo, en Softimage cada nodo/objeto va cargado con datos que son muy útiles para trabajar (por ejemplo global kinematics) pero a la vez redundantes y por ende más "lentos" de evaluar. En Maya esta todo muchísimo más expuesto y cada nodo lleva lo mínimo para permitir un mejor rendimiento en detrimiento del workflow (toca cazar los atributos desde distintos nodos).


Dicho esto, en Maya se pueden hacer ciertos truquillos para facilitar las cosas, por ejemplo puedes crear una superficie mediante un loft entre los 2 egdes más cercanos al dorito (si, he dicho edges) y simplemente atacharlo a esa superficie, ahorrandote la malla duplicada y todo el rollo de las dependencias circulares (por cierto, gracias a la separación de shape y transform no hace falta que crees la superficie como lo harías mediante la interfaz de usuario, con crear la shape ya vale para extraer las coordenadas).
« Última modificación: 16 Marzo 2015, 12:16:30 por Cesar Saez »

Re:Expresión para stretch de huesos
« Respuesta #4 en: 16 Marzo 2015, 19:42:58 »
Una última pregunta sobre este tema César y ya te dejo tranquilo   :smiley6600:

Ya he conseguido hacer el método este de doritos en Maya. Al final no me ha parecido tan complejo y eso que al principio me asustó un poco, básicamente una vez tienes una maya con blendshape:
- Duplicas malla
- 2 joint (padre he hijo) en el mismo sitio
- Se pesa el deformador
- World nverse matrix (joint padre) -> bind prematrix (skin cluster)
- Locator atachado a la malla original padre de los joints

Y aquí mi problema, porque el autor del tuto se lía

A la hora de exportar el blend shape del original a la malla de doritos ¿por que no funciona? Parece que el blendshape original tiene que estar a 1 para que el de la malla duplicada funcione, pero no entiendo el por que.

Al final yo lo he solucionado mediante un driven key, igualando el valor del blendshape del original al de la malla de doritos, pero me parece un poco chapuza ( y un coñazo)

Espero haberme explicado bien que es un poco lioso


PD.

Re:Expresión para stretch de huesos
« Respuesta #5 en: 17 Marzo 2015, 12:06:22 »
Pues si que se lia, si.

Explicar estas cosas por texto es un poco complicado, para no liarte más aún he subido una captura explicando el proceso en 10 minutillos... si suelto alguna barbaridad es porque ha sido un día muuuuy largo, pero vamos, todo debería estar relativamente claro.


Si tienes alguna duda o lo que sea no dudes en preguntar :)
Un saludo!

Re:Expresión para stretch de huesos
« Respuesta #6 en: 17 Marzo 2015, 20:35:44 »
Joder Cesár, no hacía falta que te lo currases tanto! Me ha quedado claro todo, pero tengo un problema cuando lo aplica en un modelo 'real'

Cuando hago la prueba con un objeto desde cero todo bien, pero cuando lo hago sobre un modelo ya riggeado, al hacer el paso de los nodos la malla tiene como una doble transformación. Supongo que es porque la original tiene skin, pero no se como solucionarlo ¿como se hace en este caso? ¿O es que he hecho algo mal?
« Última modificación: 17 Marzo 2015, 22:56:15 por Chelos »

Re:Expresión para stretch de huesos
« Respuesta #7 en: 17 Marzo 2015, 23:28:41 »
Hoy por la noche me lo mirare en casa, pero deberia funcionar independiente de que tengas en el primer layer de deformacion.

Re:Expresión para stretch de huesos
« Respuesta #8 en: 18 Marzo 2015, 01:41:48 »
Igual es que estoy yo muy espeso ya a estas horas, que llevo desde las 8 con Maya  :crazy2:, pero lo he intentado un montón de veces con una malla con skin y no me sale. Aunque no descarto que el fallo sea mio

Re:Expresión para stretch de huesos
« Respuesta #9 en: 18 Marzo 2015, 13:25:47 »
Lo dicho, funciona perfectamente :)


Re:Expresión para stretch de huesos
« Respuesta #10 en: 18 Marzo 2015, 14:11:55 »
Justo te iba a escribir ahora César. He estado probando más esta mañana y me he dado cuento que me ocurre siempre, no sólo cuando tiene skin la malla original, exceptuando si lo hago con un plano (como tu en el ejemplo).

No se si es que hago algo mal y con un plano no se perciben los problemas, o es cosa de que al no tener el dorito en el centro no funciona (aunque ya veo que a ti te funciona perfectamente) o es que directamente estoy ciego y no veo lo que estoy haciendo mal

He grabado un vídeo para que veas como lo hago, igual es algo muy evidente y no lo veo, pero con el plano lo hago igual y sin problemas.



PD. lo curioso es que el dorito funciona perfectamente a pesar de la doble transformación
PD2. muy imbécil yo que estaba señalándote con el ratón para que vieras bien lo que hacía y me he dado cuenta ahora que no estaba grabando el puntero jaja, perdona si cuesta un poco seguir lo que hago, puedo grabarlo otra vez

Re:Expresión para stretch de huesos
« Respuesta #11 en: 18 Marzo 2015, 16:12:18 »
El video es privado y no puedo verlo... pero según comentas puede ser cosa del Joint Orient (es una especie de offset exclusivo de los joints, prueba dejarlo a 0 en todos los ejes), si la referencia es un locator no existe ese offset y aunque joint/locator aparentemente estén alineados no lo están para efectos del skin cluster.

Si no es eso examina la escena que he adjuntado en el mensaje anterior, entre el video y la escena deberías tener todo lo necesario para entender como implementar doritos en Maya :)

Re:Expresión para stretch de huesos
« Respuesta #12 en: 18 Marzo 2015, 16:48:46 »
Ya lo he puesto público, perdona. Voy a ver si le puedo echarle un vistazo esta tarde, porque me voy de viaje y en el portátil sólo puedo con la versión 2014, así que sino lo veo hoy de poco me servirá tu escena, pero muchas gracias igualmente jeje


Por lo pronto veo que sólo hay un joint por dejajo del locator y que el locator solo conecta la matrix inversa al bind pre matrix [1] de skincluter y no también al 0.
Eso es porque el locator solo mueve al dorito y no dorito + weightholder ¿no?

PD. voy a mirar lo de la orientacion de los joints
« Última modificación: 18 Marzo 2015, 17:34:31 por Chelos »

Re:Expresión para stretch de huesos
« Respuesta #13 en: 18 Marzo 2015, 17:25:53 »
Vale, ya está! Es lo que decías del valor de joint orient. Simplemente con meter el dorito y holder en la jerarquía del locator antes de orientar este (contraint point to poly) es suficiente.
Y con el plano no me pasaba porque el locator no variaba su orientación, claro.

Muchas gracias por todo el curro César te debo una caña si te pasas por Madrid/Málaga  :occasion14:



Una duda más (ya la última  :2funny:), aunque no tiene que ver directamente con el tema. Si hago point to poly de un locator a un vertice o poly de un modelo y me lo lleva siempre al centro de la escena (el locator) ¿Que puede estar pasando? Ambos tienen historial borrado

Re:Expresión para stretch de huesos
« Respuesta #14 en: 19 Marzo 2015, 00:32:20 »
Te refieres al constraint?
Si es asi es porque depende de las UVs y no de la topologia (por defecto los valores u,v son 0, 0 respectivamente). De todas formas puedes cambiar la forma de 'attachar' el null de referencia a la superficie, no es necesario usar ese constraint en particular.

La gente suele crear una superficie nurbs desde los edges mas cercanos al componente para attachar la referencia (lo que se conoce por rivet), pero honestamente tienes muchisima mas libertad configurando las uvs de la malla segun mas te convenga (que no tienen porque ser las de render! por ejemplo puedes usar 1 udim por dorito de forma que el cns sea facil de recrear).

Re:Expresión para stretch de huesos
« Respuesta #15 en: 03 Mayo 2015, 00:07:09 »
Te he enviado un privado Cesar, que no encontraba este hilo (pensaba que tenía otro nombre).
Si puedes ayudarme hazlo por donde más cómodo te sea