Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-01-20Reimplemented the voxel texture type for displaying hair continuum grids.Lukas Tönne
Conflicts: source/blender/physics/intern/BPH_mass_spring.cpp
2015-01-20Debug visualization code of a slice of the hair velocity vector field.Lukas Tönne
2015-01-20Removed arbitrary factor 2.0 on volumetric hair friction factor.Lukas Tönne
This was introducing energy into the system for any factor beyond 0.5 and caused major instability.
2015-01-20Fill the hair volume grid with the _new_ velocities from the firstLukas Tönne
solver step, instead of using the previous step's velocities. Conflicts: source/blender/physics/intern/BPH_mass_spring.cpp
2015-01-20Debug drawing feature to visualize the hair continuum grid.Lukas Tönne
2015-01-20Perform grid-based velocity smoothing for hair outside of the implicitLukas Tönne
solver step. Calculating forces and jacobians from linearly interpolated grid values is problematic due to discontinuities at the grid boundaries. The new approach of modifying velocities after the backward euler solver step was suggested in a newer paper "Detail Preserving Continuum Simulation of Straight Hair" (McAdams, Selle 2009) Conflicts: source/blender/physics/intern/BPH_mass_spring.cpp
2015-01-20Minor fix for lost variable declaration during cherry-picking.Lukas Tönne
2015-01-20Fix for warnings/errorsLukas Tönne
Conflicts: source/blender/blenkernel/intern/key.c source/blender/blenkernel/intern/particle_system.c source/blender/makesrna/intern/rna_particle.c
2015-01-20Switched back to blender implicit solver for merge.Lukas Tönne
2015-01-20Unified the main Eigen solver function a bit for constrained/unconstrainedLukas Tönne
solver variants.
2015-01-20Ported the remaining implicit solver functions for Eigen.Lukas Tönne
Also added a couple of utility wrapper functions for Eigen types to make interfacing with plain float arrays and blenlib math easier.
2015-01-20Updating Eigen implicit dynamics solver implementation to adhere to theLukas Tönne
new mass-spring solver API. Conflicts: source/blender/physics/intern/implicit_eigen.cpp
2015-01-20Removed block matrix indices storage from ClothSpring struct.Lukas Tönne
This is not necessary: the implicit solver data can keep track instead of how many off-diagonal matrix blocks are in use (provided the allocation limit is calculated correctly). Every time a spring is created it then simply increments this counter and uses the block index locally - no need to store this persistently.
2015-01-20Removed unused force arguments for angular bending springs and avoidLukas Tönne
redundant calculation for counterforces.
2015-01-20Added separate damping for bending springs.Lukas Tönne
The bend damping factor was hardcoded to the same value as the stiffness. Now it has its own factor in the settings and button in hair dynamics.
2015-01-20Fix for hair chain testing in the cloth modifier.Lukas Tönne
Bending springs are en-bloc and not interleaved with other springs, so this can't be used as a test for hair roots. Use consecutive indices instead.
2015-01-20Completed the implementation of bent rest shapes for hair.Lukas Tönne
Basically follows the Pixar approach from "Artistic Simulation of Curly Hair".
2015-01-20Target calculation for local non-straight rest shapes.Lukas Tönne
This is more involved than using simple straight bending targets constructed from the neighboring segments, but necessary for restoring groomed rest shapes. The targets are defined by parallel-transporting a coordinate frame along the hair, which smoothly rotates to avoid sudden twisting (Frenet frame problem). The rest positions of hair vertices defines the target vectors relative to the frame. In the deformed motion state the frame is then recalculated and the targets constructed in world/root space.
2015-01-20Have to include BLI_utildefines before BKE_collision now to have boolLukas Tönne
defined.
2015-01-20Clear forces and constraints together at the start of the time step,Lukas Tönne
easier to verify.
2015-01-20Proper implementation of angular bending springs including jacobianLukas Tönne
derivatives for stabilization. The bending forces are based on a simplified torsion model where each neighboring point of a vertex creates a force toward a local goal. This can be extended later by defining the goals in a local curve frame, so that natural hair shapes other than perfectly straight hair are supported. Calculating the jacobians for the bending forces analytically proved quite difficult and doesn't work yet, so the fallback method for now is a straightforward finite difference method. This works very well and is not too costly. Even the original paper ("Artistic Simulation of Curly Hair") suggests this approach.
2015-01-20Unused function declaration.Lukas Tönne
2015-01-20Basic solver result feedback from the mass-spring (cloth/hair) solver.Lukas Tönne
This returns a general status (success/no-convergence/other) along with basic statistics (min/max/average) for the error value and the number of iterations. It allows some general estimation of the simulation quality and detection of critical settings that could become a problem. Better visualization and extended feedback can follow later.
2015-01-20Calculate bending targets based on the direction of previous segments.Lukas Tönne
This makes the bending a truely local effect. Eventually target directions should be based in a local coordinate frame that gets parallel transported along the curve. This will allow non-straight rest shapes for hairs as well as supporting twist forces. However, calculating locally transformed spring forces is more complicated.
2015-01-20Simple debug drawing support inside the implicit solver.Lukas Tönne
2015-01-20Added a damping term for angular bending springs.Lukas Tönne
2015-01-20Simple initial implementation of angular bending springs.Lukas Tönne
These are much better suited for creating stiff hair. The previous bending springs are based on "push" type spring along the hypothenuse of 3 hair vertices. This sort of spring requires a very large force in the direction of the spring for any angular effect, and is still unstable in the equilibrium. The new bending spring model is based on "target" vectors defined in a local hair frame, which generates a force perpendicular to the hair segment. For further details see "Artistic Simulation of Curly Hair" (Pixar technical memo #12-03a) or "A Mass Spring Model for Hair Simulation" (Selle, Lentine, Fedkiw 2008) Currently the implementation uses a single root frame that is not yet propagated along the hair, so the resulting rest shape is not very natural. Also damping and derivatives are still missing.
2015-01-20Replace the dynamic root transform in the implicit solver data with aLukas Tönne
single transform matrix. Dynamic properties of the transformation are only needed during the setup phase when they should be read from external data (hair system roots) and generate fictitious forces on each point.
2015-01-20More scons fixes for physics lib.Lukas Tönne
2015-01-20Fixed scons build files for new physics subfolder.Lukas Tönne
2015-01-20Disabled the velocity filtering feature for now, since the weighting isLukas Tönne
incorrect. The voxel grid needs better tool support to make it usable, so fixing the filtering is not high priority right now.
2015-01-20Added basic filtering feature for velocity smoothing.Lukas Tönne
This is part of the original method from "Volumetric Methods for Simulation and Rendering of Hair". The current filter is a simple box filter. Other energy-preserving filters such as gaussian filtering can be implemented later. The filter size is currently given as a cell count. This is not ideal, rather it should use a geometrical length value, but this is too abstract for proper artistical use. Eventually defining the whole grid in terms of spatial size might work better (possibly using an external object).
2015-01-20Made the voxel grid size for hair interaction configurable and increasedLukas Tönne
the default to 32. Conflicts: source/blender/blenloader/intern/versioning_270.c
2015-01-20Fix for rB71271bb, was replacing the force vectors entirely instead ofLukas Tönne
adding.
2015-01-20Fix for effector force fields on hair, using the world-to-rootLukas Tönne
transformation.
2015-01-20Add weak repulsion forces to hair collision response to keep the hairLukas Tönne
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.
2015-01-20Added back the velocity smoothing implementation.Lukas Tönne
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.
2015-01-20Minor fix when gravity code is disabled.Lukas Tönne
2015-01-20Removed unused code.Lukas Tönne
Conflicts: source/blender/physics/intern/implicit_blender.c
2015-01-20Added a calculation function for the fictitious forces introduced byLukas Tönne
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
2015-01-20Fix for own misconception of fictitious forces in the moving hair rootLukas Tönne
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).
2015-01-20Added back spring force definitions outside the implicit solver.Lukas Tönne
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
2015-01-20Main cloth force calculation function outside of implicit core code.Lukas Tönne
Still misses spring forces.
2015-01-20Hair volume calculation is now in its own file.Lukas Tönne
Code is currently disabled until the other main forces are in place.
2015-01-20Moved the unused goal force calculation function to the main mass-springLukas Tönne
source file.
2015-01-20Moved most of the main cloth solver function out of implicit code core.Lukas Tönne
Force calculation is disabled, will follow shortly.
2015-01-20Moved init/free functions for solver data out of implicit core.Lukas Tönne
This also initializes spring matrix indices (off-diagonal 3x3 blocks), which now uses a new API function.
2015-01-20Moved "set_positions" for cloth out of core implicit solver.Lukas Tönne
API for the solver now has functions for setting of vertex motion state and the associated root transform data.
2015-01-20Renamed functions to make them explicitly refer to cloth, and split theLukas Tönne
create/free functions for solver data off from the cloth solver.
2015-01-20Moved the cloth solver code into a new subfolder/library inside BlenderLukas Tönne
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.