Development was slow going this week. It started with the above test: controlling 3D shapes in Quartz Composer, by passing variables from Max/MSP (MaxForLive) via OSC. I was a little disappointed that the built in lighting patch for Quartz didn’t render shadows all that well, and so I set off on a snowballing series of tangents…
So, with the help of Kineme’s GL Tools, Quartz can create GLSL shaders using OpenGL. Obviously, this needs knowledge of the OpenGL language to be able to work with. OpenGL is based on C++, so that’s pretty important to know as well. And of course, when using C++, using an IDE like Xcode will come in handy. Unfortunately, all of these are completely foreign to me. There goes any progress for a while.
I have found some of the Wikibooks to be a helpful starting place, and others are close to being a complete reference. I stumbled across them when learning Blender last week and they popped up again when looking for information on OpenGL and C. There’s absolutely no point in going into the details of where I am at learning code at the moment. Suffice to say, it’s going to be a while. I’ll try and get back to the interesting stuff for this post…
The super-talented visualist, Memo Atken uses Quartz in combination with VDMX (a popular and powerful combination that I haven’t considered only because I forked out for Max/MSP already). His OpenGL-based quad warping technique is something that also appeared during my research. I had in fact stumbled across this a couple of times before, however I wasn’t using Quartz at the time and never tried it out.
Although his documentation shows Quartz being controlled by VDMX, it works in exactly the same way when handled by Max/MSP. It’s a hugely handy utility, as it makes mapping to a less than perfect surface very simple. It also opens the door to using multiple instances of the patch and mapping any number of elements to individual sections within a surface.
One of the advantages of using VDMX is that you’re able to import Quartz patches directly into the software to blend, filter and warp to your hearts content. If only Max/MSP could do that. What’s that? It can? I’d like to welcome to the party, DIPS…
Clearly there’s something very wrong with the frame rate of the Quartz file in the video above, but at this stage I’m not too concerned. Far more important is that I’m now able to control these patches within Max/MSP, including being able to use some of the more powerful filtering methods found there.
Once again, DIPS uses OpenGL to bring some really spiffy things into Max/MSP, namely realtime image processing. With an ever-growing list of patches that are using the OpenGL language, I’m having trouble finding an excuse not to get my hands dirty with it. In the past, I’ve always hacked together the code of others (which really is one of the best ways to learn), but I think this project now requires me to go a little deeper under the hood.