Blender Git Commits

Blender Git commits from all branches.

Page: 2419 / 2888

January 19, 2015, 16:54 (GMT)
Debug printing code for large sparse vectors and matrices, to compare
solver input/output of the old and new methods.
January 19, 2015, 16:54 (GMT)
Added a new internal header for implicit solver defines.

Should become its own intern wrapper library eventually.
January 19, 2015, 16:54 (GMT)
Reenabled air drag force for cloth sim.
January 19, 2015, 16:54 (GMT)
Arbitrary scaling factor for the structural spring forces (stretching).

This is not nice at all, but for some reason (possibly time scale) the
old force values are much too high and cause the solver to become
unstable. These will be revisited later anyway, so for now such scaling
should be fine.
January 19, 2015, 16:54 (GMT)
Switched to the modified CG method that supports constraints, and
added back structural stretch springs.
January 19, 2015, 16:54 (GMT)
Implemented a modifier conjugate gradient algorithm to support stable
constraining.

The algorithm is described in the paper "Large Steps in Cloth Simulation"
(Baraff/Witkin 1998). The same method was (incorrectly) implemented in
the old cloth solver.

It is based on restricting the degrees of freedom (ndof) of vertices
using a block matrix and a vector of target velocity deltas.
See chapter 5 of the paper for details.
January 19, 2015, 16:53 (GMT)
Reimplemented Goal springs for the Eigen CG solver method.

Note that goal springs currently are really bad ... They have a factor
on hairs that "fades" goal influence from the root to the tip. The last
point on the hair is completely free, which makes the goal springs
pretty much useless on their own without supporting bend stiffness.
Can only assume this was added to compensate unphysical behavior of
goal springs when using uniform weight, but it's a poor replacement for
true localized bending forces ...
January 19, 2015, 16:53 (GMT)
To make gravity a true force vector, multiply by the mass.
January 19, 2015, 16:53 (GMT)
Alternative new solver for cloth using the Eigen CG solver instead of
a custom built solver.

The old cloth solver is broken unfortunately. Eigen is a designated
linear algebra library and very likely their implementation is a lot
better (can't compare until it's implemented though).

Only basic gravity is active atm, spring forces, external force fields,
damping and volumetric friction have to be added back by converting
the data into the Eigen format.
January 19, 2015, 16:52 (GMT)
Don't try to enforce a velocity change for pinned vertices; their
velocity is defined externally by hair root motion.
January 19, 2015, 16:52 (GMT)
Use squareroot of the current epsilon error target for CG, since we
square this value anyway.
January 19, 2015, 16:52 (GMT)
Disabled collision culling on the inside of the collider faces for now,
this seems to remove too many contact points somehow ...
January 19, 2015, 16:52 (GMT)
Fix for collision response, the impulse response was far too small.
January 19, 2015, 16:52 (GMT)
Use the S matrix of the modifier CG algorithm for implementing collision
responses.

The S matrix together with the z Vector encodes the degrees of freedom
of a colliding hair point and the target velocity change. In a collision
the hair vertex is restricted in the normal direction (when moving
toward the collider) and the collision dynamics define target velocity.
January 19, 2015, 16:52 (GMT)
Better contact point near-test for hair.

This simply uses the position above the triangle instead of the
intersection point of the vertex path. The other method was broken
anyway, but also has a problem catching all the contacts reliably. The
new method might have a few false positives but that is acceptable.
January 19, 2015, 16:51 (GMT)
Fixed for hair collision detection, old/new positions were swapped.
January 19, 2015, 16:51 (GMT)
Reduced minimum for cloth solver substeps to 1.

This is not very useful for artists, but helps with debugging.
January 19, 2015, 16:43 (GMT)
Removed own debug print.
January 19, 2015, 16:43 (GMT)
Added a comment and use the new CG solver as the "official" version now.
January 19, 2015, 16:43 (GMT)
Fixed implementation of the Conjugate Gradient method for the cloth
solver that properly supports constraints with some degrees-of-freedom.

The previous solver implementation only used the S matrix (constraint
filter matrix) for pinning vertices, in which case all elements are
zero and the error doesn't show up. With partial constraints (useful for
collision contacts) the matrix has non-zero off-diagonal elements and
the algorithm easily diverges.

There are also initial steps for implementing collision prevention as
described in the Baraff/Witkin paper "Large Steps in Cloth Simulation"
(http://www.cs.cmu.edu/~baraff/papers/sig98.pdf).
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021