From cd0a6ff5c45382fa5620dc6dbf089e2909e38a78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Barschkis?= Date: Thu, 5 Mar 2020 12:35:50 +0100 Subject: Fluid: Diffusion settings now optional For optimization purposes these settings need to be enabled explicitly from now on. --- intern/mantaflow/intern/MANTA_main.cpp | 2 ++ intern/mantaflow/intern/strings/fluid_script.h | 1 + intern/mantaflow/intern/strings/liquid_script.h | 4 ++-- release/scripts/startup/bl_ui/properties_physics_fluid.py | 8 ++++++++ source/blender/makesdna/DNA_fluid_types.h | 1 + source/blender/makesrna/intern/rna_fluid.c | 7 +++++++ 6 files changed, 21 insertions(+), 2 deletions(-) diff --git a/intern/mantaflow/intern/MANTA_main.cpp b/intern/mantaflow/intern/MANTA_main.cpp index 4759888e234..37d92de155e 100644 --- a/intern/mantaflow/intern/MANTA_main.cpp +++ b/intern/mantaflow/intern/MANTA_main.cpp @@ -981,6 +981,8 @@ std::string MANTA::getRealValue(const std::string &varName, FluidModifierData *m ss << (mmd->domain->flags & FLUID_DOMAIN_USE_FRACTIONS ? "True" : "False"); else if (varName == "DELETE_IN_OBSTACLE") ss << (mmd->domain->flags & FLUID_DOMAIN_DELETE_IN_OBSTACLE ? "True" : "False"); + else if (varName == "USING_DIFFUSION") + ss << (mmd->domain->flags & FLUID_DOMAIN_USE_DIFFUSION ? "True" : "False"); else std::cout << "ERROR: Unknown option: " << varName << std::endl; return ss.str(); diff --git a/intern/mantaflow/intern/strings/fluid_script.h b/intern/mantaflow/intern/strings/fluid_script.h index abfc1eff566..c442dd56c09 100644 --- a/intern/mantaflow/intern/strings/fluid_script.h +++ b/intern/mantaflow/intern/strings/fluid_script.h @@ -112,6 +112,7 @@ using_invel_s$ID$ = $USING_INVEL$\n\ using_outflow_s$ID$ = $USING_OUTFLOW$\n\ using_sndparts_s$ID$ = $USING_SNDPARTS$\n\ using_speedvectors_s$ID$ = $USING_SPEEDVECTORS$\n\ +using_diffusion_s$ID$ = $USING_DIFFUSION$\n\ \n\ # Fluid time params\n\ timeTotal_s$ID$ = $TIME_TOTAL$\n\ diff --git a/intern/mantaflow/intern/strings/liquid_script.h b/intern/mantaflow/intern/strings/liquid_script.h index d3ab4db954c..011b8c4cb1a 100644 --- a/intern/mantaflow/intern/strings/liquid_script.h +++ b/intern/mantaflow/intern/strings/liquid_script.h @@ -266,14 +266,14 @@ def liquid_step_$ID$():\n\ if using_obstacle_s$ID$:\n\ mantaMsg('Extrapolating object velocity')\n\ # ensure velocities inside of obs object, slightly add obvels outside of obs object\n\ - extrapolateVec3Simple(vel=obvelC_s$ID$, phi=phiObsIn_s$ID$, distance=int(res_s$ID$/2), inside=True)\n\ + extrapolateVec3Simple(vel=obvelC_s$ID$, phi=phiObsIn_s$ID$, distance=6, inside=True)\n\ extrapolateVec3Simple(vel=obvelC_s$ID$, phi=phiObsIn_s$ID$, distance=3, inside=False)\n\ resampleVec3ToMac(source=obvelC_s$ID$, target=obvel_s$ID$)\n\ \n\ extrapolateMACSimple(flags=flags_s$ID$, vel=vel_s$ID$, distance=2, intoObs=True if using_fractions_s$ID$ else False)\n\ \n\ # vel diffusion / viscosity!\n\ - if viscosity_s$ID$ > 0.:\n\ + if using_diffusion_s$ID$:\n\ mantaMsg('Viscosity')\n\ # diffusion param for solve = const * dt / dx^2\n\ alphaV = viscosity_s$ID$ * s$ID$.timestep * float(res_s$ID$*res_s$ID$)\n\ diff --git a/release/scripts/startup/bl_ui/properties_physics_fluid.py b/release/scripts/startup/bl_ui/properties_physics_fluid.py index 117352bf8f4..71170c04494 100644 --- a/release/scripts/startup/bl_ui/properties_physics_fluid.py +++ b/release/scripts/startup/bl_ui/properties_physics_fluid.py @@ -957,6 +957,14 @@ class PHYSICS_PT_diffusion(PhysicButtonsPanel, Panel): return (context.engine in cls.COMPAT_ENGINES) + def draw_header(self, context): + md = context.fluid.domain_settings + domain = context.fluid.domain_settings + is_baking_any = domain.is_cache_baking_any + has_baked_any = domain.has_cache_baked_any + self.layout.enabled = not is_baking_any and not has_baked_any + self.layout.prop(md, "use_diffusion", text="") + def draw_header_preset(self, _context): FLUID_PT_presets.draw_panel_header(self.layout) diff --git a/source/blender/makesdna/DNA_fluid_types.h b/source/blender/makesdna/DNA_fluid_types.h index 56ad9246109..12b1ac2b06d 100644 --- a/source/blender/makesdna/DNA_fluid_types.h +++ b/source/blender/makesdna/DNA_fluid_types.h @@ -42,6 +42,7 @@ enum { FLUID_DOMAIN_EXPORT_MANTA_SCRIPT = (1 << 12), /* Export mantaflow script during bake. */ FLUID_DOMAIN_USE_FRACTIONS = (1 << 13), /* Use second order obstacles. */ FLUID_DOMAIN_DELETE_IN_OBSTACLE = (1 << 14), /* Delete fluid inside obstacles. */ + FLUID_DOMAIN_USE_DIFFUSION = (1 << 15), /* Use diffusion (e.g. viscosity, surface tension). */ }; /* Border collisions. */ diff --git a/source/blender/makesrna/intern/rna_fluid.c b/source/blender/makesrna/intern/rna_fluid.c index 7b6ca8b2273..750831668b7 100644 --- a/source/blender/makesrna/intern/rna_fluid.c +++ b/source/blender/makesrna/intern/rna_fluid.c @@ -1563,6 +1563,13 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna) /* diffusion options */ + prop = RNA_def_property(srna, "use_diffusion", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flags", FLUID_DOMAIN_USE_DIFFUSION); + RNA_def_property_ui_text( + prop, "Use Diffusion", "Enable fluid diffusion settings (e.g. viscosity, surface tension)"); + RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); + RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_reset"); + prop = RNA_def_property(srna, "surface_tension", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 100.0); RNA_def_property_ui_text( -- cgit v1.2.3