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/makesrna/intern/rna_cloth.c | |
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/makesrna/intern/rna_cloth.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_cloth.c | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/source/blender/makesrna/intern/rna_cloth.c b/source/blender/makesrna/intern/rna_cloth.c index 70f219259ef..594b77ea1ad 100644 --- a/source/blender/makesrna/intern/rna_cloth.c +++ b/source/blender/makesrna/intern/rna_cloth.c @@ -975,8 +975,10 @@ static void rna_def_cloth_sim_settings(BlenderRNA *brna) prop = RNA_def_property(srna, "use_pressure_volume", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", CLOTH_SIMSETTINGS_FLAG_PRESSURE_VOL); - RNA_def_property_ui_text( - prop, "Use Custom Volume", "Use the Volume parameter as the initial volume"); + RNA_def_property_ui_text(prop, + "Use Custom Volume", + "Use the Target Volume parameter as the initial volume, instead " + "of calculating it from the mesh itself"); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); RNA_def_property_update(prop, 0, "rna_cloth_update"); @@ -984,10 +986,10 @@ static void rna_def_cloth_sim_settings(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "uniform_pressure_force"); RNA_def_property_range(prop, -10000.0f, 10000.0f); RNA_def_property_float_default(prop, 0.0f); - RNA_def_property_ui_text( - prop, - "Pressure", - "The uniform pressure that is constantly applied to the mesh. Can be negative"); + RNA_def_property_ui_text(prop, + "Pressure", + "The uniform pressure that is constantly applied to the mesh, in units " + "of Pressure Scale. Can be negative"); RNA_def_property_update(prop, 0, "rna_cloth_update"); prop = RNA_def_property(srna, "target_volume", PROP_FLOAT, PROP_NONE); @@ -997,14 +999,28 @@ static void rna_def_cloth_sim_settings(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Target Volume", "The mesh volume where the inner/outer pressure will be the same. If " - "set to zero the volume will not contribute to the total pressure"); + "set to zero the change in volume will not affect pressure"); RNA_def_property_update(prop, 0, "rna_cloth_update"); prop = RNA_def_property(srna, "pressure_factor", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "pressure_factor"); RNA_def_property_range(prop, 0.0f, 10000.0f); RNA_def_property_float_default(prop, 1.0f); - RNA_def_property_ui_text(prop, "Pressure Scale", "Air pressure scaling factor"); + RNA_def_property_ui_text(prop, + "Pressure Scale", + "Ambient pressure (kPa) that balances out between the inside and " + "outside of the object when it has the target volume"); + RNA_def_property_update(prop, 0, "rna_cloth_update"); + + prop = RNA_def_property(srna, "fluid_density", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "fluid_density"); + RNA_def_property_ui_range(prop, -2.0f, 2.0f, 0.05f, 4); + RNA_def_property_ui_text( + prop, + "Fluid Density", + "Density (kg/l) of the fluid contained inside the object, used to create " + "a hydrostatic pressure gradient simulating the weight of the internal fluid, " + "or buoyancy from the surrounding fluid if negative"); RNA_def_property_update(prop, 0, "rna_cloth_update"); prop = RNA_def_property(srna, "vertex_group_pressure", PROP_STRING, PROP_NONE); |