January 19, 2015, 17:05 (GMT) |
Fix for effector force fields on hair, using the world-to-root transformation. |
January 19, 2015, 17:04 (GMT) |
Add weak repulsion forces to hair collision response to keep the hair at a the margin distance ("outer" softbody margin). This has to be clamped arbitrarily unfortunately, otherwise the repulsion force can add too much energy into the system. A factor of 4 * restitution impulse seems to give good results for now, this can be refined later on if necessary. |
January 19, 2015, 17:04 (GMT) |
Added back the velocity smoothing implementation. This is now also decoupled from the internal solver data. The grid is created as an opaque structure, filled with vertex or collider data (todo), and then forces can be calculated by interpolating the grid at random locations. These forces and derivatives are then fed into the solver. |
January 19, 2015, 17:04 (GMT) |
Fix for Sintel hair bug. The hair solver needs sane input to converge within reasonable time steps. In particular the spring lengths must not be too difference (factor 0.01..100 or so max, this is comparable to rigid body simulation of vastly different masses, which is also unstable). The basic hair system generate strands with equally spaced points, which is good solver material. However, the hair edit operators, specifically the cutting tool, can move points along the strands, creating tightly packed hair points. This puts the solver under enormous stress and causes the "explosions" observed already during the Sintel project. The simple solution for now is to exclude very short hairs from the simulation. Later the cutting tool should be modified such that it keeps the segments roughly at the same length and throws away vertices when the hair gets too short (same goes for the extension tool). The hair system should have a general mechanism for making sure that situations such as this don't occur. This will have to be a design consideration for replacements in any future hair system. |
January 19, 2015, 17:04 (GMT) |
Minor fix when gravity code is disabled. |
January 19, 2015, 17:03 (GMT) |
Removed unused code. Conflicts: source/blender/physics/intern/implicit_blender.c |
January 19, 2015, 17:00 (GMT) |
Added a calculation function for the fictitious forces introduced by moving hair root reference frames. This calculates Euler, Coriolis and Centrifugal forces which result from describing hair in a moving reference frame. http://en.wikipedia.org/wiki/Fictitious_force |
January 19, 2015, 17:00 (GMT) |
Fix for own misconception of fictitious forces in the moving hair root frames. These forces don't have to be calculated for each individual contribution. Rather they can be split off and be calculated on top of the basic force vector rotation (todo). |
January 19, 2015, 16:59 (GMT) |
Added back spring force definitions outside the implicit solver. There are currently 3 types of springs: basic linear springs, goal springs toward a fixed global target (not recommended, but works) and bending springs. These are agnostic to the specific spring definition in the cloth system so hair systems can use the same API without converting everything to cloth first. Conflicts: source/blender/physics/intern/implicit_blender.c |
January 19, 2015, 16:57 (GMT) |
Main cloth force calculation function outside of implicit core code. Still misses spring forces. |
January 19, 2015, 16:57 (GMT) |
Hair volume calculation is now in its own file. Code is currently disabled until the other main forces are in place. |
January 19, 2015, 16:57 (GMT) |
Moved the unused goal force calculation function to the main mass-spring source file. |
January 19, 2015, 16:57 (GMT) |
Moved most of the main cloth solver function out of implicit code core. Force calculation is disabled, will follow shortly. |
January 19, 2015, 16:57 (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. |
January 19, 2015, 16:57 (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. |
January 19, 2015, 16:57 (GMT) |
Renamed functions to make them explicitly refer to cloth, and split the create/free functions for solver data off from the cloth solver. |
January 19, 2015, 16:57 (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. |
January 19, 2015, 16:57 (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. |
January 19, 2015, 16:56 (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. |
January 19, 2015, 16:56 (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. |
|
|
|


Master Commits
MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021