Home | Works | About

Fungi Banner

Fungi


Description

Fungi is an animated attractor renderer.

Inspired by, and in tribute to, the "Spore" work of (the late) "Dr." Richard Baily.
Visit the Image Savant site for samples of his work.
(or watch this movie)

Fungi Samples

Granted, right now these images are only vaguely reminiscent of Spore, but I thought they were interesting enough to post anyway.

Applets

Here's the first version and several variants...

Fungi01

Fungi01

Fungi02

Fungi02
with motion blur

Fungi03

Fungi03
true 3D with rotation

A nice, fast CPU is strongly recommended.

Algorithm

A number of control points are iterated through a set of functions. At each step of iteration the position of the control point is plotted. The "Z" value of the equation is then incremented each frame to produce the animation. In this manner each frame of the animation is like a "slice" through a larger volume.

In the applet above, the particular functions used are only "2.5D" not 3D. That is, the z value is used as part of the x and y equations, but z itself is not evaluated with similar equations. (as would be done with a 3-D Iterated Function System, for example)

The renderer itself is the same as used in the Scrawl applet -- see that page for further information on the sub-pixel anti-aliasing buffer.

Note: The "quality" of each frame of animation is directly related to how many control points and iterations are specified. The applets above use what I'd consider the bare minimum number in order to reduce calculations and preserve animation frame rate. The samples below were rendered at a little better quality.

Samples

Also see the Fungi Gallery for higher quality images of a variety of different attractors rendered with the "real" Fungi renderer.

480x480 61k

480x480 78k

480x480 85k

480x480 86k

480x480 96k

480x480 68k

800x600 112k

800x600 95k

800x600 89k

2.5D colored
mpeg video
2 seconds
352x240 336k

first true 3D
mpeg video
5 seconds
352x240 979k

more 3D
(y rotation added to illustrate structure)
mpeg video
3.5 seconds
352x240 631k

Further Work

This sort of system lends itself to all sorts of exploration. There are zillions of possible images given the existing function, but obviously there are a wide variety of suitable functions to play with, each with its own wide variety of output.

Mapping hue, saturation and/or brightness by velocity, change in velocity, direction, change in direction, et cetera, or by assigning particular color values to each individual control point, allows for colored images to be generated.

Gamma-correcting the intensity histogram (that is, how many times a control point lands on any given pixel) is a useful addition. What tends to happen with attractors is that certain points on the attractor are plotted far more frequently than others, so there is a non-linear scattering of intensity values. By applying some fractional exponent to these intensity values, and then using that to adjust the screen output accordingly, more of the fine details of the attractor become visible. (the desirability of this step depends to a large degree on the density patterns of the particular attractor)

Render 3-D particles. Instead of slicing a 2D plane out of a 2.5D or 3D volume and incrementing z each frame, project onto the 2D screen a 3D volume that is clipped out of a larger 3.5D or 4D hyper-volume and increment w each frame. This is what currently occupies my time while exploring this system.

 

Creative Commons License

© 2006 Dave Bollinger