Graphics Reference
In-Depth Information
9.3
Procedural Turbulence
Ultimately, there is a practical limit to the resolution a fluid simulator can
run at. For an n
n grid, we obviously require O ( n 3 ) memory—and the
hidden constant is a bit hefty, as you can see when you add up all the addi-
tional arrays needed for time integration, pressure solves, etc. Furthermore,
if we keep Δ t proportional to Δ x as recommended, and use the MICCG(0)
linear solver developed in Chapter 4 which requires O ( n ) iterations to
converge, we end up with the total cost of a simulation scaling like O ( n 4 . 5 ).
That puts a pretty severe bottleneck on going to higher resolution.
However, real turbulence can show features—vortices—on a huge range
of length scales. As a point of reference, for example, turbulence in the
atmosphere can span from kilometers down to millimeters. There simply is
no practical way to directly simulate with a grid capable of capturing that
range ( n
×
n
×
10 5 ). However, the turbulent features below a certain length
scale tend to lose structure and become isotropic and easily described sta-
tistically: if you filter out the large-scale motion of the fluid and zoom in
on just the small-scale turbulence, any region looks pretty much like any
other region. This is our saving grace. Below the scale of the actual simu-
lation, we can add in procedural models of turbulent velocity fields to fake
additional detail. For turbulent smoke, instead of tracking the grid-level
smoke concentration field, we instead trace and render millions of marker
particles running through this enhanced velocity field (see Rasmussen et
al. [Rasmussen et al. 03], for example).
We now take a look at two approaches to generating the required pro-
cedural velocity fields. The critical requirements are allowing control over
the spectrum of the velocity (i.e., looking at the velocity variation over
different length-scales) and making sure the velocity is still divergence-free.
9.3.1
Fourier Synthesis
One of the simpler methods for generating plausible turbulent velocity fields
is to do it in Fourier space. If we take the Fourier transform of a velocity
field u ( x ), which we'll assume is periodic over a cube of side length L ,we
can write it as
u ijk e 12 π ( ix + jy + kz ) /L .
u ( x )=
i,j,k = −∞
Here we're using
1 as a symbol to denote an imaginary number, instead
of the more common i or j since this topic uses i and j as indices. This
Fourier series is also obviously using complex exponentials instead of sines
Search WWH ::




Custom Search