XSIforum.com

Script sencillo al que quiero que el usuario le pase los datos de entrada

0 Usuarios y 2 Visitantes están viendo este tema.

Hola,

En relación a la pregunta que os hice el otro día sobre un render a alta resolución y la posibilidad de renderizar en slices, he seguido investigando y creo que he llegado a buen puerto. Pero antes de mojarme, me gustaría probarlo en condiciones y presentaroslo como un script, pero de los buenos.

Para ello, necesitaría que el usuario pulsase sobre un botón y apareciese una pantalla donde introdujese los slices horizontales y verticales en los que quiere dividir el render. Otros dos slices, indicarían el slice (fila y columna) a renderizar. Por último, el usuario pulsaría un botón y se lanzaría el render de ese slice seleccionado. Ejemplo:

       Número de columnas:  2 (Slide de 1 a 10)
       Número de filas:         3 (Slide de 1 a 10)
       Columna a renderizar:  1 (Slide de 1 a 2)
       Fila a renderizar:         2 (Slide de 1 a 3)

Al cambiar el slide del Número de columnas de p.ej. de 2 a 4, el slide de Columna a renderizar pasará de permitir como mucho 2 columnas a permitir hasta 4.

La pregunta es ¿cómo se hace esta pantalla de selección? ¿Cómo la incorporo a un menú determinado de XSI?

Sé que es una pregunta muy abierta, sin embargo y aunque no he programado en XSI, soy programador de C#, JavaScript y Java entre otros, así que no tengo problema en aprender. Simplemente guiarme un poco para empezar... algún buen tutorial que conozcáis estaría de lujo.

Gracias. :D

En la ayuda de XSI (la del SDK) sale todo muy bien documentado y con ejemplos, es de las mejores referencias que te podría recomendar. Yo no tengo ni idea de programación y lo pude seguir asi que me imagino que no tendrás mayores problemas, busca por PPGLayout y vas a encontrar todo lo referente a interfaces dentro de un PPG O0

La forma de hacerlo a groso modo es crear un custom property (un PPG vacío) en alguna parte (en este caso el scene_root sería un buen lugar), luego agregarle los parámetros que necesites y luego redefinir una interface personalizada (PPGLayout). Prueba bajarte algún script con una interface simple para estudiar como está estructurado, a mi en su momento me sirvió mucho :)

Suerte!

Muchas gracias! :D Le echo un vistazo a lo que me comentas.

Recuerdas algún ejemplo concreto de script que pudiese estudiar?

Vale Cesar, no hace falta que me pases el ejemplo... acabo de descubrir los PPGdemos que vienen con el SDK. ;) Gracias de nuevo

dracon

  • ***
  • 1582
  • XSI: the very best.
Joder!!!!! si haces el scritp no te olvides de nosotros los mortales, pq al menos a mi me vendría de perlas.

 ;D

:D:D:D Por supuesto que no. Yo sin vosotros sabría la mitad de lo que sé de XSI. Si todo va bien espero tenerlo preparado para mañana.

Pues poco a poco lo voy sacando, pero me está costando un poco ya que la documentación de XSI no está tan bien como decía César. Si alguna vez habéis usado la MSDN de Microsoft o la ayuda contectual del Visual Studio sabréis a lo que me refiero.

Si te atascas con algo pregunta por acá y te trato de ayudar en lo que pueda :)

En que lenguaje estás scripteando? sólo por curiosidad.

Pues me he liado con el JScript...

Por ahora he montado el PPG como una Custom Property dentro de la raíz de la escena. Esta Custom Property (y su layout) la creo al pinchar sobre un menú que también me he creado dentro del menú de Render

Todo ello lo he creado como Plugin que al copiarse al directorio Plugin de XSI se crea sólito. Hasta aquí no ha habido demasiados problemas, salvo hasta ahora que me he atascado con una chorrada.

El problema es que cada vez que pulso en el menú que he creado en el Menú de Render, me vuelve a crear otra Custom Property con el mismo nombre, pero acabado en 1, 2, 3, etc. Esto no debería ser así, ya que no deja de ser una ventana donde seleccionamos los valores que queremos para luego tirar el render.



El código es:

Código: [Seleccionar]
var oCustomProperty = ActiveSceneRoot.AddProperty("CustomProperty", false, "RenderCrop" ) ;
Y para evitar lo que comento, he probado de todo sin éxito, como por ejemplo:

Código: [Seleccionar]
var oCustomProperty = ActiveSceneRoot.FindChild("RenderCrop");
if (oCustomProperty == null)
    oCustomProperty = ActiveSceneRoot.AddProperty("CustomProperty", false, "RenderCrop" ) ;

Pero esto no funciona. Tampoco funciona:

Código: [Seleccionar]
var oCustomPropertyOld = ActiveSceneRoot.FindChild("RenderCrop");
if (oCustomPropertyOld != null)
    DeleteObj("RenderCrop");
var oCustomProperty = ActiveSceneRoot.AddProperty("CustomProperty", false, "RenderCrop" ) ;

Ando un poco perdido ya que en los ejemplos que vienen con XSI de PPG (PPGDemos) los muy listos crean una escena nueva, antes de llamar al AddProperty.

Gracias de antemano... ;)
« Última modificación: 07 Agosto 2008, 00:19:09 por surfaze »

Unaided

  • ***
  • 3293
Igual estoy diciendo una tontería, pero si en el condicional pruebas a que busque por el nombre del la "property" ?
Primero de todo evaluas si existe una propiedad de nombre "RenderCrop". Si se cumple, sales del condicional. Si no existe, entonces creas la propiead con ese nombre.

Código: [Seleccionar]
var oCustomProperty = ActiveSceneRoot.FindChild("RenderCrop");
if("RenderCrop")
     null;
else
 oCustomProperty = ActiveSceneRoot.AddProperty("CustomProperty", false, "Renderrop");