Experimenting with Cinder

What is Cinder?
Cinder, created by the Barbarian Group, is a creative coding language based on C++ that offers advanced visualization abilities.

In their own words, “Cinder provides a powerful, intuitive toolbox for programming graphics, audio, video, networking, image processing and computational geometry.” (from libcinder.org) This year, Cinder received a Grand Prix in Innovation at the Cannes Lions Festival, the first ever award in this new category.
Inspired by some amazing projects, (such as this one and this one) we decided to add Cinder to our development toolkit; we’re excited to continue exploring how best to implement it.
Some of Cinder’s strengths include:

  • Computational Geometry: Solving problems with basic geometric elements like points, line segments, and polygons. These virtual jellyfish, made by Marcin Ignac, are a lovely example of Cinder being used to generate changing forms based on simple geometry.
  • Real Time Graphics: In addition to running pre-generated graphics (like a movie) we can create interactive experiences where the graphics respond in real time to something the user did. In this “Funky Forest” interactive at the Singapore Art Museum, the projected animation reacts to users’ bodies.
  • Computer Vision: This means capturing, processing, and understanding images from the real world. We used this capability when developing an interactive based on input from a Kinect sensor.

e8b681a73013f0be13cbd45ec30473592b9c8070

Prototyping an interactive that uses two Kinect sensors as the interface.

Central Space Projection: Working with Cinder
One of our recent Cinder-based projects is the Central Space Projection, installed in the Field Museum’s “Restoring Earth” exhibition. This installation provides a fun and collaborative experience where visitors use their bodies, captured by a Kinect sensor, to catch animated spheres as they drift to the ground.

bbe7f27e1a2c4215035a2e58f3a23b7ac8e376f5

Development for this interactive was an interesting challenge for our team. We decided to use Cinder to code this project for a few reasons: First, it’s powerful enough to handle large data sets. Additionally, Cinder-based applications can quickly process real-world input and generate responsive graphics.

How it works
We developed the Central Space projection using Cinder/C++. Two Kinects track visitors in the space and capture their outlines, which are rendered in real time. These outlines are displayed in a variety of animated environments, creating the sense that the visitor is inside the scene. Visitors then use their body outline to “catch” a cascade of falling spheres in the animation. Their success transforms the spheres into living things, bringing the environment to life. The experience is projected over a 20-foot wall, offering ample space for multiple users, who can work together to improve their efficiency.

Due to the complexity of the user interaction–the program had to be responsive to multiple bodies interacting with the animation and with one another–using Cinder was key to making the whole thing work seamlessly.

More Cinder
As we experiment with new processes and figure out the best tools for each new project, it’s always exciting to hit on something that works well for our team. Plus, Cinder’s supportive online community is a big draw, and feel lucky to be a part of it as we continue working with this great tool.

Do you have any experience with Cinder, or frameworks like Processing or OpenFrameworks? Comments, suggestions, questions, collaborations… we’d love to hear what you think.