We have just completed a week-long workshop working with Processing and 3d image creation. It was an attempt bring together the 3d and Hypermédia ateliers at the Aix-en-Provence Art School, and as far as I could tell, was pretty successful.

The original idea was that image programming is no longer easily separated into neat fields such as 2d and 3d, raster and vector, etc. While these separations are still at work, and their logics fundamental to computer generated imagery, the tools, environements, and practices tend to mix it all up in the end. As well, many signs coming from the 3d world point to an image convergence, or should I say a hybrid image — in which 2d logics are at play within the 3d image, and generate its volumes, textures, contours. Ever since we dived head first into Processing a few months back, what was previously just an hypothesis has become a subsequent realty — at least to our standards — hence the need for a workshop to explore where we can go with it.

As it turns out, we didn’t fully explore the hybrid nature of generating 3d images using vector/raster styles/logics, but we did discover a lot about 3d, and it is now more or less an acquired tool in the atelier. None of the images were fantastically pretty either, but we did avoid the typical Tron aesthetic that still seems to reign in the 3d world. Video games are slowly moving away from that aesthetic, but there is still a lot of weening needed to rip us out of Brunelleschi perspective, and I think we all need to do a lot more work to force 3d modelling into the sophistication of say, any typical hip Illustrator or Flash design. Death to realism! Long live the new flesh!

After a brief intro (yes, I read through the OpenGL Super Bible, yes I attempted a short resumé), we began with the Pushpop Code examples I posted here a few weeks back, and started tweaking it to turn it into messy 3d soup.

Workshop Image Code Example, Douglas Edric Stanley Workshop Image Code Example, Douglas Edric Stanley Workshop Image Code Example, Douglas Edric Stanley

My collegue from the Atelier 3d, Pavel Smetana, also brought in Robert Praxmarer, a Future Lab researcher and Processing-proficient lecturer in the Linz University of Art Interface Culture program. He is also currently in residence at Pavel’s CIANT lab in Prague. Once he had settled in, he proposed this 3d Grid Processing Sketch, using the traditional image of Lena as a starting point. Most of the participants used this source code as a starting point for their code experiments.

Robert Praxmarer Robert Praxmarer's Lena 3d Grid

Wednesday, Romain Raffin joined us with a series of demonstrations and simple code snippets of his own.

Romain Raffin Romain Raffin's Interpolation Sketch

Romain is a real-time rendering specialist working outside of the art world, in fact he generally renders for the French Army and Aeronautics industry. I’m usually skeptical of engineers meddling with art coding experiments — I’ve seen the “art meets science” slogan meet reality, it’s usually a funding-inspired hoax — but Romain was totally cool and guided us with a light touch. He also went back over the theory behind matrix transformations, something I hadn’t really explored enough with the students during the first semester. Those that didn’t get it, get it now. He also has a helpful PDF document on building your own Bezier Trajectories and other interpolation code. It think the basic interpolation formula — I = A(1-t) + B(t) — is permanently burned into my brain.

Romain Raffin, Nicolas Moncasi Romain Raffin's interpolation sketch

You can download several of his demo Processing sketches over at our Happy Code Farm.

Romain Raffin, Raphaël de Stael Romain Raffin, Raphaël de Stael Romain Raffin's interpolation demo Romain Raffin's Interpolation Sketch

The workshop was also a good excuse to introduce the students to the Procedural vs. Object-Oriented debate sparked by Toxi’s </Procrastination> post. We started with a pretty butterfly example, and built all sorts of object-oriented programs from there.

Papillons Object-Oriented Sketch

For example, Fabien Artal plugged in the Sonia Audio Library and made this field of reactive objects:

Fabien Artal's Processing Sketch Fabien Artal's Processing Sketch

Considering that the students are often building complex models, each with its own transforms and heirarchies, and often building hundreds of them — it seemed time to better enforce Object-Oriented philosophy in our code. It took a while, and I still haven’t found the time to build a decent course on Object-Oriented programming (let alone a course on arrays!), but everyone took to objects pretty well. Next year I’ll have to be more serious about this subject.

Sylvain Boutroue simulating Java research

Don’t get me wrong, I still believe in old skool BASIC-style procedural fiddling around, but indeed you really need Object logic when you’re building complex projects. Although, I do have to say that with Director we never really had that problem because some basic Object-Oriented principles are built into the interface itself, and allow you to program like a sloppy pig (even by hand), all the while building kick-ass monster projects. You just can’t do that in Processing. It’s difficult to scale. So I’m starting to see something of Toxi’s argument : there might indeed be something missing in the Processing environment, at least in this arena.

Nicolas Moncasi, Marie Noël Sylvain Boutroue Sylvain Boutroue's Processing Sketch Pavel Smetana

One of the nice suprises was having an outside student, Julien Pauthier, join us from Mulhouse where he studies with Jeff Guess. Jeff has been teaching code for a while and we met up recently to discuss expanding the code|art network, building collective workshops, sharing teachers+students, and exchanging code online. I have always made it a point of inviting students from other schools to participate in my workshops, whether in Aix-en-Provence or elsewhere. I also try to bring a few Aix students with me to each workshop I teach elsewhere. This works very well and has built a nice network of people working in France. Perhaps it would be interesting to enlarge that network, and connect it up to other networks working throughout Europe. There would probably even be funding for such an initiative. Perhaps some people on Processing Blogs could chime in on this idea?

Julien Pauthier

Julien Pauthier's Processing Sketch Julien Pauthier's Processing Sketch