# Patent

## Title
Method of simulating deformable object using geometrically motivated model

## Abstract

A method of stimulating a deformable object comprises modeling deformable elasticity for the object by defining an actual shape and a goal shape and pulling points in the goal shape towards corresponding points in the goal shape.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a divisional of the U.S. patent application, filed Dec. 18, 2009, having Ser. No. 12/642,193 which Issued May 29, 2012, having U.S. Pat. No. 8,190,412 which is a divisional application of the U.S. patent application, filed Feb. 3, 2006, having Ser. No. 11/346,299 which Issued Jan. 19, 2010, having U.S. Pat. No. 7,650,266 which claims benefit of United States provisional application filed May 9, 2005 having a Ser. No. 60/678,815. Each of the aforementioned related patent applications is herein incorporated by reference.


BACKGROUND OF THE INVENTION
1. Field of the Invention
Embodiments of the present invention relate generally to methods of simulating deformable objects. More particularly, embodiments of the invention relate to methods of simulating deformable objects using a geometrically motivated underlying model.
2. Description of Related Art
Realistic computer simulations of everyday objects such as clothing, plastics, elastic materials, and articulated joints can be extremely difficult to generate due to the complex ways in which these objects tend to deform in real life. Simulations of such “deformable objects” must generally take into account both complicated geometric features and material properties of the objects.
One common technique used to simulate deformable objects first creates a virtual model of an object (e.g., a mesh or point cloud) and then applies simulated physical forces such as tension, friction, gravity, pressure, etc., to the discrete points of the virtual model. Such virtual models have been used to represent a wide variety of materials under different conditions. For example, researchers have developed virtual models for clothing, plastic, rubber, and so on. In addition, researchers have also developed virtual models to simulate complex, unique behaviors of these objects, such as fracturing and melting.
Some of the more common approaches to simulating deformable objects involve finite difference methods, mass-spring systems, boundary element methods, finite element methods, and implicit surfaces and mesh-free particle systems.
Despite the number of methods that have been developed for simulating deformable objects, such methods are rarely incorporated into applications like computer games. For example, a few contemporary games incorporate cloth models with simple geometries; however, in general, most applications running on Personal Computers (PCs) or game consoles tend to model only rigid bodies or objects. Indeed, multiple rigid objects are sometimes combined to imitate the movement of a deformable object, but true deformable object simulations are rare.
One reason why deformable object simulations are rarely used in an application such as computer games is that stable simulations are generally too inefficient to satisfy the real-time demands of the application. For instance, conventional simulation methods often rely on implicit numerical integration to update the locations of discrete points in a virtual model. Implicit numerical integration techniques can provide a stable simulation, but they are too computationally expensive to process large and complicated physical models in realtime. Other physical modeling approaches rely on explicit numerical integration, which is more efficient, but it cannot guarantee a stable simulation.
The term “stability” here refers to a process's tendency to respond in a reasonable way to minor deviations in its inputs. For instance, implicit numerical integration techniques produce accurate simulations as various input parameters are varied, such as the mass of simulated points, the timestep of the integration, and so on. In contrast, explicit numerical integration techniques may produce simulations where the overall energy of a system erroneously increases by simply varying the timestep of the integration, the mass of simulated points, or the stiffness of a simulated object. As a result, explicit numerical integration techniques can produce highly unrealistic simulation results.
Various approaches have been developed to improve the efficiency of stable simulation techniques. For example, robust integration schemes with large timesteps and multi-resolution models have been developed. In addition, modal analysis approaches, which trade accuracy for efficiency, have also been developed. Furthermore, methods incorporating pre-computed state space dynamics and precomputed impulse response functions have also been used to improve the efficiency of simulations. Finally, dynamic models derived from global geometric deformations of solid primitives such as spheres, cylinders, cones, or super quadrics have also been introduced to improve the efficiency of stable simulation techniques.
FIG. 1 is a diagram illustrating one way in which instability arises in deformable object simulations using explicit numerical integration. In FIG. 1, a simple one dimensional deformable object is modeled as a mass-spring system. Like many physically motivated deformable object simulations, the mass-spring system relies on Newton's second law of motion. According to Newton's second law of motion, the acceleration of an object produced by a net force is directly proportional to the magnitude of the net force in the direction of the net force, and inversely proportional to the mass of the object. In deformable objects, at least part of the net force at any point is created by displacement of the point from an equilibrium position. The displacement of a point from its equilibrium position creates potential energy, i.e., “deformation energy”, causing the point to be pulled toward the equilibrium position.
Referring to FIG. 1A, a mass-spring system 100 comprises a spring 101 with a resting length l0, and two point masses 102 and 103 both having mass “m”. Point mass 102 is fixed at an origin and point mass 103 is located at x(t) at an initial time “t”. At initial time “t”, the amount of force on point mass 103 is defined by the spring equation f=−k(x(t)−l0), where “k” is the spring constant, or “stiffness”, of spring 101. Conceptually, the spring equation indicates that point mass 103 is pulled toward an equilibrium position where x=l0.
The location of point mass 103 is updated by a modified Euler integration scheme after a timestep “h”. According to the modified Euler integration scheme, the velocity “v” and position “x” of point mass 103 at time “t+h” are computed using the following equations (1) and (2):




  
    
      
        
          v
          ⁡
          
            (
            
              t
              +
              h
            
            )
          
        
        =
        
          
            v
            ⁡
            
              (
              t
              )
            
          
          +
          
            h
            ⁢
            
              
                
                  -
                  k
                
                ⁢
                
                  (
                  
                    
                      x
                      ⁡
                      
                        (
                        t
                        )
                      
                    
                    -
                    
                      l
                      0
                    
                  
                  )
                
              
              m
            
          
        
      
    
    
      
        (
        1
        )
      
    
  




x(t+h)=x(t)+hv(t+h)  (2)

Equation (1) uses an explicit Euler step and equation (2) uses an implicit Euler step.
Equations (1) and (2) can be represented as a system matrix “M” multiplied by a state vector [v(t),x(t)]T, i.e.,




  
    
      [
      
        
          
            
              v
              ⁡
              
                (
                
                  t
                  +
                  h
                
                )
              
            
          
        
        
          
            
              x
              ⁡
              
                (
                
                  t
                  +
                  h
                
                )
              
            
          
        
      
      ]
    
    =
    
      
        [
        
          
            
              
                v
                ⁡
                
                  (
                  t
                  )
                
              
            
          
          
            
              
                x
                ⁡
                
                  (
                  t
                  )
                
              
            
          
        
        ]
      
      +
      
        
          1
          m
        
        ⁡
        
          [
          
            
              
                
                  
                    kl
                    0
                  
                  ⁢
                  
                    h
                    2
                  
                
              
            
            
              
                
                  
                    kl
                    0
                  
                  ⁢
                  h
                
              
            
          
          ]
        
      
    
  
  ,




where system matrix “E” is defined by the following equation (3):





  
    
      
        E
        =
        
          [
          
            
              
                1
              
              
                
                  -
                  
                    kh
                    m
                  
                
              
            
            
              
                h
              
              
                
                  1
                  -
                  
                    
                      
                        h
                        2
                      
                      ⁢
                      k
                    
                    m
                  
                
              
            
          
          ]
        
      
    
    
      
        (
        3
        )
      
    
  




System matrix “E” has eigenvalues e0 and e1 represented by the following equations (4) and (5):





  
    
      
        
          e
          0
        
        =
        
          1
          -
          
            
              1
              
                2
                ⁢
                m
              
            
            ⁢
            
              (
              
                
                  
                    h
                    2
                  
                  ⁢
                  k
                
                -
                
                  
                    
                      
                        -
                        4
                      
                      ⁢
                      
                        mh
                        2
                      
                      ⁢
                      k
                    
                    +
                    
                      
                        h
                        4
                      
                      ⁢
                      
                        k
                        2
                      
                    
                  
                
              
              )
            
          
        
      
    
    
      
        (
        4
        )
      
    
  
  
    
      
        
          e
          1
        
        =
        
          1
          -
          
            
              1
              
                2
                ⁢
                m
              
            
            ⁢
            
              (
              
                
                  
                    h
                    2
                  
                  ⁢
                  k
                
                +
                
                  
                    
                      
                        -
                        4
                      
                      ⁢
                      
                        mh
                        2
                      
                      ⁢
                      k
                    
                    +
                    
                      
                        h
                        4
                      
                      ⁢
                      
                        k
                        2
                      
                    
                  
                
              
              )
            
          
        
      
    
    
      
        (
        5
        )
      
    
  




Since system matrix “E” represents a discrete system, the spectral radius of system matrix “E”, i.e., the maximum magnitude of eigenvalues e0 and e1, must not be larger than one (1) to ensure stability of the discrete system. The magnitude of eigenvalue e0 converges to 1 with |e0|<1 for h2k→∞. However, the magnitude of e1 is only smaller than one where timestep “h” is less than





  2
  ⁢
  
    
      
        m
        k
      
    
    .
  




Where timestep “h” is greater than





  
    2
    ⁢
    
      
        m
        k
      
    
  
  ,




the system is unstable. Accordingly, the integration scheme involving equations (1) and (2) is only conditionally stable.

To further illustrate the instability of the discrete system represented by system matrix “E”, FIG. 1B shows the result of performing an integration step starting with v(t)=0. The integration step moves point mass 103 by a distance




  
    Δ
    ⁢
    
      
    
    ⁢
    x
  
  =
  
    
      -
      
        
          
            h
            2
          
          ⁢
          k
        
        m
      
    
    ⁢
    
      
        (
        
          
            x
            ⁡
            
              (
              t
              )
            
          
          -
          
            l
            0
          
        
        )
      
      .
    
  




Where timestep “h” or stiffness “k” are too large or mass “m” is too small, point mass 103 overshoots equilibrium position l0, by a distance greater than the distance between x(t) and l0. In other words, |x(t+h)−l0|>|x(t)−l0|. As a result, the potential energy of system 100 increases after timestep “h”. Since system 100 had zero kinetic energy at time “t”, the overall (i.e., kinetic plus potential) energy of the system is erroneously increased after timestep “h”.

In general, the stability problem of explicit integration schemes can be stated as follows: elastic forces are negative gradients of elastic energy. As such, elastic forces point towards equilibrium positions. Explicit schemes may inaccurately scale the elastic forces when computing the displacements of points, causing the points to overshoot equilibrium positions so much that they increase the deformation and the energy of the system instead of preserving or decreasing the deformation energy, which is required for stability.
One way to address the overshoot problem is to limit the displacement of points such that they never overshoot their respective equilibrium positions. For instance, in the one-dimensional spring example of FIG. 1, the movement of point mass 103 could be restricted from passing the equilibrium position x=l0. One problem with this approach is that for many types of physical models, equilibrium positions are not readily defined for all points. For example, it is difficult to define equilibrium positions in solid finite elements or geometrically complex meshes.
SUMMARY OF THE INVENTION
According to one embodiment of the invention, a method of modeling a deformable object comprises modeling deformable elasticity for the object by pulling a deformed shape towards a defined goal shape.
According to another embodiment of the invention, a method of simulating a deformable object comprises defining positions and velocities for a plurality of points in a deformed shape, and updating the positions and velocities according to the positions of points in a goal shape.
According to still another embodiment of the invention, a method of describing object deformation in a simulation comprises defining elastic forces associated with the object deformation in proportion to distances between points in a deformed shape and points in a goal shape, resolving the object deformation toward an equilibrium using an explicit integration scheme, and resolving the explicit integration scheme by matching on a point by point basis an original shape and the deformed shape and then pulling points corresponding to the deformed shape towards a corresponding points in the goal shape.



BRIEF DESCRIPTION OF THE DRAWINGS
The invention is described below in relation to several embodiments illustrated in the accompanying drawings. Throughout the drawings like reference numbers indicate like exemplary elements, components, or steps. In the drawings:
FIGS. 1A and 1B are diagrams of a conventional one dimensional mass-spring system used to simulate a deformable object;
FIG. 2 is a diagram illustrating a simulation of a two dimensional deformable object according to one embodiment of the present invention; and,
FIG. 3 is a flowchart illustrating a method of simulating a deformable object according to an embodiment of the present invention.



DESCRIPTION OF EXEMPLARY EMBODIMENTS
Embodiments of the present invention provide various methods of modeling and simulating deformable objects. These methods can be readily applied to a wide range of computer-related applications such as scientific visualization, computer graphics, computer animated films, and video games, to name but a few.
Selected embodiments of the invention are particularly well-suited for applications requiring a high level of computational efficiency. For instance, some embodiments of the invention are capable of performing real-time simulations on deformable objects with complicated geometries and/or material properties using only a small portion of a computer's data processing bandwidth.
Video games are one application that requires a high level of computational efficiency. For example, state-of-the-art video games tend to incorporate a variety of realistic effects, such as characters and objects that interact with their environment in real time as if governed by the laws of physics. Such characters and objects are often formed by deformable objects including, for example, clothing, bendable or stretchable materials, and so on.
A deformable object simulation according to embodiments of the invention is typically performed by running a software application on a computational platform including at least one microprocessor and memory. The term “run” here describes any process in which a hardware resource associated with a computational platform performs an operation under the direction (directly or indirectly) of a software resource.
To simulate a deformable object, the software application receives geometric data and physics data defining a configuration of the deformable object and any external forces acting on the object. The “configuration” of a deformable object is broadly defined as a description of all physical attributes of the object itself, including, for example, the locations and masses of discrete elements constituting the object (e.g., points, surfaces, etc.), any connectivity and movement of those discrete elements, and so forth.
The software application simulates the deformable object by updating the object's configuration based on internal forces of the object such as elastic tension, the movement of discrete elements comprising the object, and any external forces acting on the object such as gravity, pressure, or friction, or impact forces from collisions with other objects.
The computational platform typically comprises one or more central processing units (CPUs) and one or more memories. The one or more memories store the software application and loads it into the one or more CPUs for execution.
A deformable object simulation may also be performed with more than one software application. For example, the simulation could be performed by two software applications running in two execution threads on a single CPU, on two different processor cores, or two different CPUs. Where the simulation is performed by two software applications, one of the applications generally comprises a main application defining the geometric and physics data, and the other application generally comprises a physics application running in parallel with the main application and updating the geometric and physics data.
Various computational platforms capable of performing such a simulation are disclosed, for example, in U.S. patent application Ser. Nos. 10/715,459 and 10/715,440 filed Nov. 19, 2003, Ser. No. 10/815,721 filed Apr. 2, 2004, Ser. No. 10/839,155 filed May 6, 2004, Ser. No. 10/982,791 filed Nov. 8, 2004, and Ser. No. 10/988,588 filed Nov. 16, 2004. The subject matter of these commonly-assigned, co-pending patent applications is hereby incorporated by reference.
In this description, the term “deformable object” refers broadly to any collection of data capable of representing an object comprising elements that can be arranged with varying spatial relationships. For example, a deformable object could comprise a mesh, a surface, or a set of points. A deformable object generally further comprises parameters related to the way the object tends to deform. For example, the deformable object may comprise a goal state for each of its elements, and a stiffness parameter specifying how easily each element approaches its goal state.
FIG. 2 is a diagram illustrating a method of modeling and simulating a deformable object according to one embodiment of the invention. For simplicity of explanation, the method of FIG. 2 is described in relation to a two-dimensional (2D) object. However, the method can be readily applied to objects expressed in higher (e.g., 3D) or lower (e.g., 1D) dimensions.
Referring to FIG. 2, a deformable object 200 is modeled by an “actual shape” 202 corresponding to a deformed state of deformable object 200, and a “goal shape” 203 corresponding to a non-deformed state of deformable object 200. Actual shape 202 comprises four “actual points” x1, x2, x3, and x4, and goal shape 203 comprises four “goal points” g1, g2, g3, and g4 corresponding to respective actual points x1, x2, x3, and x4. Actual points x1, x2, x3, and x4, are characterized by respective masses “m1”, “m2”, “m3”, and “m4”.
Goal shape 203 is defined by matching an “original shape” 201 comprising four “original points” x10, x20, x30, and x40 to corresponding actual points x1, x2, x3, and x4 in actual shape 202. In other words, goal shape 203 is a matched version of original shape 201. The term “match” here refers to a process of transformation applied to original shape 201 such that goal shape 203 will approximate actual shape 202. As will be explained, such a transformation can comprise, for example, a linear transformation, a higher order (e.g., quadratic) transformation, or some combination thereof. Once goal shape 203 is defined, deformable elasticity in deformable object 200 is then modeled by pulling actual points x1, x2, x3, and x4 toward corresponding goal points g1, g2, g3, and g4, as indicated by arrows in FIG. 2.
In this written description, the notations x10, xi, and gi are used to refer to points and also to locations of the points. For example, the location of an actual point xi is denoted as simply xi.
One way to match original shape 201 to actual shape 202 is by rotating and translating original shape 201. The amount of rotation and translation can be determined by minimizing some distance between points in goal shape 203 and corresponding points in actual shape 202. For example, the translation and rotation could be chosen to minimize a weighted least squares distance between corresponding points in goal shape 203 and actual shape 202.
Correspondences between points in original shape 201 and actual shape 202 are generally defined a priori, for example, when original shape 201 and actual shape 202 are first defined.
In FIG. 2, corresponding points are labeled with the like subscripts. For example, original point x10 corresponds to actual and goal points x1 and g1. Accordingly, the configuration of goal shape 203 can be computed by finding a rotation matrix R and translation vectors t0 and t such that the following equation (5) is minimized:




  
    
      
        
          ∑
          i
        
        ⁢
        
          
        
        ⁢
        
          
            
              w
              i
            
            ⁡
            
              (
              
                
                  R
                  ⁡
                  
                    (
                    
                      
                        x
                        i
                        0
                      
                      -
                      
                        t
                        0
                      
                    
                    )
                  
                
                +
                t
                -
                
                  x
                  i
                
              
              )
            
          
          2
        
      
    
    
      
        (
        5
        )
      
    
  




In equation (5), wi represents a mathematical weight associated with original and actual points x10 and xi. Typically, the weight assigned to each point is the point's mass. Accordingly, to simplify this written description, weights wi are substituted by masses “mi” throughout.

Where the mathematical weight wi of each point in deformable object 200 is the point's mass “mi”, translation vectors t0 and t are defined as respective centers of mass xcm0 and xcm of original shape 201 and actual shape 202, defined by the following equations (6) and (7):




  
    
      
        
          t
          0
        
        =
        
          
            x
            cm
            0
          
          =
          
            
              
                ∑
                i
              
              ⁢
              
                
              
              ⁢
              
                
                  m
                  i
                
                ⁢
                
                  x
                  i
                  0
                
              
            
            
              
                ∑
                i
              
              ⁢
              
                
              
              ⁢
              
                m
                i
              
            
          
        
      
    
    
      
        (
        6
        )
      
    
  
  
    
      
        t
        =
        
          
            x
            cm
          
          =
          
            
              
                
                  ∑
                  i
                
                ⁢
                
                  
                
                ⁢
                
                  
                    m
                    i
                  
                  ⁢
                  
                    x
                    i
                  
                
              
              
                
                  ∑
                  i
                
                ⁢
                
                  
                
                ⁢
                
                  m
                  i
                
              
            
            .
          
        
      
    
    
      
        (
        7
        )
      
    
  




To compute rotation matrix R, relative locations qi and pi of the points in original shape 201 and actual shape 202 are defined as qi=xi0−xcm0 and pi=xi−xcm. A linear transformation matrix “A” minimizing the following equation (8) is then computed:

Σimi(Aqi−pi)2.  (8)

The linear transformation matrix “A” that minimizes equation (8) is computed by taking the derivative of equation (8) with respect to “A” and setting the derivative to zero. The resulting linear transformation matrix “A” is computed by the following equation (9):




  
    
      
        A
        =
        
          
            
              (
              
                
                  ∑
                  i
                
                ⁢
                
                  
                
                ⁢
                
                  
                    m
                    i
                  
                  ⁢
                  
                    p
                    i
                  
                  ⁢
                  
                    q
                    i
                    T
                  
                
              
              )
            
            ⁢
            
              
                (
                
                  
                    ∑
                    i
                  
                  ⁢
                  
                    
                  
                  ⁢
                  
                    
                      m
                      i
                    
                    ⁢
                    
                      q
                      i
                    
                    ⁢
                    
                      q
                      i
                      T
                    
                  
                
                )
              
              
                -
                1
              
            
          
          =
          
            
              A
              pq
            
            ⁢
            
              
                A
                qq
              
              .
            
          
        
      
    
    
      
        (
        9
        )
      
    
  




Equation (9) defines a first matrix Aqq, and a second matrix Apq. First matrix Aqq is symmetric, and therefore it contains a scaling component, but no rotational component. In contrast, second matrix Apq contains both a symmetric component and a rotational component. The rotational component of second matrix Apq is rotation matrix R and the symmetric component of second matrix Apq is a symmetric matrix S. Rotation matrix R and symmetric matrix S can be found by decomposing second matrix Apq a via polar decomposition, represented by Apq=RS. In the polar decomposition, symmetric matrix S is computed as S=√{square root over (ApqTApq)} and rotation matrix R is computed as R=ApqS−1. Once rotation matrix R is defined, the locations of goal points g1, g2, g3, and g4 are computed by the following equation (10):

gi=R(xi0−xcm0)+xcm.  (10)

Then, upon computing the locations of goal points g1, g2, g3, and g4, the locations of actual points x1, x2, x3, and x4 are updated by integration according to the following equations (11) and (12):




  
    
      
        
          
            v
            i
          
          ⁡
          
            (
            
              t
              +
              h
            
            )
          
        
        =
        
          
            
              v
              i
            
            ⁡
            
              (
              t
              )
            
          
          +
          
            α
            ⁢
            
              
                
                  
                    g
                    i
                  
                  ⁡
                  
                    (
                    t
                    )
                  
                
                -
                
                  
                    x
                    i
                  
                  ⁡
                  
                    (
                    t
                    )
                  
                
              
              h
            
          
          +
          
            
              
                hf
                ext_i
              
              ⁡
              
                (
                t
                )
              
            
            ⁢
            
              lm
              i
            
          
        
      
    
    
      
        (
        11
        )
      
    
  




xi(t+h)=xi(t)+hvi(t+h)  (12)

In equations (11) and (12), the term α represents a “stiffness” of deformable object 200. The term α ranges from zero to one, where a value of α=1 indicates that deformable object 200 is rigid, and a value of α=0 indicates that deformable object 200 is highly deformable. The term fext—i(t) denotes a net external force acting on point “i” of actual shape 202 at time t.
To illustrate the effect of α on actual shape 202, suppose that α=1, initial velocity v(t)=0, and net external force fext—i(t)=0. Under these conditions equation (11) evaluates as




  
    
      
        v
        i
      
      ⁡
      
        (
        
          t
          +
          h
        
        )
      
    
    =
    
      α
      ⁢
      
        
          
            
              g
              i
            
            ⁡
            
              (
              t
              )
            
          
          -
          
            
              x
              i
            
            ⁡
            
              (
              t
              )
            
          
        
        h
      
    
  
  ,




and equation (12) becomes xi(t+h)=xi(t)+gi(t)−xi(t)=gi(t). In other words, if deformable object 200 is rigid, deformable shape 202 tends to approach the configuration of goal shape 203 very quickly. Where α<1, deformable shape 202 still approaches the configuration of goal shape 203, however, it does so more slowly.

Applying equations (11) and (12) to mass-spring system 100 shown in FIG. 1, the velocity and position of point mass 103 are updated according to the following equation (13):




  
    
      
        
          [
          
            
              
                
                  v
                  ⁡
                  
                    (
                    
                      t
                      +
                      h
                    
                    )
                  
                
              
            
            
              
                
                  x
                  ⁡
                  
                    (
                    
                      t
                      +
                      h
                    
                    )
                  
                
              
            
          
          ]
        
        =
        
          
            
              [
              
                
                  
                    1
                  
                  
                    
                      
                        -
                        α
                      
                      /
                      h
                    
                  
                
                
                  
                    h
                  
                  
                    
                      1
                      -
                      α
                    
                  
                
              
              ]
            
            ⁡
            
              [
              
                
                  
                    
                      v
                      ⁡
                      
                        (
                        t
                        )
                      
                    
                  
                
                
                  
                    
                      x
                      ⁡
                      
                        (
                        t
                        )
                      
                    
                  
                
              
              ]
            
          
          +
          
            
              [
              
                
                  
                    
                      α
                      ⁢
                      
                        
                      
                      ⁢
                      
                        
                          l
                          0
                        
                        /
                        h
                      
                    
                  
                
                
                  
                    
                      α
                      ⁢
                      
                        
                      
                      ⁢
                      
                        l
                        0
                      
                    
                  
                
              
              ]
            
            .
          
        
      
    
    
      
        (
        13
        )
      
    
  




In equation (13), the term




   
  
    [
    
      
        
          1
        
        
          
            
              -
              α
            
            /
            h
          
        
      
      
        
          h
        
        
          
            1
            -
            α
          
        
      
    
    ]
  




represents a system matrix similar to system matrix “E” in equation (3). However, unlike the eigenvalues of system matrix “E”, the magnitudes of the eigenvalues of the term





   
  
    [
    
      
        
          1
        
        
          
            
              -
              α
            
            /
            h
          
        
      
      
        
          h
        
        
          
            1
            -
            α
          
        
      
    
    ]
  




are always one (1), regardless of the respective values of a and timestep h. IN particular, the eigenvalues of the term





   
  
    [
    
      
        
          1
        
        
          
            
              -
              α
            
            /
            h
          
        
      
      
        
          h
        
        
          
            1
            -
            α
          
        
      
    
    ]
  




are defined as (1−α/2)±√{square root over (α2−4α/2)}. Because the eigenvalues of the term





   
  
    [
    
      
        
          1
        
        
          
            
              -
              α
            
            /
            h
          
        
      
      
        
          h
        
        
          
            1
            -
            α
          
        
      
    
    ]
  




are always equal to one, a simulation of mass-spring system 100 using equations (11) and (12) is unconditionally stable. Moreover, the simulation using equations (11) and (12) does not introduce damping into mass-spring system 100.

A three dimensional simulation of a deformable object with no external forces is also unconditionally stable and free of damping under equations (11) and (12). Moreover, as long as the external forces applied to a deformable object are invariant with respect to location, e.g., forces such as gravity, or the external forces are applied instantaneously, e.g., collision response forces, the simulation will be also be unconditionally stable.
FIG. 3 is a flowchart illustrating a method of simulating a deformable object according to an embodiment of the invention. In the description that follows, exemplary method steps are denoted by parentheses (XXX).
Referring to FIG. 3, the method comprises defining an actual shape corresponding to a deformed state of the deformable object (301), defining a goal shape corresponding to a non-deformed state of the deformable object (302), and updating the location of each point in the actual shape by pulling the point toward a corresponding point in the goal shape (303).
Positions of actual points in the actual shape are generally defined by events in a software application, such as initialization and subsequent updates of the actual shape's configuration. Meanwhile, positions of goal points in the goal shape can be computed in a variety of different ways.
According to one embodiment of the present invention, the positions of goal points gi in the goal shape are computed by defining an original shape comprising original points and rotating and translating the original shape to match the actual shape using a translation vector and rotation matrix, e.g., as described by equation (10).
The translation vector is generally computed from the respective centers of mass of the original and actual shapes, as described by equations (6) and (7), and the rotation matrix is generally computed by polar decomposition of a linear transformation matrix computed according to equation (9).
In general, center of mass xcm0 in equation (10) and relative locations qi in equations (8) and (9) are computed before any timesteps of the simulation are executed. Then, at each timestep of the simulation, second matrix Apq=ΣimipiqiT is assembled. Where the deformable object being simulated is three dimensional, second matrix Apq is a 3×3 matrix.
Second matrix Apq is decomposed into rotation matrix “R” and symmetric matrix “S” by computing symmetric matrix S as S=√{square root over (ApqTApq)} and rotation matrix R as R=ApqS−1. The term S−1, i.e., (√{square root over (ApqTApq)})−1, is computed by diagonalizing the symmetric matrix ApqTApq using 5-10 Jacobi rotations, where the computational complexity of each Jacobi rotation is constant.
According to another embodiment of the invention, the positions of goal points gi are computed by a linear transformation using rotation matrix “R” and linear transformation matrix “A” according to the following equation (14):




  
    
      
        
          g
          i
        
        =
        
          
            
              (
              
                
                  β
                  ⁢
                  
                    A
                    
                      
                        det
                        ⁡
                        
                          (
                          A
                          )
                        
                      
                      3
                    
                  
                
                +
                
                  
                    (
                    
                      1
                      -
                      β
                    
                    )
                  
                  ⁢
                  R
                
              
              )
            
            ⁢
            
              (
              
                
                  x
                  i
                  0
                
                -
                
                  x
                  cm
                  0
                
              
              )
            
          
          +
          
            x
            cm
          
        
      
    
    
      
        (
        14
        )
      
    
  




In equation (14), the term β is a control parameter used to control the locations of goal points gi. Linear transformation matrix “A” is divided by {square root over (det(A))} to ensure that the volume of the goal shape relative to the original shape is conserved by equation (14). Linear transformation matrix “A”, is generally constructed by forming first matrix Aqq before any simulation timesteps are executed and then forming second matrix Apq with each timestep.

One advantage of using equation (14) to compute the positions of goal points g rather than equation (10) is that equation (14) can generate goal points gi closer the locations of actual points xi. Accordingly, equation (14) is generally better at simulating more highly deformed, and/or less rigid objects.
Another way to compute goal points gi is by performing a quadratic transformation on the original points. For example, goal points gi can be computed by a quadratic transformation defined by the following equation (15):

gi=[AQM]{tilde over (q)}i.  (15)

In equation (15), giεR3 and {tilde over (q)}=[qx, qy, qz, qx2, qy2, qz2, qxqyqz, qzqx]TεR9. AεR3×3 contains the coefficients for the linear terms qx, qy, qz, QεR3×3 contains the coefficients for the purely quadratic terms qx2, qy2, qz2, and MεR3×3 contains the coefficients for the mixed terms qxqy, qyqz, qzqx. Quadratic transformation matrix Ã=[AQM]εR3×9 preferably minimizes the equation Σimi(Ã{tilde over (q)}i−pi)2, and is computed by the following equation (16):





  
    
      
        
          A
          ~
        
        =
        
          
            
              (
              
                
                  ∑
                  i
                
                ⁢
                
                  
                
                ⁢
                
                  
                    m
                    i
                  
                  ⁢
                  
                    p
                    i
                  
                  ⁢
                  
                    
                      q
                      ~
                    
                    i
                    T
                  
                
              
              )
            
            ⁢
            
              (
              
                
                  ∑
                  i
                
                ⁢
                
                  
                
                ⁢
                
                  
                    m
                    i
                  
                  ⁢
                  
                    
                      q
                      ~
                    
                    i
                  
                  ⁢
                  
                    
                      q
                      ~
                    
                    i
                    T
                  
                
              
              )
            
          
          =
          
            
              
                A
                ~
              
              pq
            
            ⁢
            
              
                
                  A
                  ~
                
                qq
              
              .
            
          
        
      
    
    
      
        (
        16
        )
      
    
  




A symmetric matrix ÃqqεR9×9 and vector {tilde over (q)}i in equation (16) can be computed before a simulation begins. Also, the control parameter β can be used with quadratic transformation matrix Ã to further control the positions of the goal points. For example, the goal points could be generated by the equation gi=[βÃ+(1−β){tilde over (R)}]{tilde over (q)}i, where {tilde over (R)}εR3×9=[R00] instead of using equation (15).

Still another way to compute goal points gi is by dividing actual points xi into overlapping clusters and then computing a separate transformation matrix for each cluster. For example, actual points xi represented by a volumetric mesh can be divided into clusters where each cluster comprises points adjacent to a common element of the volumetric mesh (e.g. tetrahedron). Alternatively, a mesh can be regularly divided into overlapping cubical regions, and then a cluster can be formed by all points in each cubical region.
At each timestep, original points and actual points corresponding to each cluster are matched to generate goal points gic(t), where “i” denotes the index of each point, and “c” denotes a particular cluster. Using goal points gic(t) instead of goal points gi(t), equation (11) becomes the following equation (17):




  
    
      
        
          
            v
            i
          
          ⁡
          
            (
            
              t
              +
              h
            
            )
          
        
        =
        
          
            
              v
              i
            
            ⁡
            
              (
              t
              )
            
          
          +
          
            α
            ⁢
            
              
                
                  
                    g
                    i
                    c
                  
                  ⁡
                  
                    (
                    t
                    )
                  
                
                -
                
                  
                    x
                    i
                  
                  ⁡
                  
                    (
                    t
                    )
                  
                
              
              h
            
          
          +
          
            
              
                hf
                ext_i
              
              ⁡
              
                (
                t
                )
              
            
            /
            
              
                m
                i
              
              .
            
          
        
      
    
    
      
        (
        17
        )
      
    
  




One general problem with the velocity update in equations (11) and (17) is that the behavior of the system is highly dependant on timestep “h”. One way to address the problem is by setting α=h/τ, where τ≦h is a time constant.
Not all points of an actual shape or original shape need to be considered when computing a transformation matrix to define the locations of goal points gi. For example, where a deformable object comprises a large number of points, a subset of the actual points and corresponding original points defining the deformable object can be used to generate a transformation matrix. The transformation matrix can then be used to transform all of the original points to generate the goal points.
The method described in relation to FIG. 3 can also be used to simulate plastic deformable objects. Typically, a plastic deformable object is simulated by representing a deformation state Sp for the object. The deformation state Sp is initialized with the identity matrix “I” and then updated with each timestep of the simulation.
Deformation state Sp is updated based on symmetric matrix S derived by the polar decomposition of second matrix Apq of equation (9). Symmetric matrix S represents a deformation of the original shape in an unrotated reference frame. Accordingly, where an amount of deformation (i.e., a distance) ∥S−I∥2 exceeds a threshold value cyield, state matrix Sp is updated according to the following equation (18):

Sp←[I+hccreep(S−I)]Sp.  (18)

In equation (18), timestep “h” and the parameter ccreep are used to control the plasticity of the deformable object. The plasticity can be bound by testing whether ∥Sp−I∥2 exceeds a threshold value cmax. Where ∥Sp−I∥2>cmax, state matrix is set by the following equation (19):

Sp←I+cmax(Sp−I)/∥Sp−I∥2.  (19)

State matrix Sp is incorporated into the simulation of the deformable object by replacing the definition of qi=xi0−xcm0 in equation (8) with the following equation (20):

qi=Sp(xi0−xcm0).  (20)

To ensure that the volume of the deformable object is conserved throughout the simulation, state matrix Sp is divided by {square root over (det(Sp))} every time it gets updated. Note that each time Sp is updated, first and second matrices Aqq and Apq must also be updated.

The foregoing preferred embodiments are teaching examples. Those of ordinary skill in the art will understand that various changes in form and details may be made to the exemplary embodiments without departing from the scope of the present invention as defined by the following claims.

## Claims

1. A computer-implemented method of simulating a deformation of a deformable object, the method comprising:
defining an original shape based on a non-deformed state of a deformable object, wherein the original shape comprises a plurality of original data points;
defining an actual shape corresponding to a deformed state of the deformable object, wherein the actual shape comprises a plurality of actual data points;
defining a goal shape corresponding to the non-deformed state of the deformable object such that the goal shape is a matched version of the original shape, wherein the goal shape comprises a plurality of goal data points;
matching the original shape comprising original data points to corresponding actual data points in the actual shape by rotating and translating the original shape of the deformable object; and
updating parameters of each actual data point according to a position of a corresponding goal data point in the goal shape by moving each of the plurality of actual data points corresponding to the deformed state toward a corresponding goal data point in the goal shape.

2. The computer-implemented method of claim 1, wherein the updated parameters of each actual data point are used to simulate the deformation of the deformable object in a graphics simulation performed on a computing device.

3. The computer-implemented method of claim 1, wherein the parameters comprise position and velocity.

4. The computer-implemented method of claim 3, wherein the step of updating parameters of each actual data point comprises:
defining a velocity of the actual data point at a particular time based on a velocity of the actual data point at the particular time and a difference between a position of a corresponding goal point and a position of the actual data point at the particular time; and
defining a position of the actual data point at the particular time based on a position of the actual data point at the particular time and the velocity of the actual data point at the particular time.

5. A non-transitory computer-readable medium storing instructions that, when executed by a processor, cause the processor to simulate a deformation of a deformable object, by performing the steps of:
defining an original shape based on a non-deformed state of a deformable object, wherein the original shape comprises a plurality of original data points;
defining an actual shape corresponding to a deformed state of the deformable object, wherein the actual shape comprises a plurality of actual data points;
defining a goal shape corresponding to the non-deformed state of the deformable object such that the goal shape is a matched version of the original shape, wherein the goal shape comprises a plurality of goal data points;
matching the original shape comprising original data points to corresponding actual data points in the actual shape by rotating and translating the original shape of the deformable object; and
updating parameters of each actual data point according to a position of a corresponding goal data point in the goal shape by pulling moving each of the plurality of actual data points corresponding to the deformed state toward a corresponding goal data point in the goal shape.

6. The non-transitory computer-readable medium of claim 5, wherein the updated parameters of each actual data point are used to simulate the deformation of the deformable object in a graphics simulation performed on a computing device.

7. The non-transitory computer-readable medium of claim 5, wherein the parameters comprise position and velocity.

8. The non-transitory computer-readable medium of claim 7, wherein the step of updating parameters of each actual data point comprises:
defining a velocity of the actual data point at a particular time based on a velocity of the actual data point at the particular time and a difference between a position of a corresponding goal point and a position of the actual data point at the particular time; and
defining a position of the actual data point at the particular time based on a position of the actual data point at the particular time and the velocity of the actual data point at the particular time.

9. A computer system, comprising:
a processor; and
a memory configured to store an application including instructions that, when executed by the processor, cause the processor to simulate a deformation of a deformable object, by performing the steps of:
defining an original shape based on a non-deformed state of a deformable object, wherein the original shape comprises a plurality of original data points;
defining an actual shape corresponding to a deformed state of the deformable object, wherein the actual shape comprises a plurality of actual data points;
defining a goal shape corresponding to the non-deformed state of the deformable object such that the goal shape is a matched version of the original shape, wherein the goal shape comprises a plurality of goal data points;
matching the original shape comprising original data points to corresponding actual data points in the actual shape by rotating and translating the original shape of the deformable object; and
updating parameters of each actual data point according to a position of a corresponding goal data point in the goal shape by moving each of the plurality of actual data points corresponding to the deformed state toward a corresponding goal data point in the goal shape.

10. The computer system of claim 9, wherein the updated parameters of each actual data point are used to simulate the deformation of the deformable object in a graphics simulation performed on a computing device.

11. The computer system of claim 9, wherein the parameters comprise position and velocity.

12. The computer system of claim 11, wherein the step of updating parameters of each actual data point comprises:
defining a velocity of the actual data point at a particular time based on a velocity of the actual data point at the particular time and a difference between a position of a corresponding goal point and a position of the actual data point at the particular time; and
defining a position of the actual data point at the particular time based on a position of the actual data point at the particular time and the velocity of the actual data point at the particular time.

13. The computer-implemented method of claim 1, wherein the amount of rotation and translation is determined by minimizing distance between goal data points in the goal shape and corresponding actual data points in the actual shape.

14. The computer-implemented method of claim 13, wherein the rotation and translation are chosen to minimize a weighted least square distance between corresponding data points in the goal shape and the actual shape.

15. The non-transitory computer-readable medium of claim 5, wherein the amount of rotation and translation is determined by minimizing distance between goal data points in the goal shape and corresponding actual data points in the actual shape.

16. The non-transitory computer-readable medium of claim 15, wherein the rotation and translation are chosen to minimize a weighted least square distance between corresponding data points in the goal shape and the actual shape.

17. The computer system of claim 9, wherein the amount of rotation and translation is determined by minimizing distance between goal data points in the goal shape and corresponding actual data points in the actual shape.

18. The computer system of claim 17, wherein the rotation and translation are chosen to minimize a weighted least square distance between corresponding data points in the goal shape and the actual shape.