Title: Static vector fields
1Real Time Wind Simulation
Introduction In virtual reality wind simulation
is not getting much attention. Often wind is
simulated as a variable force, which in some
cases does not give a realistic touch. This
poster will introduce some methods to make the
simulation better, even at a low costs.
Functionbased vector fields The use of vector
fields results in a quick data gathering but
when it comes to a high level of details the
memory consumption could be huge. Functions are a
cheaper way to handle deflection fields. This
gives us the opportunity to let the function
depend on several inputs e.g. position,
direction, mass etc. The problem, in this case
the particle path, is solved as a stepwise
differential equation, which makes it possible to
make real time interaction by moving the object
or adding objects. Combined with the use of
multiple vector fields, particles could be
affected by more than one object. A great
advantage of functionbased fields is the low cost
of memory and processor. Even for large number of
objects/particles the method is pretty fast.
Wind direction and deflection To make the wind
simulation more realistic, it is not enough to
create a vector field for the direction of the
drag force. A vector field for the deflection is
also needed. An object or function which creates
wind should produce a vector field for the wind
direction. If the wind interferes with an object,
this object must create a deflection field to
lead the wind around itself. The strength of
deflection depends on the viscosity of the wind.
The two screen shots show the deflection of a
sphere bombarded with particles. By adding a new
sphere with its own deflection, the particles
will get affected by both spheres. When moving
the spheres the deflection will follow, which
gives a nice real time interaction.
Static vector fields Wind can be simulated using
vector fields. The specific vectors in the field
determine the direction and size of the wind
force applied to a given object or
particle. Static vector fields is stored in a 2D
matrix for a simple wind model. For a more
sophisticated simulation a 3D matrix is needed.
To get a good result, the resolution of the
vector fields must correspond to the resolution
of the given scene or object. To create a
turbulence around a
given center, the vector field
could look like the illustration.
Pressure cells
A more correct solution is to look at the wind
simulation in a more real life manner. By
dividing the scene into pressure cells it is
possible to let the nature of the pressure cells
solve the problem by themselves. A pressure cell
is defined to give away all its pressure to the
surrounding cells and receive pressure from
other cells. Kind of the way gas molecules
interact. If a cell is placed beside an object
the pressure released in that direction will
bounce back to the cell itself.
In a given scene the wind field will
automatically be generated when boundary limits
have been defined (High/low pressure). The
direction of the wind is now given by the
pressure difference between the pressure cells.
The pressure will be lead around any obstacles
which creates a nice deflection.
Conclusion For a better solution to our problem,
a combination of the methods is preferred.
Pressure cells give a nice look, but the update
rate is slow. When a good pressure chart is
generated the process can be stopped and combined
with the fast functionbased deflection field.
This will result in a floating interaction
between particles and movable objects. The
wind dynamics are pretty similar to general fluid
dynamics. This means that the shown methods will
work for fluid simulations such as water.
Creating an interactive river including obstacles
can easily be done. Using the pressure cell
method, the river particles will be more robust
for a bumpy river bed.
Multiple vector fields In real life wind can be
very complex. If only one vector field is used it
will be problematic to create fine wind details
for a large scene. If all details are stored in
only one vector field the resolution has to be
very high, resulting in a high memory
cost. Instead of storing all data in one vector
field it is more convenient to use multiple
vector fields. This will satisfy the wanted level
of details, and make it possible to attach or
translate a specific vector field. As an
example two fields can be mixed to create a
twister, one to make the spinning and the other
to create a drag towards the center.
When using a great number of pressure cells the
pressure exchange is pretty slow. This makes the
method difficult to use in real time. Although
the process can be speeded up when using Fourier
trans-formation, similar to the convolution
problem in image processing. For a static wind
field the method is very usable since the
pressure cells can be stopped and used as a
simple table of pressures.