real-time physics simulations
download
The research paper describing, in detail, how the quanta-bond method of simulation works, as well as comparisons with other methods, is available below. For more concise information on implementing the algorithm, see the manual.
| Description | Version | Last change | Download |
|---|---|---|---|
| Research paper | v1.0 | October 29, 2011 | ODT / PDF |
media
|
|
|
|
manual
1. Overview
Performing a simulation requires a system definition and an appropriate
timestep size to perform the simulation on. In order to solve
the defined system, a hybrid-implicit integrator is used, allowing for
stiff, highly coupled systems to be solved with a guarantee of
stability. This manual briefly describes, at a high level, the
steps necessary to construct and run a simulation.
No source code which implements the quanta-bond method of simulation will
be released, however, the math necessary to construct an implementation
independently is documented here.
2. Defining the System
Each system being simulated is constructed in terms of quanta and
bonds.
Quanta are added to a system to represent a collection of
atoms. Quanta maintain values representing their mass, position,
velocity, and acting forces. Once the quanta are laid out in space,
they can be connected with bonds.
Bonds can behave like springs with one of two options: the reacting force of the
bond can grow linearly, or it can fall off inversely as the bond
stretches. A bond can connect exactly two quanta to each other, and is
defined to have a resting length, a bond force constant, and a dampening
coefficient. The resting length is the length at which the bond exhibits
no force on either of the connected quanta. The bond force constant is
the amount of force applied to the quanta as the bond is stretched.
The dampening coefficient is the amount of energy lost as the bond
applies force to the connected quanta. More rigid bodies will have higher
bond force constants, while softer bodies will be lower.
It is possible to modify a system while it is being simulated. By breaking
or forming bonds under various conditions, body deformation can be achieved.
Once construction of a system is complete, it is ready to be simulated.
3. Selecting a Timestep
Progressing the simulation of a system forward in time is done in iterations, called
timesteps. Selecting an appropriate timestep size can be
difficult. If the timestep is too large, the simulation won't be
accurate. If the timestep is too small, it'll take too long to progress
a simulation forward and the simulation won't be real-time. Some
experimentation is usually the best approach to selecting an appropriate
timestep.
The typical approach is to select a timestep smaller than the desired frame rate,
then progress the simulation multiple times per frame. For example, if
30 frames per second are desired, a timestep set at 1/90 of a second could be
used. Each frame would then progress the simulation 3 times per
frame. This method allows for a small timestep, improving the accuracy
of the simulation.
4. Performing the Simulation
This is a quick description of the equations necessary to actually perform the
simulation. The research paper
explains the differential equations used, and how the integrator to solve those
equations functions. In order to guarantee stability of the system, regardless
of stiffness, a hybrid-implicit method of integration was used (as opposed to an explicit
method such as Runge-Kutta).
The figure below represents a simple two quanta, one bond system and defines a set of
required variables.

There are two possible equations which define the reacing force a bond places on quanta
as it stretches. For bonds that apply a reacting force that grows linearly,
the following equation is used:

If the reacting force falls of inversely as the bond stretches, the following equation
is used:

The final equation solves the change in velocity for an individual quanta. The
change in velocity is computed for each quanta i. Each quanta may have
j other quanta bonded to it. The change in velocity needs to be found for
each quanta i, by taking into consideration the influence exerted on i by
all bonded quanta j. In the equation below, h represents the size
of the timestep:

Once the velocity change for each quanta i is known, the quanta's new acceleration
is known. With the new information, the new velocity and position of the quanta
can also be determined.
Because the quanta-bond method isn't fully-implicit, each quanta's change in velocity
can be solved in parallel with other quanta in the same system. This allows
for high-performance, high-accuracy simulations of both rigid and soft bodies.



