CMYK (Five Second Project)
The awesome Greyscale Gorilla Five Second Project challenges people from all disciplines to create cool animations within a certain theme. There is one important rule: they have to be five seconds long. CMYK, the famous subtractive color model used for color printing, was selected as the current theme. Of course CMYK is short for Cyan, Magenta, Yellow and Key (aka black). A suitable theme for a first time submission, so I decided to join the fun! You can see the short ‘n sweet result on Vimeo or by playing the embedded video above. The piece is based on two ideas. First, I wanted to feature the CMYK colors as prominently as possible. Second, I had this vision of a retro-ish pixelated 3D type that I could blow up! Funnily enough, the final result is very much like the doodle scribbled on a little piece of paper a few days ago. 🙂
What the hell is Processing?!?!
As far as I know, mine is the only competition entry made with Processing. Most of the other animations were created with programs like Cinema4D or After Effects. So I’m guessing some of you may wonder: what the hell is Processing?!?! Well, it’s an open-source programming language developed at MIT. It’s oriented at creating visuals, but you can do a lot more. It’s basically JAVA, with a nice wrapper around it. And last but not least, there are many user-made libraries that extend the capabilities of Processing. In this project for example I use a library for the global illumination rendering. There’s a lot more to say, but that’s the nutshell version. I’ve been using Processing a little over a year now. Given my graphic design (read: non-programming) background the first steps were actually easier than you might imagine, because it’s very direct and accessible. The adaptation of more advanced techniques took some time though. As I gain more control over Processing, I’m better able to take my ideas from concept to realisation. And compared to traditional programs, I feel it has given me a lot of additional creative freedom. This is probably what I love most about Processing. All in all, it’s been and still is a gradual and most importantly fun and exciting learning process.
Type in the Third Dimension
My approach to creating 3D blocky type was to use a black and white height map. The brightness at every x-y position translated into a corresponding number of boxes in the z-dimension. Black meant zero boxes, white lead to the full depth and greys to everything in between. I started with a small image made in Photoshop and got to work on the proof-of-concept for this idea. Once I saw that it actually worked, I implemented the whole thing into Processing. What I mean is that I no longer create the image beforehand, but I use an off-screen buffer directly in Processing. This means I can type anything I want and instantly give it the 3D-blocky-type treatment. So it’s much more flexible. In the development phase I experimented with the right font, blur amount, pixels dimensions and z-depth for a nice visual look. Mostly in realtime using keyboard input to change values and see the effect on-screen.
I can imagine this might be total mumbo jumbo for some! Feel free to ask questions if you don’t understand something or would like to know more about it… Four renderers were used for the realisation of this project. OpenGL was the main renderer, used for most graphics and the previsualization of the P5Sunflow parts. The second, called Sunflow, is an open-source java-based global illumination renderer, hence the smooth lighting ;P The other two renderers were P2D and JAVA2D, both used mainly for the creation of the HUD-elements (using off-screen buffering). The OpenGL version basically runs in realtime. In P5Sunflow, it took about 3 hours to render 150 frames at 1280×720, which averages to 1 minute and 14 seconds per individual frame. I must say this is really acceptable for a ray-trace renderer with global illumination. I wrote a separate application, which handles the compositing of all layers. An alpha mask is used to accurately separate layers.
The greatest result is learning something new!
I learned a lot from this project. Not in the least due to some much-needed creative problem solving along the way. The fact that it’s only five seconds lowers the barrier for entry, but the skill set you’re using – and improving – is basically the same whether it’s a short or long animation. So I’d have to compliment Greyscale Gorilla on this very inspirational initiative! Five seconds is short. Sure. But the flip side is you can up the production value per frame. Add as much details as you can and just tweak it like there’s no tomorrow. Furthermore, this project introduced me to motion graphics and short animations, which is a whole new and exciting world for me. On the technical side, I learned about the pro’s and con’s of different renderers. OpenGL has excellent gradient capabilities and is very fast, even with loads of geometry flying around. P5Sunflow makes stuff look cool through global illumination. Finally JAVA2D and P2D are extremely useful for the creation of smooth 2D graphics. On the other side of the coin. The latter don’t do 3D, while OpenGL isn’t the best choice for 2D. And P5Sunflow, well everyone who has used it knows it can be slow as hell! 😀 So what matters is that you choose the one that best fits your project. Or even within a project, use the one that’s appropriate for that specific purpose. Another good thing is that I can re-use most of the code written for this project. Because it’s written in an object-oriented manner, which means it’s modular and different parts can be used (and improved) in future experiments. Last but not least, the final thing I learned is that a clear goal and a hard deadline work well for me! 🙂
Flickr sets related to this post: