I played around with an interesting program called Evolvotron recently. The author of the program, Tim Day, summarizes it as…
an interactive “generative art” application for Linux to evolve images/textures/patterns/animations through an iterative process of random mutation and user-selection driven evolution. (This process is also often referred to as “evolutionary art” or “genetic art”.) If you like lava lamps, and still think the Mandelbrot set is cool, this could be the software for you.
If you don’t use Linux, don’t be discouraged. There is a port for Macs available on Sourceforge. Also, the predecessor to Evolvotron exists as a Java applet on the author’s website.
You get a palette of images, and you can control what the next “generation” of images looks like by adjusting the (pseudo-)randomization factors as well as choosing which images you want to hold in the pool.
Images are rendered on the fly from formulas. You can zoom, pan, distort, and infinitely scale the renderings right in the program. Renderings can be saved to PNGs, and you can also save the formulas to XML so you can reload/modify/examine them later.
A particularly curious aspect of the program is its ability to generate looping animations of images. I found this feature mesmerizing but I didn’t explore it much because it was so resource-hungry.
Zooming/panning/scaling the animations in real-time was pretty unfeasible due to the fact that any change forced a complete re-rendering of the entire palette. Though I reduced the palette to the lowest resolution and number of animations possible, it always took significantly longer to render than the still image palettes did.
To make about 600 frames of animation at 640×480 resolution required a considerable amount of processor time as well as all of my RAM (4GB) and maybe a GB or two of virtual memory. The virtual memory paging was clearly the limiting factor. I suspect that if I optimized my VM partition(s), it would have not been nearly as slow.
For kicks, I set up a 600-frame 1280×960 rendering to run overnight. It took about 12 hours all said, and nearly filled up my 11GB VM partition. I took the precaution of setting up an additional VM partition while it was rendering (not easy when it takes 30 seconds for a single keystroke to register).
(See video page to view in full-size HD player.)
The result was not really as impressive as I had hoped it would be, but it was a small milestone for my internet ego because it was the first HD video I uploaded to YouTube.
FYI, if you do use the animation feature of Evolvotron, ffmpeg is very handy for stitching the separate frames together into a video.