<< -- Image Evolve Applet -- HOME

This applet shows random images and lets you 'evolve' them by mutating and combining the images that you like.  This applet is under development, so right now you will only be able to create images similar to these (ie, gradients):

sample1 sample2 sample3 sample4 sample5

This applet requires Java version 1.3 or later.  If the applet does not load you may need to install Sun's Java Plugin first, and if JavaScript is disabled or there are other problems see the other ways to run the applet.

How to use the applet:

The applet is divided into panels that contain images: the current "generation", its "parents", and images that you have set aside (invisible panel until you place images in it).  Each panel has buttons like select all, undo/redo, etc that affect the panels individually.  For example, undo on the parents panel will only undo changes to that panel.  These controls should be fairly obvious and have tooltips.

The main buttons are "random", "mutate", "combine".  "Random" just puts random images into the main panel.  The other two take images that you have selected anywhere in the applet and mutates or crosses them to create new similar images.  The selected images are placed in the "parents" panel where they remain selected so you can simply click "mutate" or "combine" repeatedly to get new results.  Images can be selected by clicking (left-click) on them.

By selecting random images that have some characteristics you like and mutating them or combining them with other images, you can direct an 'evolution' of the images to create ones you like even better - at least that's the theory.  The images are generated from mathematical expressions that can have complicated interactoins so it is not always possible to get an image exactly the way you would like it, and some images are 'evolutionary dead ends' that can not be mutated or combined effectively with others because of their structure.

At the bottom there is an expression and a preview/last-selected image for examining the equations used to create the image.  You can modify or tweak an equation and click the arrow to generate the preview image.  The preview can be selected just like any other image and used in the mutate and combine operations.  Right-click or select an image to show it to the preview and expression area, but if the preview image is selected it will not be replaced until deselected.

If you want to keep an image for later you can select it and click the left arrow button for that panel.  This will place it in another panel that just stores images.  To keep an image permanently you can take a screen capture or copy the equation and later paste it into the expression panel.  However, I will be updating the features of the applet and cannot guarentee that the exact same image will be reproduced (I may need to tweak the implementations of some function).

Example Equations:

sample3.png
(abs (cos (abs (/ (+ y (abs (atan x))) (color (max 0.09 x) (atan y) (/ 0.07 (exp 0.94)))))))

If you come up with some images that you like, please send me the equations.

About:

This applet is based on Karl Sims' Artificial Evolution for Computer Graphics paper from 1991.  At that time the calculations could only be done on a supercomputer, but now your PC can do the math.  Check out the paper for examples of the kinds of images this applet should be able to produce once completed.

Check back in the next few days and weeks as I will be adding new features and image-generation functions that let you create images with textures in addition to these color gradients (and improving the web page).  If the applet performs too slowly, check back later as there are some performance improvements on the way (image caching and reducing overhead).

Other ways to run + Problems you might encounter:

You can click here to start the applet if JavaScript is disabled.
To run with Java Web Start, click either 800x600 or 600x480 for the initial size.

Java Web Start should be included in with the Java plug-in.  Sometime it is difficult to get newer version of Java working properly in the browser (Internet Explorer in particular) but the web start links above should work; they run outside of the browser but still securely like an applet.

This applet works on Mac OS X 10.1.5 and Windows ME and should work on any system with Java 1.3 or later (Linux, FreeBSD, etc).  On Windows you may run out of "Windows resources" due to flaws in the OS (this may show up as images that don't paint properly in this and other programs).  Some Windows systems may display ugly-looking fonts in the applet; I'm looking for a work-around for this problem.

If you have several processors in your computer, you must use Java version 1.4 or later in order to make use of the extra processors.

Currently Available Functions:

If you wish, you can construct or tweak the image expressions by hand.  Currently the functions that are supported are:

Arguments
Functions
0
x, y, 1.0 (or other value)
1
abs, exp, log, sin, cos, atan
2
+, -, *, /, mod, min, max, pow
3
color

The expressions are in LISP format: (function arg1 arg2...).  Most functions should be self-explanatory but some notes: pow is x^y, exp/log are base e, color evaluates each parameter as a different color channel (arg1 is red, arg2 is green, arg3 is blue).

Functions to add are: HSV color in addition to RGB, b&w and color noise, blur, warps, transforms, dissolves, iterative functions (fractals), and -- most importantly -- plugging an existing image in where any variable can go (x, y, 1.0, etc).