XSIforum.com

Duda sobre script rig facial con ''doritos''

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

Duda sobre script rig facial con ''doritos''
« en: 22 Julio 2010, 21:58:51 »
Creo que todos conocéis este sistema
http://www.softimageblog.com/archives/209


Código: [Seleccionar]
from win32com.client import constants
xsi    = Application
xsiPrint = xsi.LogMessage

# You add the dorito as a deformer, then select the parent and then the dorito null, then run:
def setupStaticState():
    defList = []
    clsList = []
    for i in xrange(0,len(xsi.Selection),2):
        clsList.append(xsi.Selection(i))
        defList.append(xsi.Selection(i+1))
    
    for a,b in zip(defList,clsList):
        defKineState = a.Properties("Static_KineState")
        clsKine = b.Properties("Kinematics")
        
        defKineState.Parameters("orix").AddExpression(clsKine.FullName + ".global.rotx")
        defKineState.Parameters("oriy").AddExpression(clsKine.FullName + ".global.roty")
        defKineState.Parameters("oriz").AddExpression(clsKine.FullName + ".global.rotz")
        defKineState.Parameters("posx").AddExpression(clsKine.FullName + ".global.posx")
        defKineState.Parameters("posy").AddExpression(clsKine.FullName + ".global.posy")
        defKineState.Parameters("posz").AddExpression(clsKine.FullName + ".global.posz")
        # Steven forgot to do scaling. (It's important!)
        defKineState.Parameters("sclx").AddExpression(clsKine.FullName + ".global.sclx")
        defKineState.Parameters("scly").AddExpression(clsKine.FullName + ".global.scly")
        defKineState.Parameters("sclz").AddExpression(clsKine.FullName + ".global.sclz")

setupStaticState()


El tema es que no me gusta utilizar este tipo de cosas si no son mías, y menos aún sin entender como funcionan al 100%
El primero leyendo el propio script se entiende
- Null
- Object to cluster
- Null hijo


¿Pero que es lo que hace el segundo? Osea contrarresta la doble transformación, pero ¿como hacerlo sin este script?

Pd. por cierto que los scripts son las correcciones que puso alanf en el hilo de gerardo
http://www.xsiforum.com/forum/index.php/topic,7744.0.html

Re: Duda sobre script rig facial con ''doritos''
« Respuesta #1 en: 22 Julio 2010, 22:05:30 »
El segundo mete una expresión en el static kinestate equivalente a la transformación global del padre del dorito, esto se hace para que la pose neutra del skin (la pose necesaria para que la malla no se deforme) se ajuste dinámicamente a la posición dada por los shapekeys.

Re: Duda sobre script rig facial con ''doritos''
« Respuesta #2 en: 23 Julio 2010, 23:54:47 »
Vale, de puta madre!
Que grande eres coño :D

Sólo una cosa, el Static kinestate sólo aparece en la versión 2011, ¿como se haría es las anteriores?

PD. te debo una (otra más xD)

alanf

  • *****
  • 6026
  • Pipeline Developer @ Felix & Paul Studios
Re: Duda sobre script rig facial con ''doritos''
« Respuesta #3 en: 24 Julio 2010, 03:21:26 »
Que?? El Static KineState existe en todas las versiones que yo recuerde.

Claro que no existe si el objeto no es un deformer para un envelope primero.

Re: Duda sobre script rig facial con ''doritos''
« Respuesta #4 en: 24 Julio 2010, 09:51:02 »
Que?? El Static KineState existe en todas las versiones que yo recuerde.

Claro que no existe si el objeto no es un deformer para un envelope primero.


Es que en get - property no está, y en el explorer tampoco me aparece. ¿Desde donde lo abro? ???

alanf

  • *****
  • 6026
  • Pipeline Developer @ Felix & Paul Studios
Re: Duda sobre script rig facial con ''doritos''
« Respuesta #5 en: 24 Julio 2010, 19:18:59 »
Claro que no existe si el objeto no es un deformer para un envelope primero.
No lees? xD

Haces el Envelope primero y entonces aparecen.

Re: Duda sobre script rig facial con ''doritos''
« Respuesta #6 en: 24 Julio 2010, 22:04:11 »
Ya lo había probado cabrón pero no lo veía xDDD
Es que sólo aparece en en el propio objeto, en get - property no

Gracia de nuevo, debote una (otra también a ti) :D

sirdavid32

  • **
  • 301
  • SirDavid Defends!
Re: Duda sobre script rig facial con ''doritos''
« Respuesta #7 en: 24 Agosto 2010, 16:55:57 »
Oye, chelos y podrías postear un video de eso x fa? El sitio web de xsi blog esta caido desde ayer.

Re: Duda sobre script rig facial con ''doritos''
« Respuesta #8 en: 24 Agosto 2010, 18:07:26 »
¿Que es lo que quieres ver exactemente? ¿Te lo explico o subo una escena?

sirdavid32

  • **
  • 301
  • SirDavid Defends!
Re: Duda sobre script rig facial con ''doritos''
« Respuesta #9 en: 25 Agosto 2010, 03:53:35 »
Subir una escena con la explicación si no fuese mucha molestia. La verdad es que me interesaría subir
un video para el resto de la comunidad. Sé que no es tan complicado como parece. Pero no puedo leer el xsi-blog, está caído. Por ende si hay algo que tengas, asi sea una esfera con 2 clusters (1no a cada lado de la boca) con una shape de sonreir o algo similar..yo creo que de ahi ya puedo encaminar el resto.

Por ahora solo he visto que el script que está por aqui solo apunta a 1 cluster a 1 hueso. Por ello me estoy liando si es que estoy tiene que ser un proceso, digamos para 9 huesos alrrededor de la boca...

Se podría hacerlo asi?

Re: Duda sobre script rig facial con ''doritos''
« Respuesta #10 en: 25 Agosto 2010, 19:31:34 »


No se ve, espero que en rato se vea sino tendré que resubirlo
Y me acabo de dar cuenta me he dejado la .scn en el trabajo, que desastre, mañana la subo

No le podido meter voz y ponerlo los pasos era demasiado, si no entiendes algún paso preguntalo

sirdavid32

  • **
  • 301
  • SirDavid Defends!
Re: Duda sobre script rig facial con ''doritos''
« Respuesta #11 en: 26 Agosto 2010, 06:42:21 »
Hola Chelos, esto es fantastico. Repetí el video como 70 mil veces para leerlo y aprenderlo. (la costumbre de trabajar en monitor pequeño agudiza el ojo). En fin...al final cuando el deformador está asignado en mi cabeza_mesh_clone cuando roto el hueso el (null) deformer , deforma horriblemente la geomtería. Esto es lo mas sensacional desde que soy animador..(rig) pero cómo arreglo ese problema que tiene (no quiero usar el script 2) cómo lo resuelvo a mano? en el Global POSE tab - position tengo scripteado el cluster constraint point...por ende asumo que hasta ahi todo bien...

El documento Dorrito menciona que hay que restar los weights de una cara con otra, pero cómo.

Esa parte (la final) no la entiendo. Tengo un error de deformacion al rotar mi cabeza.

Saludos. y Gracias millón por este aporte.

Re: Duda sobre script rig facial con ''doritos''
« Respuesta #12 en: 26 Agosto 2010, 15:08:54 »
No se si he entendido bien donde te quedas, pero haré un repaso a la parte última del deformador

- Null con object cluster a un punto de la malla
- ''Null deformer'' hijo del null anterior
- Pesas el ''Null deformer'' (en el vídeo asigno un deformar cualquier al que le doy todo el peso, peso el deformador que quiero y después quito el objeto anterior del pesado)

Y ahora viene el segundo script, en vez de utilizar este
- Abrimos 'Global Transform' del Null con el object cluster
- Abrimos 'Static KineState' del ''Null deformer''
- Igualamos los valores (del padre al hijo)


Te dejo la escena  O0
http://depositfiles.com/files/q85zbrccl
« Última modificación: 26 Agosto 2010, 19:22:38 por Chelos »

sirdavid32

  • **
  • 301
  • SirDavid Defends!
Re: Duda sobre script rig facial con ''doritos''
« Respuesta #13 en: 27 Agosto 2010, 04:54:01 »
Hola Chelos, muchas gracias, me faltaba lo de igualar padre a hijo. En Xsi las cosas son tan simples como drag and drop divots. Me parece pecado disfrutar de estas cosas cuando comparo softwares como max, maya o blender. :) Ahora tal y como lo mencioné, realizaré otra versión de este tuto acreditado tu video original.


Re: Duda sobre script rig facial con ''doritos''
« Respuesta #14 en: 27 Agosto 2010, 10:36:22 »
Perfecto David O0
« Última modificación: 27 Agosto 2010, 11:15:20 por Chelos »

Re: Duda sobre script rig facial con ''doritos''
« Respuesta #15 en: 29 Agosto 2010, 22:40:15 »
en el primer script se lee:

dorrito.kinematics.local.transform = XSIMath.CreateTransform()

no entiendo que hace el metodo CreateTransform... la documentación que trae softi realmente no me aclara mucho.

Gracias




Re: Duda sobre script rig facial con ''doritos''
« Respuesta #16 en: 29 Agosto 2010, 22:48:23 »
Citar
CreateTransform (XSIMath)

Description
Returns a SITransformation object

Citar
SITransformation
Object Hierarchy | Related C++ Class: CTransformation

Description
This object represents a transformation which is the result of the combination of a Scaling, a Rotation and a Translation, in the S.R.T order.

En definitiva crea una matriz de transformación, en el caso del script simplemente está "reseteando" las transformaciones del objeto asignándole una nueva matriz con los valores por defecto.

Re: Duda sobre script rig facial con ''doritos''
« Respuesta #17 en: 29 Agosto 2010, 22:50:02 »
lo que no entiendo es porque le crea una matriz en las transformaciones locales al dorito... es que acaso ya no lo tenia?

Re: Duda sobre script rig facial con ''doritos''
« Respuesta #18 en: 29 Agosto 2010, 22:51:41 »
Para resetear las transformaciones locales :)

Re: Duda sobre script rig facial con ''doritos''
« Respuesta #19 en: 30 Agosto 2010, 00:11:48 »
vale... gracias

es que no deduje que se podia sustituir unos valores de unas propiedades al intentar crearles esas propiedades de nuevo.

y si lo hubiese pensado me hubiese imaginado que daria error, del tipo "ya tiene una matriz local" o algo asi.

en fin... gracias por tu ayuda.

Re: Duda sobre script rig facial con ''doritos''
« Respuesta #20 en: 01 Septiembre 2010, 23:50:25 »
El segundo mete una expresión en el static kinestate equivalente a la transformación global del padre del dorito, esto se hace para que la pose neutra del skin (la pose necesaria para que la malla no se deforme) se ajuste dinámicamente a la posición dada por los shapekeys.

¿y como hago si tengo mas de un dorito?

estoy haciendo todo el proceso de scripting manualmente (o sea, recreando los pasos de los script a mano) para entender mejor cual es la base teorica para resolver este problema.

Re: Duda sobre script rig facial con ''doritos''
« Respuesta #21 en: 02 Septiembre 2010, 00:24:00 »
haaa.. vale.. disculpa
el static kinestate que modifica es el del dorito.... pense que se referia a la geometria en si.
ahora entiendo por donde van los tiros!

lo que hace es decirle en todo momento al dorito (modificador) que tiene que actuar (o modificar la geometria) es a partir de la posicion global del padre en ese momento, y no la de cuando se le hizo el envelope.

Re: Duda sobre script rig facial con ''doritos''
« Respuesta #22 en: 02 Septiembre 2010, 11:05:37 »
haaa.. vale.. disculpa
el static kinestate que modifica es el del dorito.... pense que se referia a la geometria en si.
ahora entiendo por donde van los tiros!

lo que hace es decirle en todo momento al dorito (modificador) que tiene que actuar (o modificar la geometria) es a partir de la posicion global del padre en ese momento, y no la de cuando se le hizo el envelope.

Bingo!
Vas cambiando la pose neutra del envelope de forma que no halla doble transformación :)

Re:Duda sobre script rig facial con ''doritos''
« Respuesta #23 en: 17 Mayo 2012, 13:47:20 »
Hay alguna manera mejor para hacer esto?? o distinta? se que esta el facerobot, pero alguna otra?. es que los doritos fallan mas que una escopeta de caña y muchas veces se les va la pinza y dan saltitos.

alanf

  • *****
  • 6026
  • Pipeline Developer @ Felix & Paul Studios
Re:Duda sobre script rig facial con ''doritos''
« Respuesta #24 en: 12 Agosto 2012, 19:55:30 »
Hay alguna manera mejor para hacer esto?? o distinta? se que esta el facerobot, pero alguna otra?. es que los doritos fallan mas que una escopeta de caña y muchas veces se les va la pinza y dan saltitos.
Los he usado en cerca de 40 rigs sin problemas ni "saltitos". Seguro que los estas haciendo bien? ???

Re:Duda sobre script rig facial con ''doritos''
« Respuesta #25 en: 13 Diciembre 2012, 00:32:59 »
alanf acabo de ver que me contestastes a esto :( mare mia!! jeje. Lo que pasaba, si no recuerdo mal, era que los ctrl+z no me los hacia bien, me cambiaba la posicion y luego si movia el str global los doritos se cadaban clavados en el sitio. Una cosa extrañisima... mas vale tarde que nunca ;)