|
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
bizarre and alien.
Artificial Intelligence can take
many forms, not just the Robby the Robot kind. This was the first
time I had seen a piece 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 rewriting 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, feedback neural networks, and differential equations, but
the old Cartesian 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. Escher
(or is it Esher?) 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.
|