XSIforum.com
Foros 3D => Autodesk Softimage => Rigging y Scripting => Mensaje iniciado por: davarb en 17 Enero 2009, 14:47:58
-
Mi duda es si puedo crear botones en los custom parameter sets, por ejemplo para hacer key en determinados manejadores o huesos.
Se que existe la posibilidad de crear un toolbar y hacerlo ahi, pero no se como hacer ese toolbar local a la escena, que solo se cargue con la escena y no con la aplicacion; tambien he visto que te puedes crear un plugin y demas historias y no es muy complicado pero obligas a tener que instalar el plugin y tpco mola.
Ah y no valen los botones que puedes crear en la vista sinoptica, yo los quiero en los parameter sets.
Un saludo y gracias.
-
te puedes crear un custom toolbar, haces lo que quieras y pasas lo que esta escrito en el script editor al toolbar.Luego guardas el toolbar y lo abres cuando quieras.
-
Eso ya lo he hecho y no me sirve porq es un toolbar global, da igual la escena que cargues que siempre te cargara el toolbar, yo quiero hacer que ese toolbar aparezca solo cuando abra una escena concreta. Aunque de preferir preferiria que se pudiera meter botones en los custom parameter sets.
Un saludo.
-
Sí que se peude, pero tienes que crear el custom parameter set via scripting (o usando el asistente)
-
Y como puedo crear el custom parameter set via scripting? Dame algunas pautas porfavor. Se programar lo que pasa que tpco kiero perder mucho tiempo ahora con estas cosas averiguando como se hace, por lo menos hasta que acabe el curso jeje.
Osea que via scrpting me puedo crear un parameter set como si fuera un formulario en cualquier otro lenguaje de programacion no? Y ese custom parameter set seria local a la escena o global a toda la aplicacion.
Un saludo.
-
En la ayuda (SDK) tienes todo lo que tiene relación con la forma de crear interfaces, buscando por addButton deberías llegar. Te dejo un ejemplo muy sencillo para que te hagas una idea.
//creamos un null en el scene_root
var oNull = ActiveSceneRoot.addPrimitive("Null");
//añadimos un custom parameter al null
var myCP = oNull.addProperty("CustomProperty", false, "Test");
//Iniciamos el property page layout para poder definir la apariencia
var myPPG = myCP.PPGLayout
//añadimos un botón
myPPG.addButton("scriptName", "Label");
//lenguaje de scripting para el botón
myPPG.Language = "JScript";
//establecemos (como string) la función que llamará el botón "scriptName" al ser presionado
myPPG.Logic = scriptName_OnClicked.toString();
//definimosfunción para el botón label
function scriptName_OnClicked()
{
XSIUIToolkit.Msgbox( "Presionaste el botón Label"); //abre una ventana con un mensaje
}
//inspeccionamos el custom parameter
InspectObj(myCP);
-
Gracias cesar eres el **** amo :P. Ahora me pondre a salsear a ver que me sale.
Un saludo.
-
Cesar, he estado salseando un poco y no se como hacer que el custom parameter set se guarde directamente en la escena. He leido que creando asi el custom parameter set solo dura mientras xsi este abierto, pero si reinicias se va al carajo.
¿Existe alguna manera de hacer que se guarde con la escena? Esque lo mas cercano que he visto que se puede hacer es un self-installed custom parameter, pero al final hay que instalarlo como si fuera un plugin y me parece un poco "cochino" tener que hacer eso. No entiendo como puede ser que si creas un custom parameter desde animate>parameter>custom parameter set se guarde en la escena, pero luego si lo creas tu con un script no te deja, ¿no es un poco absurdo?
Un saludo y gracias.
-
Hola, un custom parameter set es una propiedad de un objeto, en el caso del ejemplo yo se lo creo a un null y mientras exista ese null en la escena puedes acceder a él. De la misma forma puedes aplicar el custom property directamente al scene_root y no dependerías de un objeto, el procedimiento es básicamente el mismo salvo que en lugar de añadir la propiedad (addProperty) a un null (o cualquier objeto) se lo añades directamente al scene_root.
Si quisieras hacer lo mismo que en el ejemplo anterior pero aplicando al scene root tendrías que cambiar el código por algo asi (si te fijas sólo cambian las primeras líneas):
//accedemos al scene_root
var oRoot = Application.ActiveProject.ActiveScene.Root;
//añadimos un custom parameter al scene_root
var myCP = oRoot.addProperty("CustomProperty", false, "Test");
//Iniciamos el property page layout para poder definir la apariencia
var myPPG = myCP.PPGLayout
//añadimos un botón
myPPG.addButton("scriptName", "Label");
//lenguaje de scripting para el botón
myPPG.Language = "JScript";
//establecemos (como string) la función que llamará el botón "scriptName" al ser presionado
myPPG.Logic = scriptName_OnClicked.toString();
//definimosfunción para el botón label
function scriptName_OnClicked()
{
XSIUIToolkit.Msgbox( "Presionaste el botón Label"); //abre una ventana con un mensaje
}
//inspeccionamos el custom parameter
InspectObj(myCP);
He leido que creando asi el custom parameter set solo dura mientras xsi este abierto, pero si reinicias se va al carajo.
No entiendo como puede ser que si creas un custom parameter desde animate>parameter>custom parameter set se guarde en la escena, pero luego si lo creas tu con un script no te deja, ¿no es un poco absurdo?
Es absurdo y falso, quizás se refería a otra cosa... donde lo leíste? te recomiento como práctica general experimentes más por ti mismo, por ejemplo si hubieras guardado la escena del ejemplo anterior, reinicias y la abres nuevamente verías que sigue existiendo el custom parameter en el objeto null1 y puedes acceder al botón sin ningún problema. Un poco de prueba y error nunca viene mal ante estas dudas O0
Salu2
-
Buenas César,
me colé en una cosa, el custom parameter set si que se mantiene al cerrar y abrir de nuevo xsi, lo que no se mantiene es el boton, desaparece. Al ver que no se mantenia el boton de sesion a sesion, mire detenidamente la ayuda y pone que eso es normal, que el layout de un cp no se mantiene entre sesiones, para ello dice que hay que hacer o un spdl que contenga el cp o un self-intalled cp (no recomiendan hacerlo por spdl).
Acabo de probar de nuevo, y hago lo siguiente:
-Copio y pego en el script editor el codigo que me escribiste y lo ejecuto, creandose el cp en el scene root.
-Accedo al cp y todo esta correcto.
-Guardo la escena y abro otra; vuelvo a abrir la escena y el cp en este caso SI se mantiene (es decir, porq xsi no lo he cerrado), pero si cierro xsi, lo abro y abro la escena, el cp se mantiene pero no el boton.
He probado lo mismo en la 6.5 y la 7 y lo hace igual.
Un saludo.
-
The PPGLayout is not persisted with the object or with the scene. However, it is cached during the XSI session. All objects of the same Type share the same PPGLayout.
A common confusion occurs when a scene file is moved to another machine and the Custom Properties lose their layouts. This is because the original self-installed plug-in, (or SPDL file) needs to be installed on each machine (or via a workgroup). Some custom properties, especially in the OM reference examples, are created "on-the-fly" with no self-installed plugin. These are great for temporary custom properties but because the layout it not persisted, they should only be used for temporary property pages that are deleted after creation.
To have persistent layout you MUST use a self-installed plug-in, with the _DefineLayout callback implemented.
Tienes razón, las veces que usé PPG fué para crear "formularios temporales" donde recoger información del usuario y ejecutar "algo" pero nunca de forma persistente para un modelo/escena. Pareciera que para todo lo que tiene que ver con el PPG la única forma es con el spdl, eso o buscar otra alternativa para tus controles (como un synoptic).
¿Que necesitas hacer con el botón? quizás hay alguna forma de llegar a ese tipo de interface sin tanta vuelta.
-
Buenas,
era por saber si habia alguna manera de hacer un cp personalizado con codigo y que se guardara en la escena como cuando lo haces "graficamente", para hacerme botones personalizados que me ayudaran a animar: ahora estoy animando en clase la tipica bolita con patas y con brazos y queria hacer un par de botones, uno para hacer key en los manejadores en traslacion y rotacion, y otro para hacer key unicamente en rotacion en los huesos.
La manera mas directa y sencilla que vi de hacerlo fue haciendo un custom toolbar con el par de botones, pero no me gusta esa manera, porq es global, cualkier escena que abras tendras acceso a esos botones y luego mas tarde si borras ese custom toolbar, no tienes opcion de acceder a esos botones desde la escena de la bolita con patas, es decir, que me parece muy cochina esa manera, es mas organizado si se pudiera guardar directamente en la escena y te olvidas, por eso te decia que me parecia absurdo que si lo creas graficamente el cp te lo guarda en la escena, si lo creas tu mediante codigo no :o.
Indagando ayer a altas horas de la madrugada por la red encontre esta pagina en la que explican una manera de hacer lo que digo, aunq finalmente sigue dependiendo de un plugin, a ver que te parece>> solucion parcial (http://www.xsi-blog.com/archives/172).
Espero no marearte César, esque soy muy quisquilloso con estas cosas. Espero que me entiendas, a mi m parece logico que se pudiera hacer de la manera que te digo.
Un saludo y gracias por aguantarme :P.
-
Según entiendo el problema no es que no guarde algo creado con script y si mediante la interface, lo que no guarda es la interface personalizada para el PPG y como los botones son elementos de interface que desatan una acción pues no son persistentes.
Yo creo que para lo que quieres lo normal es hacer un synoptic view para el rig, es la función creada específicamente para ello. Básicamente se trata de una imagen donde marcas hotspot y luego añades mediante scripting que quieres que suceda cuando haces click sobre esa zona. Este synoptic queda guardado en el proyeto (es una página web) y se carga como propiedad en los objetos que tu desees. Me parece que para lo que necesitas es lo más indicado y cómodo de hacer.
Salu2 O0
-
Ya, lo q pasa que para este personaje no hicimos vista sinoptica, era por hacer algo mas sencillo. Pero bueno, en principio ya me he hecho un custom toolbar y tirare de momento con ello que no me kiero liar mas de lo debido jeje.
Gracias.
-
Holas David (Soy Santi el que estuvo en Sintesys el año pasado) y Cesar:
Cuanto tiempo peña. Pues mirando cosas sobre el maravilloso mundo de los Rigging me ha venido a la cabeza la necesidad de profundizar en el tema de los Custom Parameter. Y mirando y mirando me alegré cuando os he leído en este post.
Antes que nada chicos perdonar si meto la pata en esto del Scripting, David ya sabe que llevo menos de un año que he conseigo hacer un Script con la ayuda del Script Editor (que si no ni eso) y del Expresion Editor.
La idea que se me vino a la cabeza es si se puede, por medio de un script, en el Synoptic mandar abrir un Custom Toolbar. Si eso fuera posible se podrían meter de manera indirecta en los Synoptics deslizadores.
El problema está en que cuando abro o cierro un Toolbar, no me registra nada en el Script Editor.
Y ya que estoy aquí os voy a hacer una pregunta, seguro que es una tontería, pero es que no doy con ello. Cuando creo el Custom Parameter Set y meto un "Boolean" me aparece la casilla toda chula para activar y desactivar, al que le puedo linkar cualquier transformación de cualquier objeto por medio del Link Parameter. Hasta ahí bien, pero la duda es cómo se puede meter un script a ese tipo de parámetros (a ser posible uno de los de abrir Custom Toolbars).
Pues nada fieras, que ha sido un placer el poderos escribir y a ver si me sorprendeis con eso.
Un saludo
-
Buenas Santi :D,
La idea que se me vino a la cabeza es si se puede, por medio de un script, en el Synoptic mandar abrir un Custom Toolbar. Si eso fuera posible se podrían meter de manera indirecta en los Synoptics deslizadores.
eso se hace editando la funcion del boton de la sinoptica que quieres que al clicar en el salga el toolbar, aunque en vez de un custom toolbar supongo que sera mejor un custom parameter set en el que tambien puedes meter deslizadores. La funcion para abrirlo es (que me corrija césar si me equivoco)>> inspect (nombreDelCustomParameterSet).
Y ya que estoy aquí os voy a hacer una pregunta, seguro que es una tontería, pero es que no doy con ello. Cuando creo el Custom Parameter Set y meto un "Boolean" me aparece la casilla toda chula para activar y desactivar, al que le puedo linkar cualquier transformación de cualquier objeto por medio del Link Parameter. Hasta ahí bien, pero la duda es cómo se puede meter un script a ese tipo de parámetros (a ser posible uno de los de abrir Custom Toolbars).
respecto a esto, en principio los checkbox (booleanos) no se emplean para que al activarlos o desactivarlos se abran o cierren ventanas, para eso estan los botones, con lo que volvemos al principio del post, ya que en los custom parameter sets no se pueden meter botones y bla bla bla... no voy a repetir todo el post.
Un saludo.