CS 348B Final Project
Modeling the Formation of Sand Dunes and
Ripple Patterns by Aeolian Transport
Goal:
Generating
realistic images of sand dunes by modeling the motion of sand under the
influence of wind.
The following
images should serve as benchmarks.
Real Images:
|
|
|
Generating the data:
The
model for generation of sand dunes and wind ripples is composed of two
processes at different scales:
-
on a smaller scale,
we have the generation of ripple patterns
-
on a larger
scale, the formation of actual sand dunes takes place.
Both
ripple patterns and sand dunes are created by similar processes of aeolian transport
of sand. These processes have 3 distinct components:
-�� Saltation: When under strong winds sand
particles are pushed into each other, the collision causes some of the
particles to be projected into the air, where they are accelerated by the wind.
They will eventually collide with other sand particles, continuing the cycle.
-�� Suspension: Suspension of lighter sand
particles in the air happens on a more global scale, hence it won�t be
addressed here.
-
Creep: Rolling
particles of sand, as well as relaxation due to gravity both contribute the
process of creeping.
In
general, the data gets initialized in a randomized state, and then saltation
and creep iterations are performed until a stable state is reached.
The
model for wind ripples is as follows:
Saltation
Step:
��������� H n'(x,y ) = H n(x,y) -q
��������� H n'(x + L(H n(x,y)),y) = H n(x +L(H
n(x,y)),y) +q
Creep
Step:
���������������������������� H n+1(x,y)= H n'(x,y) + D[1/6 ∑
Hn'(x,y) + 1/12 ∑ Hn'(x,y) � Hn'(x,y)]
��������� where
��������� the first summation of the creep step
is that of all immediate neighbors,
��������� while the second summation is that of
second neighbors.
L = L0 + b * H n(x,y),
������������������ L0 is a control parameter
proportional to wind force,
������������������ b is the average wind
velocity of the grain in flight,
������������������ q is thetransferred height of
the grain,
������������������ D is the rate of relaxation
due to gravity.
For
Sand Dunes, the steps are very similar, except that:
������������������
������������������ L = L0- b tanh(divergence(H
n(x,y))
����������������������������
������������������ And
������������������ q = q0 + b� tanh(divergence(H
n(x,y))
������������������ where q0 and b� are
constants.
These
changes are due to the different scale: With a larger scale, it matters whether
the saltation occurs on windward or lee side of the hill, also,
the
chance of grains being projected out due to collisions is much larger in the
sand dune model.�������
���������
Some of the Data Generated for the
Dunes:
|
|
|
|
|
Some of the Data Generated for the
Ripple Patterns:
|
|
|
|
|
.
Rendering:
The
sand dune data is used by a modified height map, while the ripple patterns are added
as bump maps to the surface. This provides an efficient means of coping with
the different scales. The modified height map can generate ripple pattern and
sand dune data.
Results:
|
|
|
Discussion:
I�m
quite satisfied with some of the results obtained, with a bit of imagination, the
first result shown could be mistaken for a photograph; though the dunes are a
bit to �strong� and defined.� The second
image above clearly shows a strong ripple pattern somewhat similar to the
second �benchmark picture�, while the soft undulation of the underlying dune is
barely noticeable. The black area in the lower left is due to the fact that I
was rendering with direct lighting only.
The
dune and ripple patterns algorithms need a large number of iterations to arrive
at �stable states�, easily taking several minutes
to
complete. This becomes problematic since the effects of changes to some of the
constants and parameters are often hard to predict. In fact, tweaking the
constants until desirable results are obtained proved to be a major
undertaking.
Furthermore,
the iterations sometimes do not end up in a stable state at all, which seems to
be inherent to the model. Also, some resulst exhibit a certain blockiness that
seems to persist even when additional iterations are performed. This is
slightly visible in the third image above.
Future Work: (aka. What I would have
done, given more time�)
The
sand dunes and ripple patterns generated tend to exhibit very clearly defined
features, which I consider one of the telltale signs that these are not real
pictures. Smoothing and a little random noise could be applied to soften the
overall appearance perhaps make for nicer results, though this would move away
from trying to �model� the process and aim to �look subjectively real�.
Code:
Finally,
here is the rib file.
References:
H. Nishimore and N. Ouchi, Formation of Ripple Patterns and Dunes by
Wind-Blown Sand. (Physical Review
Letters Vol.71 N.1 1993.)
K. Onoue and T. Nishita, A Method for Modeling and Rendering Dunes
with Wind-Ripples.
R.A. Bagnold, The Physics of Blown Sand and Desert Dunes. (Mathuen, London, 1941.)
K. Pye and H Tsoar, Aeolian Sand and Sand Dunes. (Unwin Hyman, London, 1990.)
Student:��� Ruwen Henning Hess
���������������������������� rhess@stanford.edu