Revision 2901d6a by Lukas Toenne January 20, 2015, 08:30 (GMT) |
Moved most of the main cloth solver function out of implicit code core. Force calculation is disabled, will follow shortly. |
Revision ac071de by Lukas Toenne January 20, 2015, 08:30 (GMT) |
Moved init/free functions for solver data out of implicit core. This also initializes spring matrix indices (off-diagonal 3x3 blocks), which now uses a new API function. |
Revision d2e8a72 by Lukas Toenne January 20, 2015, 08:30 (GMT) |
Moved "set_positions" for cloth out of core implicit solver. API for the solver now has functions for setting of vertex motion state and the associated root transform data. |
Revision 0d60337 by Lukas Toenne January 20, 2015, 08:30 (GMT) |
Renamed functions to make them explicitly refer to cloth, and split the create/free functions for solver data off from the cloth solver. |
Revision 5322def by Lukas Toenne January 20, 2015, 08:30 (GMT) |
Moved the cloth solver code into a new subfolder/library inside Blender code. The implicit solver itself should remain agnostic to the specifics of the Blender data (cloth vs. hair). This way we could avoid the bloated data conversion chain from particles/hair to derived mesh to cloth modifier to implicit solver data and back. Every step in this chain adds overhead as well as rounding errors and a possibility for bugs, not to speak of making the code horribly complicated. The new subfolder is named "physics" since it should be the start of a somewhat "unified" physics systems combining all the various solvers in the same place and managing things like synchronized time steps. |
Revision 1c8a33a by Lukas Toenne January 20, 2015, 08:30 (GMT) |
Desperate attempt to get stable collisions: Disable restitution and handle only one collision contact at a time. Collision still randomly explodes, even with differing results on the same file. This could indicate a threading issue, possibly also related to the dependency graph since multiple objects are involved in collisions. |
Revision 3007fc6 by Lukas Toenne January 20, 2015, 08:30 (GMT) |
Revert "Ignore velocity changes when the cloth solver does not converge." This reverts commit c52b8ae818844965d56714a71255408873275dc1. Sadly, at this point solver convergence is an exception rather than the rule... Individual hairs can "explode" easily and thus disable the whole simulation, which isn't helpful either. |
Revision 8532cf2 by Lukas Toenne January 20, 2015, 08:30 (GMT) |
Ignore velocity changes when the cloth solver does not converge. This helps keep the simulation stable as long as there are only a few substeps that become too constrained for the solver. Eventually we need better feedback about these solver results, so that artists can tweak situations specifically to resolve bad solver results. This is somewhat similar to the camera tracker, which also can run into cases that cannot be resolved and have to be fixed manually. |
Revision 3119d71 by Lukas Toenne January 20, 2015, 08:30 (GMT) |
Moved collision response into the main cloth sim source file and fixed some coordinate transform issues. Collision response should be regarded as part of the dynamics system instead of the basic collision detection. |
Revision 2b06b89 by Lukas Toenne January 20, 2015, 08:30 (GMT) |
Correction for inverse constraint matrix rotation. |
Revision 0f3cbf3 by Lukas Toenne January 20, 2015, 08:30 (GMT) |
Transform the constraint matrix and target solver vector z according to the root frame transforms as well. This ensures the hair constraints are actually in root space and applied correctly by the solver. |
Revision bc6fa4f by Lukas Toenne January 20, 2015, 08:29 (GMT) |
Use identity transform in the solver data roots to avoid possible errors when this data is used outside the transform functions. |
Revision b391e96 by Lukas Toenne January 20, 2015, 08:29 (GMT) |
Option for disabling the root frame transformation altogether, mostly for testing. |
Revision c5038b1 by Lukas Toenne January 20, 2015, 08:29 (GMT) |
Ported root frame transformation to the old cloth solver. |
Revision 3ad7974 by Lukas Toenne January 20, 2015, 08:29 (GMT) |
Switched back to the old solver for the time being. The Eigen solver is not quite stable currently (possibly due to incorrect porting of force calculations). It also still lacks threading support and optimized matrix construction, making it slower in comparison. Eventually would still like to switch, but fixing these issues takes time. |
Revision 9f28ced by Lukas Toenne January 20, 2015, 08:29 (GMT) |
Implemented gradient transformation for forces in the root frame (dFdX, dFdV). |
Revision 2410dc3 by Lukas Toenne January 20, 2015, 08:29 (GMT) |
Removed unused variable. |
Revision 55a5351 by Lukas Toenne January 20, 2015, 08:29 (GMT) |
First stage of implementing moving frames of reference for hair/cloth. This adds transformations for each hair from world to "root space". Currently positions and velocities are simply transformed for the solver data and inverse-transformed when copying the results back to the cloth data. This way the hair movement becomes independent from the movement of the emitter object. Eventually the "fictitious" forces originating from emitter movement can be added back in a controlled way. http://en.wikipedia.org/wiki/Fictitious_force Ignoring these fictitious forces or scaling their effect is physically correct, because in the absence of external forces the hair will always return to rest position in this root frame. External forces currently are not yet transformed into the root space. |
Revision d496b30 by Lukas Toenne January 20, 2015, 08:29 (GMT) |
Disable some debugging options in Eigen to make it more usable in Debug mode. Eigen can become very slow in debug mode, which is a bit of a problem. It relies heavily on compiler optimizations to remove function calls etc. More optimizations may be desirable, possibly putting the implicit solver into its own little library and enabling optimizations in debug mode there could help. |
Revision d115bdb by Lukas Toenne January 20, 2015, 08:29 (GMT) |
Added new data in the cloth modifier for hair root information. This will allow us to implement moving reference frames for hair and make "fictitious" forces optional, aiding in creating stable and controllable hair systems. Adding data in this place is a nasty hack, but it's too difficult to encode as a DM data layer and the whole cloth modifier/DM intermediate data copying for hair should be removed anyway. |
|
|
|


Master Commits
MiikaHweb | 2003-2021