XSIforum.com

Synoptic view - Reconociendo el botón pulsado en el ratón

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

sirdavid32

  • **
  • 301
  • SirDavid Defends!
Hola Amigos, estuve viendo esto:

Y luego busqué en el SDK  y encontré esto:
in_mousebutton

Determina una variable que si es 0 es botón izq pulsado, 1 para el medio y 2 para el derecho.
Alguien ha aplicado en la sinoptica este tipo de rutina (secuencia / programación?)

El creador de ese rig, dice que haciendo click derecho el pose se activaba para el lado derecho, y el boton raton centro, activaba las dos.

Es realmente interesante, pero cómo lo armo para ponerlo a funcionar? No sé programar en este comando.

Re: Synoptic view - Reconociendo el botón pulsado en el ratón
« Respuesta #1 en: 27 Enero 2010, 07:27:29 »
Es un parámetro de las funciones de tu synoptic, no tiene mucha ciencia. Simplemente pon una condición sobre el valor de esa variable (if in_mousebutton ==1...) para definir los diferentes comportamientos.
« Última modificación: 27 Enero 2010, 07:40:51 por César Sáez »

sirdavid32

  • **
  • 301
  • SirDavid Defends!
Re: Synoptic view - Reconociendo el botón pulsado en el ratón
« Respuesta #2 en: 27 Enero 2010, 18:12:00 »
Entonces si tengo un modelo que se llama MONO y ya tengo en el mixer las poses de PUÑO_Der y PUÑO_Izq para sus manos al llamarlos desde la sinoptica los pondría como:

 if(in_mousebutton == 0)
   {
      ApplyAction(Monol+".Mixer."+PUÑO_Izq, null, null, null, null, null);
   }

Esto solo crearía la condicional, y luego cómo la ejecuto? y para que son todos esos null,null,null,null,null al final del código.

ojo: estoy tomando de referencia un codigo que vi en la red.

Re: Synoptic view - Reconociendo el botón pulsado en el ratón
« Respuesta #3 en: 28 Enero 2010, 12:17:02 »
Entonces si tengo un modelo que se llama MONO y ya tengo en el mixer las poses de PUÑO_Der y PUÑO_Izq para sus manos al llamarlos desde la sinoptica los pondría como:

 if(in_mousebutton == 0)
   {
      ApplyAction(Monol+".Mixer."+PUÑO_Izq, null, null, null, null, null);
   }
Esa sería una forma pero a mi entender es demasiado cerrada/hardcodeada... si el dia de mañana cambias algún nombre te tocará retocar todas las líneas del synoptic.

Esto solo crearía la condicional, y luego cómo la ejecuto?
Poniendola en la función de un hotspot del synoptic?!

...y para que son todos esos null,null,null,null,null al final del código.
Help/SDK Guides/Buscar/ApplyAction ;)

alanf

  • *****
  • 6029
  • Pipeline Developer @ Felix & Paul Studios
Re: Synoptic view - Reconociendo el botón pulsado en el ratón
« Respuesta #4 en: 28 Enero 2010, 15:30:15 »
Que yo sepa no puedes nombrar cosas en XSI con caracteres no estandar como la Ñ.

sirdavid32

  • **
  • 301
  • SirDavid Defends!
Re: Synoptic view - Reconociendo el botón pulsado en el ratón
« Respuesta #5 en: 10 Febrero 2010, 06:19:32 »
Hasta aqui he logrado disparar ya eventos:

sub head (in_obj, in_mousebutton, in_keymodifier)
if in_mousebutton = 1 or in_mousebutton = 2 then
SelectObj "happy_smile.sphere2", , True
else
SelectObj "happy_smile.sphere1", , True
end if
end sub

**** pero para invocar acciones del modelo creado, cómo puedo hacer para utilizar (de pronto una variable) para nombrar el modelo.objeto de modo que no tenga que cambiar mil parametros en el asynoptica?

He añadido este codigo al anterior y regresa un error.

sub Posing(in_obj,in_mousebutton,in_keymodifier)
if in_mousebutton = 1 then SelectObj "happy_smile.Mixer.Default_pose_1st";
ApplyAction "happy_smile.Mixer.Default_pose_1st"
else

if in_mousebutton = 0 then SelectObj "happy_smile.Mixer.Rie_atras"
ApplyAction "happy_smile.Mixer.Rie_atras"
else

if in_mousebutton = 2 then DeselectAll
end if

end sub

Alguna idea?


Re: Synoptic view - Reconociendo el botón pulsado en el ratón
« Respuesta #6 en: 10 Febrero 2010, 10:57:13 »
Una opción sería tener una función que te de la información de forma centralizada, algo como esto...

Código: (python) [Seleccionar]
def Get Data():
    d = {"obj1" : "happy_smile.sphere1",
         "obj2" : "happy_smile.sphere2"}
    return d

def head (in_obj, in_mousebutton, in_keymodifier):
    data = GetData()
    if in_mousebutton = 1 or in_mousebutton = 2 :
        Application.SelectObj( data.get("obj1") )
    else:
        Application.SelectObj( data.get("obj2") )

Otra podría ser meter el synoptic en un view y consultar parametros no expuestos del property con tus variables.

sirdavid32

  • **
  • 301
  • SirDavid Defends!
Re: Synoptic view - Reconociendo el botón pulsado en el ratón
« Respuesta #7 en: 10 Febrero 2010, 17:04:26 »
Gracias César. He estado revisando el SDK pero no me aclaraba.como lo expones ahora si voy comprendiendo mejor.