XSIforum.com
Foros 3D => Autodesk Softimage => Shaders, Materiales, Texturas, Luces y Cámaras => Mensaje iniciado por: baek en 08 Enero 2014, 03:47:20
-
Buenas a todos!! ;D Tengo una duda que me está causando un enorme headache...
Estoy con un modelo el cual hice sus respectivas UV's en 7 sets. El tema es, que en UVLayout hacer un render de estos sets para luego llevartelo a Photoshop no he podido realizarlo, simplemente me hace un render de un set en concreto todo el rato. Es el problema que tengo básicamente, me planteé el probar a hacerlo en Softimage, lo que todavía no lo he probado y no se si con el Stamp UV's te da la opción de hacer el snapshot de cada set por separado.
Si podeis ayudarme en esto me salvareis la vida :uglystupid2:!!
Un saludo!! ;D
-
No se en XSI, pero importa el objeto a Maya y alli si puedes exportar una imagen por cada set.
-
Cuando hablas de multiples uv sets creo que te refieres a multiples tiles o UDIMs no?
En UV layout creo que no se puede hacer, ya que solo renderiza el udim por defecto.
En Maya y XSI si se puede, no recuerdo ahora mismo como era en XSI, pero creo que se podia.
Si tu asset no tiene muchos UDIMs, en UV layout puedes mover los UDIMs que estan fuera de la posicion por defecto 1 unidad perfecta utilizando el modulo move/scale/rotate.
De esa forma, los mueves de forma temporal solo para hacer el render, y como los estas moviendo una unidad perfecta, despues encajaran a la perfeccion con su posicion original.
-
Muchas gracias a los 2, Xuanprada, en cuanto llegue al curro lo probaré en el UVLayout!!.
Saludos :D!
-
Hmmmmmmm parece ser que ni moviendo cada UDIM en UVLayout una unidad entera exacta (no en negativos) tampoco me hace el render del UDIM correspondiente... No se el porque, siempre me saca el render del mismo UDIM.
En Softimage es con el Stamp UVs, pero, habia que mover cada tile también?
-
Hmmmmmmm parece ser que ni moviendo cada UDIM en UVLayout una unidad entera exacta (no en negativos) tampoco me hace el render del UDIM correspondiente... No se el porque, siempre me saca el render del mismo UDIM.
En Softimage es con el Stamp UVs, pero, habia que mover cada tile también?
No me has entendido, o no me he explicado bien :)
Mover unidades exactas te sirve para mover cada UDIM al UDIM 1001 y desde ahi renderizar.
Despues encajara a la perfeccion cuando cada UDIM este en su sitio, ya que lo has movido posiciones exactas.
Ahora si? :)
Si, en Softimage creo que habia que mover cada tile, que lo puedes hacer tambien con unidades perfectas asi http://vimeo.com/42391383
-
Interesante Xuan!
Me gustaría intentar hacer esa herramienta que reclamas, pero los gurus del scripting que andan por aquí me deberán dejar tiempo para ello ya que ellos lo harían en una tarde. Yo de momento te he hecho el flip y el flop ;P
-
No soy un experto pero si escribes 1+ en la coordenada U o V del texture editor debería mover las uvs seleccionadas 1 unidad (con la opción "split components" desactivada, es el boton SET al lado de las coordenadas U/V)... vamos que no hace falta desarrollar nada, es parte de la aritmética básica que puedes introducir en cualquier input numérico de Softimage.
-
Como bien ha comentado y mostrado César, no hace falta desarrollar funciones que ya incluye el propio XSI.
No obstante he preparado un script en js recogiendo las funciones que mencionaba Xuan en su video.
Simplemente sería una sencilla herramienta para tener a la vista en una ventana, esas funciones del texture editor reclamadas por Xuan.
No soy un experto en la materia y es la primera vez que hago un ppg, por lo que a buen seguro el script contendrá fallos de concepto. Funcionalmente, todo lo que he probado funciona bien.
Hay algunas cuestiones que me gustaría corregir y que detallo a continuación:
1. No funciona si la ventana del Texture Editor está en un visor. Solo en views flotantes.
2. Si se cierra el panel desde la X no elimina la customProperty del PPG. Usar el boton Close.
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.
*renombrar el .zip por .js
-
Cojonudo tio!
A ver si alguien te ayuda a solucionar esas dudas que tienes.
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...
-
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- ;)
-
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.
-
Por cierto, la version 8 de Unfold 3D es cojonuda!
-
Mejor UV Layout para hard surface?
-
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.
-
Hey Unaided, buen ejercicio!
A ver si te puedo echar un cable con las preguntas :D
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.
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
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 ;)
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.
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();
}
-
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: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.
-
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! :)
-
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.
-
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
:)