Jacobo Barreiro, moma y la creación de herramientas con Python, en Dimensión 2.5

24/06/2012 por Miguel Gómez

Jacobo Barreiro regresa a Dimensión 2.5 para compartir su experiencia en el desarrollo de scripts para Luxology Modo, Autodesk Maya, 3ds Max y The Foundry MARI.



jacobo-barreiro-moma-python-portada



Tras años de experiencia y al estar involucrado en entornos de producción tan exigentes como ILM, ¿es un paso natural tener conocimientos de programación?.
Por lo que he visto hasta ahora, no creo que sea un proceso natural. De hecho, me he topado con poca gente que estando enfocada en un área artística les dé por programar. En los casos más extremos hay artistas que ven programar como algo que les robaría el alma y jamás podrían volver a conmoverse por la belleza de un atardecer :) . Ahora en serio, supongo que es el hecho de que en pipelines de este tipo los TD's se encargan exclusivamente del desarrollo de herramientas para los artistas.
En mi caso es algo que me saca fuera de mi "comfort zone" y de momento me lo tomo simplemente como un "juego". También es algo que va por periodos. Comencé a hacer pequeños scripts para LightWave 3D hace tiempo, creo que allá por el 2004, básicamente por curiosidad. No tenía realmente mucha idea de lo que estaba haciendo, pero en ocasiones salían cosas que medio funcionaban. Luego pasaron varios años sin que escribiese ni una sola línea de código, hasta que la adopción masiva de Python en el ámbito 2D/3D comenzó a ser patente. Fue entonces cuando comencé a pensar que resultaría útil saber algo de Python para ayudarme en ciertos aspectos del trabajo diario. Comencé con Autodesk Maya, ya que es uno de los programas que uso y en sus posibilidades para ser adaptado a necesidades específicas es donde reside gran parte de su potencial. Además, la documentación es bastante buena, Internet está plagado de ejemplos y hay algunos tutoriales bastante explicativos.
En ILM tomé uno de los cursos de Python que organizaban para empleados y me metí entonces con un par de utilidades para ayudarme con ciertas tareas.
Después de eso me dio por hacer herramientas standalone, también en Python, y creo que fue ahí donde comencé a entender un poco de qué iba todo esto, a conocer las posibilidades, y también las limitaciones.

En las últimas semanas has estrenado diversas presentaciones de tus propios scripts para diferentes aplicaciones, ¿qué lenguajes de programación utilizas?.
Sí, Python principalmente, aunque en el caso de 3ds Max uso MAXscript, el cual he empezado a ojear recientemente.

¿Por qué no continuar con Python, qué te aporta MAXScript?.
Me hubiese gustado, pero lo descarté por diferentes motivos. El principal fue el hacerlo más sencillo de cara al usuario, y Python en 3ds Max todavía es soportado a través de métodos externos (Py3dsMax de Blur Studios, o puentes entre Python y 3ds Max vía dotNET, usando IronPython, por ejemplo) que requieren varios pasos adicionales a la hora de hacer funcionar los scripts. La otra razón fue por conocer un poco mejor las posibilidades de MAXscript, de las cuales apenas he hecho uso pero sí que he podido hacerme una idea de lo que es capaz.
El primer MAXscript que hice fue J3D Projector, una herramienta para facilitar el workflow de múltiples proyecciones de cámara y matte painting en 3ds Max.

jacobo-barreiro-moma-python-j3d-projector

Primero lo había hecho para modo, el cual incluía más funcionalidades y estaba algo más avanzado, pero había un par de problemas de base que quería solucionar primero y nunca encontré el momento, así que se quedó guardado en un "cajón"

Otra herramienta hecha con MAXscript es J3D Moya, un set de herramientas que funcionan a modo de "app link" para transferir información (geometría y animación) entre Maya, modo, 3ds Max y Mari.

jacobo-barreiro-moma-python-j3d-moya

Está sin terminar, y de hecho, aunque la tengo publicada en la web, creo que incluso hay partes que aún no son funcionales. A veces ni siquiera es falta de tiempo, es simplemente que se me pasa otra idea por la cabeza y dejo a medias las anteriores. "ADD" lo llaman aquí :-)

¿Qué recomiendas para comenzar a aprender Python?.
Google :). La verdad es que no sabría recomendarte nada concreto. He leído mucho y todo ha salido de búsquedas en Google.
Lo que sí recomendaría, y hablo siempre desde el punto de vista de un artista CG al que le gustaría tener nociones de programación para complementar su trabajo, es comenzar aprendiendo los fundamentos de programación antes de meterse a hacer herramientas bajo un determinado lenguaje de programación en un paquete 2D/3D en nuestro caso.
Y estando en ese ámbito, obviamente Python es lo más extendido, y lo que recomendaría, ya que además de ser un lenguaje bastante fácil de aprender, es muy potente.

¿Cuál es el origen de cada uno de los scripts que has desarrollado?.
A pesar de que las herramientas que comparto en mi web las desarrollo en mi tiempo libre, su origen casi siempre viene dado por alguna necesidad de producción. De hecho algunas de ellas las uso a diario.
Por ello, suelen ser herramientas que corren el riesgo de quedarse en un estado de "stand by" indefinido, en cuanto al desarrollo de nuevas prestaciones se refiere, ya que mientras funcionan bajo las condiciones y situaciones particulares que yo las uso, no las toco.
Intento "testearlas" lo más que puedo en diferentes situaciones, pero no siempre tengo el tiempo para hacerlo, y resultaría imposible cubrir todas las variables. Cuando me contactan desde mi web con algún problema en ellas, intento arreglar los "bugs" cuando surgen, pero no siempre tengo la oportunidad de dedicarle el tiempo necesario.

¿Por qué utilizar Luxology Modo, cuál es su utilidad dentro de tu flujo de trabajo?
Aunque suene contradictorio, hablando aquí de scripting y demás, siempre he intentado que el proceso CG fuese cada vez más sencillo, preocupándome menos por el aspecto técnico y enfocarme más en hacer algo visualmente interesante.
Y es precisamente por ello por lo que tengo interés en intentar librarme de ciertas tareas repetitivas o tediosas vía scripting, las cuales simplemente me frustran, distraen o me rompen el flujo de trabajo.
Dicho esto, Luxology modo, en mi opinión, consigue precisamente eso. Hacer más divertidas y gratificantes ciertas tareas que en otros programas me resultan más pesadas. En mi caso lo uso principalmente para modelado (de forma casi exclusiva) y para render (en conjunción con otros motores).
Tengo de todas formas bastantes ganas de "testearlo" de cara animación, ya que las nuevas herramientas de rigging son una de las adiciones de las que menos esperaba y que más me han sorprendido. Realmente es un sistema robusto y con muchas posibilidades.
Creo que es un programa que sorprendería a aquellos que no lo han probado aún. Una de las áreas que más sorprende, y esto lo digo basándome en comentarios de gente que lo prueba por primera vez y que me cuentan sus impresiones, es su motor de render. Ofrece una gran relación entre interactividad, velocidad y calidad.
Y basándome en esta premisa, una de las últimas herramientas en las que estoy trabajando es en la "integración" del motor de render de modo en Maya, a la cual llamo "moma" (sí, me parto los cuernos pensando en los nombres).

Y digo integración entre comillas porque no es el tipo de integración que ves con V-Ray o Arnold, por mencionar alguno, sino que es más bien una comunicación entre el render de modo y Maya. Se podría describir como un interfaz grafico para “headless modo” corriendo en Maya, desde donde se genera toda la información (geometría, animación, cámaras, luces, materiales, etc.…). De cualquier modo, de cara al usuario, funciona en su mayor parte como si un motor de render más dentro de Maya se tratara.
La intención, además ser un reto personal con el que aprender cosas nuevas, es la de dar la oportunidad a los usuarios de Maya de probar ciertas características del motor de render de modo sin abandonar su aplicación. No todo el mundo está por la labor de familiarizarse hasta cierto punto con un nuevo programa solo para probar su motor de render.
En cualquier caso, por el tipo de integración que es y cómo funciona, y aunque mi objetivo es el de hacer algo que pueda dar la talla en cierto tipo de producciones, principalmente veo este proyecto como un primer acercamiento a mostrar el potencial y las posibilidades que supone.
En Twitter y Screenr voy "posteando" actualizaciones sobre el progreso de desarrollo, y también he dedicado una sección de mi web con videos y mas información.
Esta es una herramienta en la cual estoy poniendo un especial empeño para que sea sólida y fiable antes de seguir avanzando en cuanto a añadir más funcionalidades se refiere. Al contrario que con scripts anteriores, intento hacer un "testeo" más exhaustivo para cubrir el mayor número de flancos posibles (sin contar un periodo de prueba público que espero poder hacer pronto).

¿Dónde dejas en todo esto a LightWave 3D después de tantos años como usuario?.
La verdad es que hace mucho que no uso Lightwave 3D. No porque considere que ya no es un software capaz, más bien todo lo contrario, especialmente en estas últimas versiones, pero simplemente es un programa cuyo uso, por lo que más o menos percibo, ha descendido en los sectores y empresas en las que me ha tocado trabajar. Y aumentando cada vez más el número de programas con los cuales me he tenido que familiarizar, al final LightWave 3D se ha ido quedando un poco olvidado.

En estos momentos, y según tu experiencia, ¿cuál sería el pipeline de herramientas ideal para producción de animación 3D y efectos visuales?.
Teniendo en cuenta que cada proyecto y cada situación es diferente, y que cada equipo que lo aborda también lo es, creo que las herramientas ideales van en función de todo eso.
La envergadura de la producción, el tipo de producción, el número de miembros del equipo, el número de disciplinas necesarias, el tiempo, la calidad requerida, la complejidad, etc. (incluso dejando a un lado el tema de presupuesto).
Por poner un ejemplo más concreto, grandes empresas dentro del campo de los VFX están adoptando Katana / Arnold, el cual parece ofrecer muchas ventajas. Maya se sigue usando como principal software para animación, Nuke para composición y otros programas, como Houdini, ICE (Softimage), etc. para efectos. Esto es así a grandes rasgos, ya que dependiendo del departamento / disciplina, la aplicación principal a usar varía (3ds Max, modo, etc…). En cualquier caso, esto es simplemente un ejemplo dentro de un sector concreto de cara a compañías y proyectos de una determinada envergadura.
En mi caso particular, las herramientas que uso en este momento, dependiendo de la situación, bien sea por gusto o necesidad, son: modo, Maya, 3ds Max, V-Ray, Arnold, Mari, Photoshop, Nuke, además de otros programas y utilidades para tareas más específicas.

Más información | Jacobo Barreiro | En Dimensión 2.5

0
Contenido relacionado
Comentarios