3D Fractals

Categories: Computer Graphics

Posted on January 29, 2017, 10:38 pm


The goal of my Bachelor Thesis was to develop an application for rendering 3D fractals in real time, also allowing the user to interact with them in many ways. Additionally, it should be possible to use the software, even with low computational power, but also at high resolutions.

Fractals are shapes, with a rough, complex and also fascinating surface. A glimpse in the nature reveals many different fractal shapes, such as romanesco. Romanesco is built up by a shape, resembling a triangle, on which again smaller triangles exist. This is one main characteristic of fractals, called self-similar. Self-similar means, that if small sub regions of the fractal shape are magnified, they’re looking either exactly the same or similar to the whole shape. This leads to the second main characteristic of a fractal: Their length is undefined. This means, that zooming to the edge or surface of a fractal results in getting new complex shapes and structures.

Such complex shapes can also be generated digitally using mathematical functions. Probably, the best known fractals are the 2D Mandelbrot and 2D Julia sets, which are created by iterating a the simple function z_{n+1}=z_{n}^{2}+c. Within this work, rendering these complex 3D shapes are achieved by using ray machting distance fields. Therefore, a function (distance field) must be given, which turns the shortest distance from each point in space into the described volume. Using the distance field, it is possible to march along a ray, until converging to the 3D fractal surface and thus to calculate the normals and shade it.

The software is written with the game engine Unity3D in C#. You can download the application and try it out (GPU supporting DirectX requiered). Obviously, 3 months aren’t enought time to develop a bug free piece of software, if such exist. So, I’m looking forward to hearing from you, if you detect any bugs. Feel free to contact me, if you want to get my Bachelor Thesis [GER].


Last modified on November 12, 2017, 2:18 pm