Not logged in, Join Here! or Log In Below:  
News Articles Search    

Submitted by Morgan McGuire, posted on February 02, 2001

Image Description, by Morgan McGuire

Here are four images created by Evolver, an image/animation generating program I recently finished. Evolver uses genetic algorithms evolve combinations programs in an image processing language. Images, Java source code, and documentation at

The source contains nice implementations of common effects like Gaussian blur, particle system, zoom, rotation, distortion, environment mapping, and edge filter, as well as an entire interpretted programming language framework and genetic algorithm implementation. The paper explains how it works in detail.


Image of the Day Gallery


Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.
Joe Houston

February 02, 2001, 01:22 PM


David Olsson

February 02, 2001, 01:35 PM

Very Cool. Especially the upper left image.
Does it support volumetric textures also ?


February 02, 2001, 01:51 PM

Of course you know I think this is awesome :)

I was just thinking the other day that you could probably get some more neat effects by having forward and inverse Fourier transform filters. Is that too slow for real-time?



February 02, 2001, 02:48 PM

Very nice. The upper-left image is sweet, and the lower-right one kinda reminds me of Final Fantasy VIII. I'll make it a point to look at the source code.


February 02, 2001, 03:32 PM

The lower right pic reminds me of something... hurm what was it again... I believe it did involve some alcoholic substance... hurm... :-)


February 02, 2001, 03:46 PM

I've always wanted to do something like Karl Sims' work, and I'm really
glad to see someone else doing something neat with it...

Not that you need any more complexity (the images in your gallery
are spectacular and really diverse as well), but if you're into
procedural graphics, Perlin noise is a fun primitive to play around
with and it scales up to high complexity very easily.
Also, it's not hard to make it time-variant (just use 3d perlin noise
with the 3rd dimension being time), and use any of your
distortion/translation/effects to alter x, y and z. I might try it
myself, on second thought :)

Anyways, it looks like a really solid project.


Johan Wallström

February 02, 2001, 04:20 PM

The bottom right image looks like a flippergame... At least in combiniation with Propholy's substances...


February 02, 2001, 07:56 PM

Very nice stuff, especially for ambient backgrounbds and screensavers.

I'm guessing you can have translucent mirroring liquid surfaces of some kind, and animate them? :)

You have quite a mix in there. What do you plan to use it for?



February 02, 2001, 08:26 PM

Another nice primitive is voroni diagrams.

Anyway, instead of fourier, you'll probably find a lot of
readily available, already-optimized 2D discrete cosine
transform code on the web, which might be fast enough for
real time on modern CPUs. Both (M)JPEG and MPEG use the
2D DCT as their frequency-domain transform.


February 02, 2001, 08:57 PM



February 02, 2001, 09:08 PM

"Anyway, instead of fourier, you'll probably find a lot of readily available, already-optimized 2D discrete cosine transform code on the web"

Does DCT give you real output (as opposed to the complex output of Fourier transform)? That seems like it would be better for storing it as an image anyway.



February 02, 2001, 11:03 PM

DCT sucks ass for anything that isn't tiled compression :)

DCT = DFT with the ends cut off :)


February 02, 2001, 11:20 PM

Sims ran his in 3D as well as 2D to generate volume textures. I didn't do this with evolver, but it is a pretty simple matter of adding another dimension. I considered doing this to work with Max's cool volume texture->2D texture code. Procedural textures for 2D are cool because they provide infinite resolution, but 3D is where they really shine. It's just not practical to store volume textures otherwise.

DCT is an FFT where you concatenate the input with its mirror image. The output is all real. The goal of doing this is to eliminate the high frequency produced by tiling an image where the top/bottom and left/right don't blend smoothly.

It is hard to get FFT's implemented very efficiently; at 256x256 you can expect to wait about half a second. MPEG and JPEG take DCTs of 8x8 squares, which is much faster. Most of the FFT's I've worked with looked pretty boring (like star bursts), but combining IFFT's in there would certainly produce interesting results by filtering in the frequency diagrams. The Voroni diagrams are a good idea as well; I've been impressed by some previous IOTD's using them.

Evolver can also animate in response to frequency output-- I almost made it into a WinAMP plugin but gave up since I would have had to port all of the Java code to C++. Anybody who wants to, go ahead; I'd love to see it. Thanks for all the nice comments, folks.



February 03, 2001, 06:04 PM

Never seen hackers?

("Cerial Killer" says it after "Crash Override" (aka Zero Cool) has descovered the worm in "The Plauge"'s computer system).

Albert - the man who knows ;)

This thread contains 14 messages.
Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.