Entradas populares

miércoles, 23 de octubre de 2013

Creacion de interfaces para las herramientas

Creacion de interfaces para las herramientas

Uno de los problemas cuando intentamos hacer una interface para una herramienta ya sea en maya o en nuke es el refresco de los datos que mostramos en la interface y las posibles diferencias que puede haber entre los datos que mostramos y los que realmente hay en el programa.

Voy a comentar un metodo de creacion de interfaces que nos permite el tener en todo momento actualizado los datos con el programa y es el que estoy utilizando tanto en Maya como en Nuke

Normalmente hacemos las interfaces en pyqt o pySide, y hacemos sus conexiones mediante las senhales que emite pyqt, podemos utilizar estas senhales para actualizar las interfaces si conseguimos que el programa emita las senhales que queremos

Para ello creamos una clase, que podremos utilizar luego en todas las interfaces que hagamos, esta clase lo que hara sera conectar, en el caso de maya por ejemplo, los callbacks de maya mediante el api en python con signals de pyqt, por ejemplo, hacer que emita un signal "newNode" cada vez que se crea un  nuevo nodo, otro cada vez que se cambia un atributo, etc. en nuke podemos hacer lo mismo de un modo muy parecido

Una vez que tenemos esas clases, las utilizamos de modo que sean las senhales las que lancen los metodos que actualizan la interface, nunca una accion de la herramienta actualiza la interface, la interface se sincroniza con lo que tengamos en maya siempre, y las acciones que tengamos en la herramienta trabajan directamente contra maya, no se preocupan en ningun momento de la interface, las acciones modifican algo en maya y mediante la clase que hemos definido se actualiza la herramienta, si modificamos algo en maya directamente se ve reflejado en la interface evitando muchos problemas


Este es un ejemplo de interface compleja usando esa tecnica, tanto el sistema nodal como el editor se actualizan directamente desde maya, y las acciones que hacemos en la interface solo se preocupan de realizar el trabajo