La herramienta crea, a través de una interfaz sencilla de usar, todos los objetos de Maya necesarios para simular la creación de polvo tras la colisión de dos geometrías.
En Septiembre de 2017 empiezo a trabajar para Barreira Arte y Diseño. El corto que están elaborando es un corto inspirado en la estética Western y Sci-fi. Los Western son conocidos por sus ambientes polvorientos. Se trataba del primer corto del estudio que sucedía completamente en el exterior. Para consegir un acabado más realista se busca hacer que los personajes levanten polvo al caminar. Establecer este sistema de forma manual es una tarea colosal para los artistas de FX. Por ello se me pide crear un sistema que genere de forma automática el polvo.
La Interfaz de Usuario está dividida en dos secciones: creación y manipulación.
La sección de creación crea nuestro sistema. Se necesita rellenar tres apartados: nombre del grupo a crear, nombre de la superficie y nombre de la geometría animada. Para organizar mejor la escena guardamos todos los objetos creados dentro de un grupo llamado tal y como hayamos introducido en el textfield. Sólo puede haber uno con ese nombre por escena. El nombre de la superficie corresponde con el nombre de la superficie que va a emitir el fluido cuando haya contacto. Puede tener cualquier forma siempre y cuando haya suficientes vértices con los que poder colisionar. No obstante sólo puede haber uno por sistema. El usuario puede arrastrar con el middle mouse button el nombre desde el Outliner. Finalmente, el último textfield corresponde con todos aquellos objetos animados que vayan a colisionar con la superficie. Las geometrías pueden ser seleccionadas En el Outliner y arrastradas hasta el textfield correspondiente. Si hay más de un objeto éstos estarán separados por ", " (comaespacio). Si en vez de arrastrar escribimos los bombres éstos deben seguir la misma nomenclatura, divisiones incluidas.
La sección de manipulación consiste en un textfield inicial donde pondremos el nombre del grupo que contiene nuestro sistema. El grupo debe tener todos los objetos necesarios o no funcionará. Nos permite manipular de forma dinámica el comportamiento de los atributos de todos los objetos usados por el sistema. Ahora mismo sólo está implementado el ratio de emisión, variable que controla si el fluido debe ser emitido o no. Este parámetro se puede establecer como keyframes.
La herramienta fue inicialemente implementada en MEL y traducida posteriormente a Python. Para poder usarse necesitamos convertir Maya en un software capaz de responder a cálculos procedurales. Logramos esto usando los nodos SOup que se pueden comprar aquí. La herramienta no funcionara si no se tiene instalados los nodos o si no han sido cargadas en Maya.
La herramienta está dividida en dos ficheros Python distintos. El primer fichero corresponde con el archivo clase Objeto. Cuando creamos un objeto Dust se inicializa con un parámetro semáforo que determina si el fichero se está creando por pimera vez o no. De ser así crea todos los objetos necesarios y los conecta para crear el sistema. De no ser así simplemente inicializa sus parámetros internos.
El segundo fichero el el controlador de polvo. Esta clase se encarga de todos los aspectos visuales de la interfaz y del control de cada uno de sus componentes. Cabe destacar el procesamiento de los datos introducidos por el usuario que son filtrados para comprobar su utilidad dentro del sistema y reducidos para ser más manejables por los artistas. El apartado del nombre de la superficie sólo permite un único parámetro; los objetos animados admiten uno o más de uno y por último en la sección de manipulación se puede introducir un único grupo padre.
Cuando pulsamos el botón "Create" lo que estamos haciendo es generar objetos de la clase Polvo. Tras su creación añadimos estos objetos a una lista de objetos que existirá mientras esté abierta la ventana. Esta lista de objeto es la usada por la sección de manipulación para manejar los atributos de todos los objetos creados. Aún habiendo cerrado la ventana, la clase controlador siempre comprueba si existe un node podare con el nombre introducido y si contiene todos los nodos necesarios para que funcione nuestro sistema. Si los encuentra, crea un nuevo objeto Polvo (con el semáforo puesto a ya existente) inicializando los parámetros y añadiendo al final el objeto creado a la lista.
Antes de crear los objetos polvo originales comprobamos que toda la información introducida es la correcta. De no ser así avisamos al usuario con errores personalizados que notifican exactamente del error cometido. Al hacer estas comprobaciones antes de generar los objetos nos evitamos crear ningún objeto de Maya y después tener que eliminarlos al encontrar el error.