This shows a combination of an IFS (iterated function system) and a
particle system. In an IFS, points are attracted towards a fractal shape
by iterating the positions over a set of affine transformations. The
original algorithm starts with just one random point and plots its
current position over a series of randomized transformations. In this
example, I instead start out with a number of randomly distributed
particles, which are then given target positions by running the IFS
When the general shape has settled, one
additional iteration is performed every few seconds. It’s instructive to
see how particles are warped from one place on the fractal shape to a
completely different position.
The demo is implemented in Processing using processing.js. With 5000 particles moving around, performance depends on your browser and hardware. Unfortunately, PShape support is not yet complete in processing.js, which would probably help to speed this up.
As a first step towards a full-featured fluid simulator, I am
currently working on smoke simulation, and now got something running for
the simplest case of smoke in an open volume, i.e., without any solid
objects or boundaries. The attached video shows 10 seconds of simulation
with a small heat / velocity source at the bottom left. Looks neat
The implementation follows the approach laid out in the SIGGRAPH 2007 Course Notes on Fluid Animation.
In brief, this is a Semi-Lagrangian advection scheme, running on a
128^3 grid. My current single-threaded CPU implementation is
ridiculously slow (about 4 frames / minute on my i7 Laptop), so I am
going to investigate parallelization, probably with OpenCL.
Only the ray marching volume shader utilizes the GPU so far.
A long-running side project has recently come to fruition: My master’s thesis in the realm of medical physics got accepted! You can find the full (German) text under the prosaic title “Vergleich von Volumenmodellen” in the publications section on this site. No surprise, it’s dealing with 3D graphics – I used the chance to have a peek at a few interesting problems around volume representations.
representations of three-dimensional objects fall into two broad
categories: surface models and volumetric models. Depending on the
application, one typically chooses one or the other. Triangles meshes,
for instances, allow for extremely fast visualization of surfaces on
modern PC hardware. In medical imaging and scientific visualization,
though, volumetric data is often prevalent.
Since many algorithms
are using either surfaces or volume data as input, it is often
necessary to convert between different representations to perform
desired operations on a data set. Mathematically, the task corresponds
to finding an implicit form for a parametric surface description, or
In this thesis, I am discussing the connections
between triangles meshes, and different volumetric shape
representations: binary voxel grids, discretized distance fields, and
tetrahedral lattices. Algorithms for volume visualization, conversion
between representations, and for making cuts and selections are
demonstrated. In the practical implementation, a focus was put on making
use of current GPU-based techniques to speed up not only visualization,
but also the geometric algorithms.
At Scanline VFX, we were doing a whole lot of CG water for the movie “Megalodon – Hai-Alarm auf Mallorca”. I leave it to you to rate the movie, but, hey: the project got me a credit on The Internet Movie Database. My part in this was the R&D on ocean water surface simulation.
I ended up doing a variation of the FFT-based approach
put forth by Jerry Tessendorf, and combined it with an implicit model
representation to allow additional modification of the ocean waves by
blended shapes. You can watch a short scene from the movie on YouTube
illustrating the method. Around 0:38, you can nicely see how the
simulated open water surface combines with the bulge of the shark-like
shape under water.
Some shots also used a real CFD simulation engine, which was separately developed at Scanline.
from the interesting work on the algorithms, it was very enlightening
to turn this into a 3ds Max plugin that could be used by the artists in
production. And the renderings they produced were nothing short of
Facial animation is, despite all advances on the technical front, still a challenge and a rewarding research subject. This might be the one-line summary of my PhD thesis, the outcome of my time at the Max-Planck-Institut für Informatik in Saarbrücken. In a few more words, I developed an anatomy-based modeling approach in conjunction with a physically-based animation system.