CS 348B Final Project

Modeling the Formation of Sand Dunes and Ripple Patterns by Aeolian Transport





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)]



          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))




                   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:






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.








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’.




Finally, here is the rib file.




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