diff options
author | Alexander Gavrilov <angavrilov@gmail.com> | 2020-06-10 18:10:07 +0300 |
---|---|---|
committer | Alexander Gavrilov <angavrilov@gmail.com> | 2020-06-12 18:19:40 +0300 |
commit | b1f97995084253305f708f55dc5bd3b4c3acb301 (patch) | |
tree | 435e3b60da2f70d9695b245541e322afd2aee6eb /source/blender/makesdna | |
parent | 0981b55182f40248a069413f63749afc1b9dc591 (diff) |
Cloth: implement support for a hydrostatic pressure gradient.
When a fluid is put under influence of gravity or acceleration, it
forms an internal pressure gradient, which causes observable effects
like buoyancy. Since now cloth has support for simulating pressure
changes caused by fluid compression or expansion, it makes sense to
also support the effects of gravity.
This is intended for better simulation of objects filled or
surrounded by fluids, especially when constrained by collisions
or pinned vertices, and should result in more realistic shapes.
Obviously, this doesn't actually simulate fluid dynamics; instead
it is assumed that the fluid immediately adapts to changes in the
shape or acceleration of the object without friction or turbulence,
and instantly reaches a new static equilibrium.
Differential Revision: https://developer.blender.org/D6442
Diffstat (limited to 'source/blender/makesdna')
-rw-r--r-- | source/blender/makesdna/DNA_cloth_types.h | 4 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_pointcache_types.h | 1 |
2 files changed, 4 insertions, 1 deletions
diff --git a/source/blender/makesdna/DNA_cloth_types.h b/source/blender/makesdna/DNA_cloth_types.h index 8f3a26cf9c0..2b66bb771e1 100644 --- a/source/blender/makesdna/DNA_cloth_types.h +++ b/source/blender/makesdna/DNA_cloth_types.h @@ -109,8 +109,10 @@ typedef struct ClothSimSettings { pressure=( (current_volume/target_volume) - 1 + uniform_pressure_force) * pressure_factor */ float pressure_factor; + /* Density of the fluid inside or outside the object for use in the hydrostatic pressure gradient. */ + float fluid_density; short vgroup_pressure; - char _pad7[2]; + char _pad7[6]; /* XXX various hair stuff * should really be separate, this struct is a horrible mess already diff --git a/source/blender/makesdna/DNA_pointcache_types.h b/source/blender/makesdna/DNA_pointcache_types.h index fcdc22ca56d..3c7fc9031de 100644 --- a/source/blender/makesdna/DNA_pointcache_types.h +++ b/source/blender/makesdna/DNA_pointcache_types.h @@ -50,6 +50,7 @@ extern "C" { #define BPHYS_TOT_DATA 8 #define BPHYS_EXTRA_FLUID_SPRINGS 1 +#define BPHYS_EXTRA_CLOTH_ACCELERATION 2 typedef struct PTCacheExtra { struct PTCacheExtra *next, *prev; |