Tuesday, 10 February 2009

Increasing the Stiffness

I have added spring length constraints to get less rubbery, elastic properties and more stiff, cloth-like properties.

I implemented X.Provot's constraint method of picking up particles and moving them to a place where the springs they are attached to are of satisfactory length. (basically, stop the cloth stretching or shearing too much). The idea is that bend springs are not constrained since cloth is quite forgiving of bending motion but not of stretching or shearing motion.


----------------- RESULTS -----------------

  • Can get it running "stabily" using Euler and one constraint iteration.
  • Cloth does definitley behave more "stiffly"!
  • Constraints must be constrianed very "loosely" or it blows up. Thus there is a low limit to how stiff i can make the cloth.
  • As said above, Cloth becomes unstable and blows up if you move the ends of a spring too much in satisfying a constraint. Because of this the constraints are not solved fully.
  • You CAN counter this instability by reducing the time-step of the simulation down to a crawl.
    This way i was able to almost fully satisfy the constraints and observe stiffer, potentially more realistic (although it was hard to tell because it moved so slowly) cloth.

As showed by the results, the process of instanteously picking up and moving particles raises some issues.

One is stability. Simple Euler integration, which i am currently using, is not well equipped to handle the instaneous movement of particles. If the particles are moved too much in a single frame, the cloth begins to shudder as springs fight each other to stay constrained and eventually, the cloth blows up.

A solution might be to implement the more robust verlet integration scheme that defines it's velocity implicitly from the change in position. (Thus supporting instantaneous movment much more stabily).


Another issue is that moving a particle can validate one spring but also can quite possibly invalidate other associated springs.

Iteratation of the whole constraint procedure can be used to converge to a result where most springs are constrained.

I have not as yet observed any difference in constraining multiple times though.

Another relevant factor mentioned in the literature i have read is the order in which you constrain the springs. Currently my implementation just iterates through the springs in the order they were added to the particle system.
  1. Horizontal Structural Springs (from left to right).
    Verticle Structural Springs (from bottom to top).
  2. Shear Springs (2 for each cell in ROW MAJOR ORDER.)
  3. Bend Springs (2 for each cell in ROW MAJOR ORDER).
Experimentation with this order could provide a better, more accurate way of constraining all springs - thus obtaining stiffer and more stable cloth.

1 comment:

Ouss said...

Hi there,
I am working on a project closly related to cloth simulation with Mass-Spring System...

Concerning stability, have you concidered adaptive time stepping... like using the Adams-Bashforth Adams-Moulton in a predictor-corrector pair?

I am not sure the Verlet algorithm is what you are looking for... I used implicit integration, taking final differences instead of derivations... and that showed infinit instability, it is however time consuming (unless you use sparse matrices)...

Anyway, good luck and if you need support... or references... just contact me.

Cheers!