Fractal GUI Help Page



Version

First of all: This is free software - see License.
Second: This is a beta version! Please do not expect it to be free of bugs...
Help me to improve the software by reporting bugs, possible improvements, etc. to: <rammelt@cs.tu-berlin.de>.



Rendering / Saving Images

This part describes what are the minimum steps to create an image:
Start
                          calculation
Start rendering. A progress bar will appear on the image display. When calculation finished succesfully the progress bar will disappear and the rendered image will be shown instead.
Automatic
                          start calculation Automatically restart calculation if a parameter has been changed (only restarts the relevant parts of the calculation while the start button Start
                          calculation always restarts the whole calculation).
Abort
                          calculation
Abort rendering (only active while rendering) - hopefully you do not need this too often... :-)
Save
                          image
Save the image. Supported formats are: PNG (supports transparency), JPEG (doesn't support transparancy)



Just a Brief Introduction


Normally the following series is evaluated (theoretically for an infinite number of steps):

Z = Z * Z + C

in Mandelbrot fractals C is the point which should be evaluated. For 2D fractals we would use complex numbers and set Creal = x and Cimag = y, for 3D fractals we are using Quaternions and set Cx = x, Cy = y, Cz = z, and Ct = t where I denote the 4 components of a Quaternion C by Cx, Cy, Cz, and Ct and t is a fixed value - we just don't have a 4th component in 3D space. Z is set to the origin point (0, 0, 0, 0).
in Julia fractals Z is used to represent the coordinate which should be evaluated (Zx = x, Zy = y, Zz = z, and Zt = t) and C is set to a value C0 which could be choosen differently but is fixed for one fractal. If C0 is taken from the Mandelbrot set then we will get an non-empty Julia set (I will explain how to decide for a given coordinate to be in the set of the fractal next). Especially interesting fractals emerging for values of C0 coming from the border areas of the corresponding Mandelbrot fractal (an especially boring fractal could be created by choosing  C0 = (0,0,0,0) which just creates a sphere).

The series Z = Z * Z + C shows two different outcomes for different numbers (which is used to decide wether the corresponding coordinate belongs to the fractal or not):
  1. The distance of Z to the origin (0,0,0,0) could grow infinitely. If this is the case the coordinate (represented by the C in Mandelbrot fractals, by the initial Z in Julia fractals) do not belong to the Mandelbrot / Julia set (looesely speaking: it does not belong to the fractal)
  2. Z converges or it oscillates. Then the coordinate belongs to the fractal set.
Of course it is infeasible to evaluate the series Z = Z * Z + C for an infinite number of steps. Instead we evaluate it for a given max. number of steps called max-iter. If after max-iter steps the distance Z to the origin point (0,0,0,0) has not grown over the value given by another parameter called bail-out, then the associated coordinate is assumed to be part of the fractal, otherwise we break the iteration as soon as the distance has grown over max-iter. The "correct" value for the bail-out parameter is 2 because one could show that whenever the distance grows over 2 it will grow further up to infinity, i.e. such a value could not belong to the fractal. Nevertheless a bail-out < 2 could make sense to speed up the calculation. Furthermore if we manipulate the calculation (we will see next how to do that) the "correct" bail-out value could be different (in general it is unkown).

Since version V3.0 I am using distance estimation (DE) for all types of fractals. For every point, which does not belong to the fractal, a distance to the next "solid" point could be estimated. Although we do not know in which direction that point is located, we know that we could move at least this distance (in any direction) before we have to check again. This technic is called "ray marching". DE also makes it possible to smooth the surface by counting points whithin a given distance around the fractal also as solid points. Doing so, the bail-out parameter is not used anymore because the Z-value for a point within a given distance could well move out of the range defined by bail-out.

In order to get some iteresting results it is possible to do some changes to the normal calculation scheme:
  1. Change the series, e.g. evaluate the series C(Z*Z) instead of Z = Z * Z + C
  2. Use wrong operators e.g. for taking the sum and/or the product of two Quaternions, e.g. instead of the correct  multiplication formula for Quaternions A and B:
    A * B = (Ax*Bx - Ay*By - Az*Bz - At*Bt,
             Ax*By + Ay*Bx + Az*Bt - At*Bz,
             Ax*Bz + Az*Bx + At*By - Ay*Bt,
             Ax*Bt + At*Bx + Ay*Bz - Az*By)
    we could use something like this:
    A * B = ((Ax*Bx  -  Ay*By)4 -  Az*Bz   -  At*Bt,
              Ax*By  + (Ay*Bx   +  Az*Bt)4 -  At*Bz,
              Ax*Bz  +  Az*Bx   + (At*By   -  Ay*Bt)4,
             (Ax*Bt  -  Az*By)4 +  At*Bx   +  Ay*Bz)
The fractal generator supports all these types of manipulations (where the operators and series formulas could be taken from perdefined lists only)



Fractal Parameters

This section does not explain the parameters in more detail. For more information about 3D-Fractals please have a look the chacpter "Just a Brief Introduction" or at <http://user.cs.tu-berlin.de/~rammelt/fractal/> (in german).

Fractal-Type

Here you can choose



C0
This is the initial value of C for Julia fractals (for Mandelbrot fractals only the t-part of C0 is used, because x, y and z are used for the coordinates of each point)
x
first component of the quaternion C0 (used as the x-coordinate)
y
second component of the quaternion C0 (used as the y-coordinate)
z
third component of the quaternion C0 (used as the z-coordinate)
t fourth component of the quaternion C0




Z0
This is the initial value of Z for Mandelbrot fractals - normally this is (0,0,0,0), but could be choosen differently in this application (for Julia fractals only the t-part of Z0 is used, because x, y and z are used for the coordinates of each point)
x
first component of the quaternion C0 (used as the x-coordinate)
y
second component of the quaternion C0 (used as the y-coordinate)
z
third component of the quaternion C0 (used as the z-coordinate)
t fourth component of the quaternion C0


Iterations

max-iter
Max. number of iterations. The higher this value is the more structurized the fractal will be.


max-iter = 8
max-iter = 16
bail-out
Bail-out parameter. Shown below is the same Julia fractal as before with a bail-out value of 1.1 instead of 2.0:

bail-out Smoothing distance. All points within this distance to the real Mandelbrot/Julia set assumed to belong to the fractal too. In the picture below, only the bright red areas really belonging to the julia-set.
Distance estimation


Color
Color of the fractal (only if "uniform color" or "glowing" is choosen) and sourrounding walls.
red
Red channel
green
Green channel
blue
Blue channel
alpha Alpha channel (0 means background is fully transparent, 255 means color is fully opaque)


Rotation
Define a view point used to rotate the whole object (applied before scanning).
x
x-coordinate
y
y-coordinate
z
z-coordinate


Translation
Define the translation of the whole object (applied before scanning).
x
x-coordinate
y
y-coordinate
z
z-coordinate


Scan Parameters

Search Space
Define the location and size of a virtual box which is the space to search for the fractal...
x
left side of the search space
y
top side of the search space
z
front side of the search space
width width of the search space
height height of the search space
depth depth of the search space


Resolution
width number of horizontal pixels (columns)
height number of vertical pixels (rows)
depth (virtual) number of pixels along the z-axis, which has an influence on the color resultion (generally speaking this should be higher than the previous two values)


Scan Method
Normally (distance <= 0) the viewer is assumed to be infinetly far away, i.e. a parallel-perspective is used. Using a distance > 0 creates an diminishing point perspective.
Direct rendering
The object is not scanned into memory.
Low resolution scan
A low resolution scan is made used to speed up ray-marching
Full scan
A full-resolution scan is done (this one is used internaly by the previous method)
Naive
Also a full-resolution scan which doesn't use distance estimation nor normal estimation


Max Nesting Levels
For naive scan only.
distance
Defines how many surface levels could be scanned in each direction (x, y and z).


Normal Precision
For naive scan only.
distance
Number of sub-divsions done to estimate normals (the higher this value the more precise the normals will be).


Rendering Parameters

View-Point
Define the view point here. A little box on the right side of the image display shows the direction.
x
x-coordinate
y
y-coordinate
z
z-coordinate


Distance
Normally (distance <= 0) the viewer is assumed to be infinetly far away, i.e. a parallel-perspective is used. Using a distance > 0 creates an diminishing point perspective.
distance
x-coordinate


Light-Point
Define the coordinates of the (single) source of light here. A little box on the bottom side of the image display shows the direction. The light is assumed to be infinetly far away, i.e. rays of light are all in parallel.
x
x-coordinate
y
y-coordinate
z
z-coordinate


Ambient Light
ambient light
Amount of ambient light (always coming from the direction of the viewer).


Light Color
Color of lights (directed and ambient light).
red
Red channel
green
Green channel
blue
Blue channel
alpha Alpha channel (0 means background is fully transparent, 255 means color is fully opaque)


Environment Images
Images on the six side of a box that virtually sourrounds the scene
Front
Image on the front side
Left
Image on the left side
Upper
Image on the top side
Back
Image on the back side
Right
Image on the right side
Lower
Image on the bottom side



Filter Parameters

Background Image

Background
Image replacing transparent areas of the image.


Background
Background color.
red
Red channel
green
Green channel
blue
Blue channel
alpha Alpha channel (0 means background is fully transparent, 255 means color is fully opaque)


HSB-Filter
Color filter
hue
Hue offset
saturation
Saturation factor
brightness
Brightness factor


Focus-Depth-Filter
Parameters for a filter, which blurs all points depending on their distance to a z-coordinate of highest sharpness.
blur-radius
Max. blur radius
relative z-position of
                        highest sharpness
Relative z-position (0 = front, 1 = back) of the highest sharpness


Color-Shift-Filter
Parameters for a filter, which "shifts" colors of all points depeneding on their distance (given by their z-coordinates). This filter could be used to create the illusion of very big objects.
blue-shift
Color-shift coefficient (0 = no color shift, 1 = max. color shift)
brightness-shift
Brightness-shift coefficient (0 = no brightness shift, 1 = max. brightness shift)


View Parameters

Zoom
zoom
Zoom factor. This doesn't affect the actual size of the image (e.g. if it is saved on disk). It just effects the size of the displayed image!


License

Copyright (c) 2009, Patrick Rammelt
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.