XSIforum.com

Snapshot a multiples sets de UV's (UVLayout)

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

Unaided

  • ***
  • 3293
Re:Snapshot a multiples sets de UV's (UVLayout)
« Respuesta #10 en: 14 Enero 2014, 17:54:56 »
Conceptualmente, estaria bien introducir un campo de texto numerico para mover uv's en unidades.
Es decir, si necesitas moverl el udim 1001 6 unidades en y, no tener que apretar el boton de mover hacia arriba 6 veces, simplemente escribir 6 en un campo de texto y al darle al boton que lo moviese 6 unidades.
Por pedir...
Ese campo ya está implementado, es el parámetro que está entre los botones en cruz -up,down,left,right- ;)

Re:Snapshot a multiples sets de UV's (UVLayout)
« Respuesta #11 en: 14 Enero 2014, 18:25:51 »
Ok, creo que ya queda en evidencia que no me acuerdo de XSI para nada..
Dicho esto, solo utilizo los editores de UV de Maya o XSI para reorganizar en UDIMs, todo el trabajo previo lo hago siempre en UV Layout o Unfold 3D.

Re:Snapshot a multiples sets de UV's (UVLayout)
« Respuesta #12 en: 14 Enero 2014, 18:26:24 »
Por cierto, la version 8 de Unfold 3D es cojonuda!

Re:Snapshot a multiples sets de UV's (UVLayout)
« Respuesta #13 en: 14 Enero 2014, 19:21:54 »
 Mejor UV Layout para hard surface?

Re:Snapshot a multiples sets de UV's (UVLayout)
« Respuesta #14 en: 14 Enero 2014, 19:32:39 »
Mejor UV Layout para hard surface?

Puede ser si.
A mi me gusta especialmente Unfold 3D para cabezas humanoides.
Otra cosa que me gusta mucho del Unfold 3D es que lo han actualizado para poder trabajar con UDIMs dentro de el, asi que resulta muy facil organizarlo todo ahi.

De todas formas, ninguno de los dos se desenvuelve demasiado bien con mallas muy pesadas.

Re:Snapshot a multiples sets de UV's (UVLayout)
« Respuesta #15 en: 14 Enero 2014, 19:57:36 »
Hey Unaided, buen ejercicio!
A ver si te puedo echar un cable con las preguntas :D

Citar
1. No funciona si la ventana del Texture Editor está en un visor. Solo en views flotantes.
Lo que pasa es que los paneles a, b, c y d (los viewports) son componentes del view manager (una de las vistas), lo suyo sería añadir un fallback buscando en el view manager en caso de que no encuentre el texture editor como vista flotante.
Código: [Seleccionar]
var views = Application.Desktop.ActiveLayout.Views;
var v = views.Find("Texture Editor"); //buscamos en las vistas flotantes
if (!v) var v = views.Find("View Manager").Views.Find("Texture Editor"); //fallback

Citar
2. Si se cierra el panel desde la X no elimina la customProperty del PPG. Usar el boton Close.
Todos los PPG tienen un callback OnClosed, simplemente renombra CLOSE_OnClicked por OnClosed y elimina el botón, debería funcionar sin problema ;)

Citar
3. La posición de los items la he resuelto de forma un poco rudimentaria. No he sabido hacerlo de modo absoluto si es posible. Esto, unido a que no quiero usar un panel Modal, no me permite establecer una ventana de dimensiones fijas.
Lo has hecho bien, en general no se deben diseñar GUIs con posiciones absolutas y prácticamente en todos los lenguajes/medios existen frameworks para describir las posiciones en relación a otros widgets de forma que la GUI se adapte a los cambios de tamaño (responsive). El PPGLayout de Softimage tiene ciertas limitaciones pero para posicionar elementos funciona.

Lo de las dimensiones es una limitación por diseño, en softimage no puedes cambiar el tamaño de un PPG porque estos se comparten entre objetos y afectarías al resto. Lo que se puede hacer es incrustar tu ppg en una vista (que si se puede redimensionar) y dado que el ppg está organizado de forma relativa todo se ajustará perfectamente.
Por ejemplo si reemplazas la llamada a inspectObj en tu código por una llamada a esta función podrías especificar un tamaño para la vista y tal.
Código: [Seleccionar]
function show(pset, size_x, size_y) {
var v = Desktop.ActiveLayout.CreateView("Property Panel", pset.Name);
v.BeginEdit();
v.Resize(size_x, size_y);
v.SetAttributeValue( "targetcontent", pset.FullName);
v.EndEdit();
}
« Última modificación: 14 Enero 2014, 20:07:56 por Cesar Saez »

Unaided

  • ***
  • 3293
Re:Snapshot a multiples sets de UV's (UVLayout)
« Respuesta #16 en: 21 Enero 2014, 22:24:51 »
Gracias César por tu ayuda.
Te comento.

1. El callback OnClosed he visto que hace uso de la propiedad PluginRegistrar.RegisterProperty y según el ejemplo de la documentación crean primero un plugin vacío para aplicar ahí el código del PPG. No sé si se puede implementar tal como lo tengo construido. He dejado el botón CLOSE.

2. ¡Funciona bien! No obstante, he intentado limpiar el código encerrando las lineas que me pasas en una función, declarando las variables en ámbito global y llamar a esa función en cada evento boton_OnClick, pero me devuelve un "Object expected" que no sé como solucionar.
La idea es esta para evitar replicar ese contenido en cada OnClick:
Código: [Seleccionar]
function SelProj ()
{
   views = Application.Desktop.ActiveLayout.Views;
   v = views.Find("Texture Editor"); //buscamos en las vistas flotantes
   if (!v) v = views.Find("View Manager").Views.Find("Texture Editor"); //fallback
   proyeccion = v.GetAttributeValue("selectedprojections");
}

function UP_OnClicked()
{
   SelProj();
   TranslateUVW ("", proyeccion, 0, incremento, 0, siRelative , siUVW);
}
3. He copiado el ejemplo de la documentación y puedo especificar tamaño y posición del Property Panel. Es redimensionable, pero entiendo que eso no se puede fijar sino es con un cuadro de tipo modal.

Re:Snapshot a multiples sets de UV's (UVLayout)
« Respuesta #17 en: 21 Enero 2014, 23:45:31 »
Hey Unaided, he copiado tu script con las modificaciones que te comentaba en gist, de forma que si presionas en revisions puedas comparar visualmente las diferencias y tal (la primera version es un copy/paste de lo tuyo) :)
https://gist.github.com/csaez/8549945

1.- Según entiendo TODOS los PPG implementan el callback, si está registrado es 'NombrePPG_OnClosed()' mientras que si no lo está es 'OnClosed', en el ejemplo del enlace lo puedes ver funcionando.
2.- Hasta donde entiendo tienes que retornar algo, la función SelProj debe retornar la variable proyeccion (return preyeccion) para que la puedas utilizas en otras partes del código.
3.- Aqui no lo he pillado, ¿A que le llamas un cuadro modal? ¿Por que quieres bloquear la interacción con Softimage mientras el cuadro la ventana está abierta? ¿no tiene más sentido que el usuario pueda mantener abierta la ventana mientras trabaja?

A ver si ahora si, un saludo! :)
« Última modificación: 22 Enero 2014, 01:56:44 por Cesar Saez »

Unaided

  • ***
  • 3293
Re:Snapshot a multiples sets de UV's (UVLayout)
« Respuesta #18 en: 22 Enero 2014, 21:36:51 »
1. Mirando tu revisión, veo que no había puesto el OnClosed en el Logic. Así que no me funcionaba aunque llamara al OnClosed y pensaba que solo funcionaba con plugin registrado.

2. Estupendo! Aunque me surgen cuestiones como el porqué declaras la llamada a la función dentro de una variable, o el valor de los parámetros 'incremento' y 'rotacion'. También el buscar selectedsamples y no solo selectedprojections.

3. No no, no quiero que sea modal, lo que sucede que la posición de los items en el layout como la hago usando grupos de separadores a modo de frames invisibles, al redimensionar horizontalmente se reposicionan de una manera algo incontrolable. Por ejemplo no quería que el parámetro muestre el slide cuando supera un ancho, o que se descentre respecto a los botones UP y DOWN, pero creo que debe ser algo inapropiado fijar esto en el caso que lo permita.

Re:Snapshot a multiples sets de UV's (UVLayout)
« Respuesta #19 en: 23 Enero 2014, 16:32:04 »
Lo de asignar el valor de retorno de la función a una variable es justamente porque necesito utilizar el view luego (cada vez que presionas el botón se determina cual es la vista del texture editor y tal), el view no está guardado en una variable global y dada la naturaleza de la herramienta yo no lo cachearía.
incremento y rotacion son parámetros del pset, lo que hago es asignar su valor a una variable al presionar el botón (podrías eliminar la variable y leerlo directamente en la llamada al comando de Softimage, pero la línea quedaba demasiado larga y me pareció más legible de esa forma).
Lo del selectedsamples es porque de otra forma el comando no me funcionaba, el primer argumento se refiere a los samples seleccionados y ya que tengo el view no me costaba nada pasar la selección de forma explícita (por regla general explícito es mejor que implícito).
Para controlar como quieres el campo numérico en el PPGLayout hay atributos que permiten cambiar algunas cosas, como por ejemplo siUINoSlider. Más aquí: http://download.autodesk.com/global/docs/softimage2013/en_us/sdkguide/si_om/siPPGItemAttribute.html

:)