I’ve had a lot of verbal reactions and discussions in the last few days over my novel ‘application’ that generates three-dimensional abstract imagery. The most prominent design feature I wanted to see was the generation of something I once had a ‘monopoly’ on in terms of tutorials; the so-called ‘tech circles’.
You can’t escape them in abstract art. Seemingly randomly generated, these circles feature all sorts of strange cutouts and details, sometimes text or small illustrations, and always layered. My whole adventure into OpenGL began a month ago, when I saw a movie; Ghost in the Shell 2. It had this completely cool way to visualize a computer-(more specifically, a firewall)’s running state. I won’t go into detail as to how it looks, I’d prefer you look at a screenshot (it’s actually FAR better in the movie, do check it out, after the ‘Dollhouse’ scene)
As you can see, it’s quite aesthetically pleasing. Stop to consider how this would look if this were to visualize, say, network activity, or my idea, firewall logs. This would be almost like iPulse in 3d (and ohh, do I love iPulse!). So, just blurting out in all honesty, I thought that was so horny, I just had to learn OpenGL and do something like this. I immediately ran into the obvious ‘it’s harder than it looks’, then entered the ‘ah, do I really have to do this with OpenGL?’ phase, and eventually settled with just picking up a good book. I made a horrible first mockup with a kqueue for checking the logs and a custom view. It wasn’t that great. So, I abandoned it for a while, working on my prime projects (Praetorian, iSight Expert) and well, messed with OpenGL in my spare time. Looked into Python application, the Cocoa / Quartz side of things, and got more interested. I am now considering to pick up a book on Quartz programming.
Back on topic; it’s been creating an array of objects and randomly assigning attribute values that brought me to these landscapes. After a while, you feel like testing your hardware and you just expand the array to see how far you can go. Fun ensued.
Now, having made my first real worthy GL-powered app, I want to expand on it’s functionality. I am doing expirimental hi-res (2000 px high and above) rendering, and trying to get the whole thing a bit more modular to make things like an external rendering application possible, and I want it’s product to be a more complete graphic. I could change some objects at random into letters and “+” marks, but that doesn’t really cut it for me (besides, they get swamped by the countless other objects or gruesomely distorted, which I can help but refuse to). In any case, I’ve tried to get more control on my produce, and it’s getting there… I now have the ability to magically dissolve a ‘room’.
The text and few ’2d’ additions, as you can see, have been added with very sophisticated scripts. No, actually, it’s just a PNG with some lines and dots on it with text being changed per rendered frame. It will be quite trivial to just build a library of 2d graphics that this program can just apply on demand, but I am really looking for something that will generate me some 2d – like those tech circles. I hope I’ll round up a solution for that in the next month. Any thoughts are welcome, as usual.