2.2. Herramientas de programación creativa
2.2.6. Cinder
Cinder, lanzada en 2010, es un librería de programación en C++ de código abierto creada por Andrew Bell con aportaciones de Hai Nguyen.
La librería permite crear programas independientes empleando datos obtenidos de internet o generados a partir de la interacción con el teclado, ratón o pantallas táctiles, entre otros.
Se pueden crear gráficos en 3D, formas generadas con algoritmos, procesamiento de imágenes, trabajo con texto y tipos de letra personalizados y edición de audio y vídeo. Cinder es además multiplataforma, de manera que el mismo código funciona en MacOS, Windows, Linux, iOS y Windows UWP. Por sus características, se compara a menudo con openFrameworks y también se considera una alternativa para C++ de otros entornos como Processing (basado en Java), Microsoft Silverlight o Adobe Flash. Cinder se emplea a menudo en instalaciones interactivas y basadas en las visualización de datos o la simulación de propiedades físicas.
Entornos evolutivos
En 2011 el estudio FIELD creó una serie de vídeos y animaciones generativas para el video wall de la sede del Deutsche Bank en Hong Kong. Una de las animaciones, desarrollada con Cinder, simula el efecto de una ola con pequeñas partículas que se desplazan por la pantalla. Podéis visualizarlo en el enlace https://www.field.io/project/hi-res-realtime-artworks/.
Si bien presenta similitudes con Processing u openFrameworks, Cinder resulta algo más complejo de utilizar y no es la mejor opción para quien empieza a crear proyectos de programación creativa.
Los propios creadores afirman que es mejor empezar con ejemplos creados e ir aprendiendo a partir de los mismos, para lo cual es posible acceder a numerosos programas de muestra (alojados en GitHub) y también emplear las herramientas Tinderbox, pensada para facilitar la creación de nuevos proyectos y Cinderblocks, una colección de librerías y código que se combinan con Tinderbox para integrar rápidamente ciertas funciones en un proyecto.
Crear un proyecto en Cinder requiere estar familiarizado con el lenguaje C++ y el uso de OpenGL. Hay tres funciones principales que estructuran cualquier proyecto:
setup( )
inicializa las variables al empezar el programa.update( )
modifica dichas variables.draw( )
visualiza el resultado en la pantalla.
Por medio de estas tres funciones se definen los elementos del programa y las rutinas que se ejecutan en un bucle infinito.
A estas funciones se suman dos más:
prepareSettings
permite definir varios parámetros del programa antes de iniciarlo, tales como el tamaño de la ventana o los fotogramas por segundo.shutdown
se sitúa justo al salir de la aplicación, para liberar memoria o apagar dispositivos.
Cinder emplea el espacio de nombres (namespace) de C++ para distinguir las funciones, de manera que todos los elementos empleados en esta librería se encuentran dentro del espacio de nombres cinder:: (abreviado ci::). El uso de esta convención ejemplifica cómo el trabajo con Cinder se basa en un conocimiento previo de C++, y es que a diferencia de otros entornos aquí es preciso escribir código conociendo la sintaxis y los diferentes recursos de que dispone la librería. En el sitio web se facilita una lista de referencias por categorías que puede servir para encontrar una función concreta, pero (como suele ocurrir con otros lenguajes de programación) es mediante ejemplos ya realizados como se pueden descubrir mejor las posibilidades de Cinder.
En este sentido, el primer uso de Cinder pasa por crear un proyecto nuevo con Tinderbox y explorar alguno de los proyectos de muestra. En Tinderbox escogemos la localización y el nombre del proyecto, así como el tipo de proyecto a realizar y, finalmente, se escoge un compilador (XCode o Visual C++2010). El programa crea el proyecto y las referencias a la librería de Cinder, así como un código de muestra y un ejemplo con el que se puede empezar a trabajar. La guía Hello Cinder ofrece además un recorrido informal por las fases de la creación de un proyecto, desde la creación de la ventana en la que se mostrarán los resultados a la inserción y manipulación de imágenes, extracción de datos, control por medio del teclado y ratón, creación de un entorno en 3D y trabajo con partículas aplicando reglas, entre otros.
Primeros pasos y recetas de Cinder
La complejidad de Cinder hace recomendable explorar guías paso a paso como el tutorial Hello Cinder de Robert Hodgin (https://libcinder.org/docs/guides/tour/hello_cinder.html) y libros como Cinder Creative Coding Cookbook de Dawid Gorny y Rui Madeira (Packt Publishing, 2013), que facilita el aprendizaje de Cinder por medio de una serie de «recetas» que llevan al usuario novel a descubrir paso a paso las diferentes posibilidades que este le facilita para crear todo tipo de proyectos.