Game Development Reference
In-Depth Information
10.3.3 Dynamic System
In order to simulate dynamic deformations of an object, we need to make the posi-
tion coordinates a function of time. For linear elasticity, we can use the Lagrange
equations of motion, which involve kinematic and potential energies and have the
form
M ¨
u + D ˙
u + K u,
where the mass matrix M and the damping matrix D are constant (recall that
u = x
x 0 ). The stiffness matrix K is the same one that we computed in the pre-
vious section. To compute the displacement of the nodes of the tetrahedral mesh,
i.e., to isolate the vector of displacements u , we will need to invert the mass and
damping matrices. Although these matrices are sparse, their inverse may result
in a dense matrix that can require more memory storage and processing time. To
avoid this, we consider, in general, the damping matrix D to be a simple diagonal
matrix that can be written as μ I . Similarly, the mass matrix is diagonalized using
mass-lumping methods. There are a variety of methods to performmass lumping;
among the most frequently used, we found the following:
Dividing the total mass into the number of nodes and assigning the result
to each node.
Assuming that the density of the object is homogeneous, use the volume of
the tetrahedron to compute its mass. Then assign to each node the mass of
the tetrahedron divided by four.
Hence, the mass and damping matrices can be precomputed to accelerate the sim-
ulation.
To solve Equation (10.12), we transform it into a set of 2
×
3 n equations of
first derivatives and replace u = x
x 0 :
˙
v =
x,
M ˙
x 0 )+ f ext .
v =
D v
K ( x
There exists a variety of methods to solve this system of equations and find the
displacement vector x ; however, we recommend the implicit Euler's method. Al-
though other methods provide faster numerical resolutions, the implicit approach
is largely more robust. Euler's implicit resolution method can be stated as follows:
x ( t + h )= x ( t )+ hv ( t + h ) ,
(10.14)
M v ( t + h )= M v ( t )+ h M v ( t + h )
(10.15)