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 :)