Can I use this energy in Projective Dynamics?

Please don't post Bullet support questions here, use the above forums instead.
Post Reply
GeorgeJennings
Posts: 2
Joined: Thu Apr 20, 2017 11:34 pm

Can I use this energy in Projective Dynamics?

Post by GeorgeJennings »

Hi

recently I was thinking about the energies used in Projective Dynamics and I wonder
why didn't the authors mention any constraints based on the classical material models (like the Neo-Hookean model).

The only FEM-like model mentioned was the as-rigid-as-possible model (section 5.1 in the paper).

I got an idea how to simulate e.g. the Neo-Hookean model in Projective Dynamics, but I'm not really sure if it would work.
Could you please write if the idea has some flaws or if looks like it could work (i.e. would the material behave like the Neo-Hookean model)?


TLDR:
    In the local step: use energy density function argmin_(p_i) Ψ(F(p_i)) of Neo-Hookean model as constraint to minimize to obtain projected auxiliary variables p_i.
    In the global step: use the simplest quadratic energy possible; W_i(q) = || S_i*q - p_i ||^2


The detailed version:
    PD uses local and global steps to solve constrained physical system.
    
    The local step:
        For each constraint I compute the auxiliary projection variables p_i for which E_i(p_i) = 0. There's 1 constraint for each tetrahedron.
        I imagined I could minimize the energy density function Ψ(F) of the Neo-Hookean model (which takes deformation gradient of an element (say a tetrahedron) and produces energy density (a scalar)).
        
        And because the deformation gradient of a tetrahedron can be calculated based on its vertices, I could rewrite the constraint function as: E_i(p_i) := Ψ(F(p_i))
        
        I'd then do argmin_(p_i) E_i(p_i), which I'd solve by either a simple gradient descent or by the Newton method.
        I'd then use the current (deformed) vertices of the tetrahedron as the initial guess of the minimization (to ensure p_i is the closest point on the constraint manifold).
        
        This minimization produces the auxiliary projected variable p_i, which represents the stacked vector of all 4 (projected) vertices of the tetrahedron.
    
    
    The global step:
        I'd use the simplest quadratic energy possible; W_i(q) = || S_i*q - p_i ||^2 for each of my tetrahedral constraints.
        
        Where q is the vector of all vertices in the system.
        S_i is the selector matrix that selects the 4 vertices of the current tetrahedron i.
        And p_i is the stacked vector from the local step containing the projected positions of S_i*q.
        
        (Just a note: S_i*q is used as the initial guess for the minimization in the local step, as was written above.)

Thank you for any suggestion!  
Post Reply