Crear con código: openFrameworks
Siguiendo con la serie de artículos centrados en las posibilidades de la programación creativa, nos centramos en openFrameworks (OF), un conjunto de herramientas de código abierto en lenguaje C++ que ha sido diseñado para apoyar procesos creativos por medio de un entorno de programación sencillo e intuitivo. openFrameworks combina diversos recursos de uso común como OpenGL (para gráficos), FreeType (tipografía), FreeImage (gestión de imágenes), Quicktime (vídeo), OpenCV (visión artificial) o Assimp (3D) y es compatible con los principales sistemas operativos (Windows, OSX, Linux, iOS, Android), lo cual lo convierte en una herramienta muy potente y útil para crear cosas con código de manera más sencilla y con mayor estabilidad y compatibilidad.
Como se puede ver en este vídeo de presentación, se pueden crear proyectos muy diversos con openFrameworks. De manera similar a Processing, este es un proyecto desarrollado por una comunidad con el objetivo de ser fácil de usar, consistente e intuitivo, extensible y compatible con múltiples plataformas. En este sentido, OF se basa en la filosofía «DIWO» (Do-It-With-Others, hágalo con otros) que promueve la creación colectiva y colaborativa, a partir de recursos desarrollados por una comunidad cuyos resultados también revierten en la comunidad. Al ser desarrollado por una gran cantidad de programadores y diseñadores, el software se actualiza y amplía constantemente, si bien también tiene sus limitaciones. A diferencia de Processing, los proyectos creados con OF no se pueden publicar en un sitio web (aunque esto puede cambiar en el futuro), pero por otra parte es más flexible en aspectos como el entorno de desarrollo y también más rápido. Otro aspecto en común entre Processing y OF es el haber sido creado por artistas con el objetivo de facilitar a otros artistas desarrollar sus proyectos con código de programación. El artista y programador Zachary Lieberman, co-autor de notables proyectos como Messa di Voce (junto a Golan Levin) o The Eyewriter (junto a FAT Lab y Graffiti Research Lab), lanza openFrameworks v0.01 en 2005 y en apenas unos meses ya está desarrollando la versión 0.03 con sus estudiantes en Parsons School of Design (Nueva York). Posteriormente continua desarrollándolo con Theo Watson y Arturo Castro junto a una creciente comunidad de programadores y diseñadores. En una entrevista mantenida en 2008 durante el festival Ars Electronica, Lieberman y Watson destacan la intención de hacer de OF una herramienta creada por artistas y para artistas:
(Lieberman) «También se trata de que somos artistas desarrollando herramientas para otros artistas. Cuando trabajamos, cogemos ideas que hemos aprendido y procuramos llevarlas a openFrameworks para que otros puedan usarlas. Nos hace mejores programadores y también significa que tenemos un mayor impacto que si simplemente hacemos un proyecto con nuestros nombres. El objetivo es tomarse en serio el concepto de arte como investigación y esta es una manera de publicar los resultados de nuestra investigación. […] También, openFrameworks está ayudando a una nueva generación de artistas a crear obras que van más allá de la pantalla. […] los proyectos creados con OF parecen estar en la vanguardia de una nueva línea de investigación en diseño de interacción, la de los sistemas en tiempo real que alteran la relación de las personas con el espacio físico.»
Ambos artistas emplean OF en sus propios proyectos porque, según afirma Watson, «sé que si puedo concebirlo, puedo hacerlo y no siento que [el software] me está forzando a trabajar de determinada manera.» En este sentido, herramientas como OF o Processing inciden en la necesidad que tienen artistas y diseñadores de ser capaces de crear más allá de las funciones preestablecidas por los principales programas comerciales de diseño gráfico, edición de imágenes y vídeo, audio, y un largo etcétera. Para ello, la simplicidad es un aspecto esencial de este entorno: OF puede emplearse con escasos conocimientos del lenguaje C++, principalmente trabajando a partir de ejemplos que se pueden modificar, aprendiendo a partir de los mismos ejemplos cómo funciona el código y qué posibilidades tiene. También se ha buscado la compatibilidad con Processing, facilitando la transición de una plataforma a otra. Las funciones también son fáciles de comprender (por ejemplo, se emplean funciones como «play» y «stop» para controlar la reproducción de un vídeo), lo cual permite adentrarse en el trabajo con OF de una forma intuitiva.
Al desarrollar openFrameworks, Lieberman y Watson afirman haber establecido un sistema modular que permite a los no-iniciados empezar a trabajar de manera sencilla, pero a la vez facilita una extensa variedad de recursos a los usuarios más avanzados. En este aspecto, el lenguaje C++ resulta adecuado puesto que permite programar en distintos niveles y cuenta con numerosos recursos tanto para aprender a usarlo como para desarrollar proyectos complejos. Al ser un entorno multiplataforma, permite también que cualquiera pueda usarlo sin tener que cambiar de sistema operativo y por otra parte facilita que el producto terminado sea fácilmente exportable, por ejemplo, de Windows a MacOSX o Linux. Esta compatibilidad es especialmente útil para los artistas, que a menudo deben adaptar sus proyectos a diferentes plataformas o máquinas.
Primeros pasos con openFrameworks
La web de OF resume en cuatro pasos el proceso de instalación y primer uso del software: descargar OF, explorar ejemplos, crear un proyecto, consultar tutoriales. Ciertamente, a nadie le apetece sentarse a leer un largo manual de instrucciones antes de empezar a usar un dispositivo o un software. Los desarrolladores de videojuegos han incorporado de manera ejemplar los tutoriales en la propia dinámica del juego, llevando al jugador por unas primeras «misiones» iniciales en las que aprenderá los elementos básicos para interactuar con el mundo en que se encuentra su avatar. OF nos invita ante todo a descargar el software, si bien advierte que se trata de una librería que requiere de un entorno de desarrollo que debe descargarse por separado: así, por ejemplo, para emplear OF en MacOSX es preciso obtener Xcode a través de la App Store y luego descargar la versión más reciente de openFrameworks.
A continuación se pueden explorar los ejemplos de código (alojados en GitHub) que permiten explorar las posibilidades de OF en diferentes categorías, tales como 3D, comunicación, visión artificial, sonido, video, etc. Cada ejemplo permite al usuario aprender cómo aplicar las funciones necesarias para lograr un objetivo determinado. Por ejemplo, en la categoría «visión artificial» (Computer Vision), encontramos un archivo creado con OpenCV que permite captar a través de una cámara la presencia de una persona u objeto en un espacio y seguir sus movimientos. Al estudiar el código de este archivo, el usuario aprende a capturar vídeo a través de una cámara o archivo pre-grabado, usar el vídeo para generar algún tipo de cálculo y diferenciar entre el objeto o persona y el fondo.
Una vez aprendidas algunas de las funciones de OF (en este sentido, se promueve el aprendizaje orientado a los usos que tiene el usuario en mente), es el momento de crear un nuevo proyecto. Esto se hace en el entorno de desarrollo con el generador de proyectos, creando un proyecto nuevo que se alojará en la subcarpeta «apps». En este momento se pueden adjuntar también los recursos añadidos (addons), que facilitarán la ejecución de determinadas funciones. El proyecto se crea así, desde su inicio, como la suma de las aportaciones de diferentes usuarios, de manera modular y orientado a unos objetivos concretos.