Jason Downer
 Music Audio Programming Contact Linux
Artwork
Brassy Pipes About ten years ago I stumbled upon a graphics programming textbook; halfway through there were some very nice color plates, three of which showed images generated by procedural evolution, the work of Karl Sims then at Thinking Machines.  They were wonderfully bizzare and alien. 

Artificial Intelligence can take many forms, not just the Robby the Robot kind. This was the first time I had seen a peice of software feedback onto itself and make adjustments, not according to some rule hard-coded inside itself, but because a human on the outside was arbitrarily decided what images looked interesting and which ones didn't.

"Interesting" is an impossible thing to define computationally, by the way.  The software has to examine what it is doing right and what it isn't, and then create new images.

A few years later I wrote a program to do the same thing for Windows 3.1 to create seamless wallpaper, and later added a bit here and there.  I was originally going to shareware it after rewritting it for Win95 and Linux. Today there are lots of programs that do similar things, even Gimp has one, so that's that.

A user is presented with four or more images, clicks on the one that has the most appeal, and is then presented with more images.  Only this time the new images are variations of the clicked image, and the type and amount of variation is determined by what set that first image apart from the others.

The general idea is to take an equation (though often much longer) like:

log(z * x + 0.4 * sin(2 * y - x))

where x and y are the vertical and horizontal coordinates of a pixel and z is the color plane (e.g. red=1,green=2,blue=3)  and then to produce variations such as:

log(x * x + 1.2 * sin(5.3 * z - y))
exp(x * y + 2 * cos(5.3 * z - y))
log(z * z * z - 9.6  * tanh(5.3 * z - y))

until something worthwhile pops up.  Crossbreeding genetic strains also produces good results, as does constraining probabilities of mutation for each type of term according to the statistics of a target population.  It's easier than it sounds, actually.

I've done work with evolving iterated fractal systems, feedbacking neural networks, and differential equations, but the old cartesean version still makes the best results.

Here's a few for you to enjoy.  All these tile well for use as desktop wallpaper or wrapped textures.

Click on any image to see a larger version (4 to 5 times bigger.)

The full sized version of the image above.  I'm a big fan of coppery textures.

A nice metallic sheen on this one.

Playing on a new, faster computer, I maxed out the genome complexity to see what the new box could do.  It was an impressive speed increase, and the program didn't crash!
This reminds me of an M. C. Esher (or is it Escher?) book I've got laying around here somewhere.

A stylized lotus flower
I was listening to some classic Nine Inch Nails when this one came about. Something must have subconciously slipped in
Alien hieroglyphics.

This is a very strange one.  There's a lot of detail that you can only see if you click to enlarge it.

A weird descendant of a copper texture I had.

A beveled lens. If you click on the enlargement of this image, you'll be able to see the very fine lines which echo the overall shape of this image.

Simple and inoffensive.

This has a sharp and pointy feel to it.  It reminds me of a sports car, but I don't know why.

Metal foil. 
Another "maxed out" image.  I remember this one image took 5 hours to render on my old machine, a real headache.

Snakeskin.

Tiny psychedelic lines.

Another metallic texture.
Some kind of beetle.

Steel Cliffs.

Rainbow checked pattern.
Fire and ice.

Tropical Fish?
Sandstone.
Flying musical notes? Or maybe fern leaves.
Some kind of circuit board, or mirrors reflecting light.
Dark and menacing.

These images and a few extra are here.

 
All materials © 2002-2008 Jason Downer