4D Distributed Julia Set Raytracer

This page is NetScape de-hanced

I've been goofing around with fractals since I was about 14. Since I eventually received both degrees in Pure Math and Computer Science, I guess I'm obligated to continue. This particular raytracer has been evolving since my junior year at the University of Washington. It has run under Ultrix, AIX and OSF/1, but currently only runs under NEXTSTEP. Eventually, it will run under NeXT's OpenStep and/or Portable Distributed Objects as well (on HP/UX, OSF/1, Solaris and NT, at least).

At first, this raytracer would only compute a 3d cross-section of a 4d julia set from a hard coded view point using a single machine. Currently, it will compute an animation of an arbitrary rotation of the 3d cross-section, and allow for rotations in 4d.

[Note: put in a reference to the papers by Norton and that other guy from Siggraph]



Long Ago


Here are few tiffs from a couple of the latest versions. This first shot is from an older version of the engine that didn't deal so well with high contrast edges.
[Old Julia]

In a newer version, I've included an adaptive random ray casting algorithm that I cooked up on my own. Much smoother edges and still very fast. Obviously, it still needs improvement, but since this is one of those projects that doesn't make any money ...
[New Julia]




The raytracer allows me include clipping planes and coloring of the exposed basins.
This has one clipping plane. The black region around the colored basins is the area that is inside the cutoff potential for the outer surface, but not actually inside one of the basins. This has two clipping planes, the same one from the previous image and one rotated down 45 degrees about the x axis:
[clip 1] [clip 2]


Additionally, I can add what might be called 'stained-glass planes'. These planes don't clip the set, but rather take on an external coloring function. The function I'm currently using is the potential of the set converted into HSB. These planes can have arbitrary transparency.

In the scene below, I have a set with a clipping plane cutting of half of the set. As before, the basins of attraction within the set are colored, each with their own color. But now, there is a glass plane perpendicular to the view vector that is being colored via the potential function. As a special case, the interior of the set on a glass plane is currently being colored with a transparent gray. This is why the yellowish section changes color half way across -- the glass plane is intersecting the uncut portion of the set there.

[clip 3]


Movies


The raytracing engine also allows for parameterized values and will output a bunch of frames as the parameters change from start to finish. Here is a view of a julia set that has been clipped by a plane diagonally, and has had a stained-glass plane interted as well. The animation shows the image rotating 360 degrees.

       
two.mpg < 495424 > bytes

For those of you running NEXTSTEP, MPlay.app is a pretty decent MPEG player.