[Bf-blender-cvs] [ca7431c4835] fluid-mantaflow: more sanity checks for fluid guiding

Sebastián Barschkis noreply at git.blender.org
Tue Jul 10 23:19:06 CEST 2018


Commit: ca7431c4835ca873fe39eda965607970c530118b
Author: Sebastián Barschkis
Date:   Tue Jul 10 23:18:56 2018 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rBca7431c4835ca873fe39eda965607970c530118b

more sanity checks for fluid guiding

===================================================================

M	intern/mantaflow/intern/FLUID.cpp
M	source/blender/blenkernel/intern/smoke.c

===================================================================

diff --git a/intern/mantaflow/intern/FLUID.cpp b/intern/mantaflow/intern/FLUID.cpp
index 02f1ffd7fb9..3ba0c697d7e 100644
--- a/intern/mantaflow/intern/FLUID.cpp
+++ b/intern/mantaflow/intern/FLUID.cpp
@@ -50,7 +50,7 @@
 
 std::atomic<bool> FLUID::mantaInitialized(false);
 std::atomic<int> FLUID::solverID(0);
-int FLUID::with_debug(1);
+int FLUID::with_debug(0);
 
 FLUID::FLUID(int *res, SmokeModifierData *smd) : mCurrentID(++solverID)
 {
@@ -66,7 +66,7 @@ FLUID::FLUID(int *res, SmokeModifierData *smd) : mCurrentID(++solverID)
 	mUsingInvel    = smd->domain->active_fields & SM_ACTIVE_INVEL;
 	mUsingNoise    = smd->domain->flags & MOD_SMOKE_NOISE;
 	mUsingMesh     = smd->domain->flags & MOD_SMOKE_MESH;
-	mUsingGuiding  = smd->domain->flags & MOD_SMOKE_GUIDING || smd->domain->active_fields & SM_ACTIVE_GUIDING;
+	mUsingGuiding  = smd->domain->flags & MOD_SMOKE_GUIDING;
 	mUsingLiquid   = smd->domain->type == MOD_SMOKE_DOMAIN_TYPE_LIQUID;
 	mUsingSmoke    = smd->domain->type == MOD_SMOKE_DOMAIN_TYPE_GAS;
 	mUsingDrops    = smd->domain->particle_type & MOD_SMOKE_PARTICLE_DROP;
@@ -83,6 +83,7 @@ FLUID::FLUID(int *res, SmokeModifierData *smd) : mCurrentID(++solverID)
 	mConstantScaling    = 64.0f / mMaxRes;
 	mConstantScaling    = (mConstantScaling < 1.0f) ? 1.0f : mConstantScaling;
 	mTotalCells         = mResX * mResY * mResZ;
+	mResGuiding         = smd->domain->res;
 
 	// Smoke low res grids
 	mDensity        = NULL;
@@ -685,7 +686,7 @@ std::string FLUID::getRealValue(const std::string& varName,  SmokeModifierData *
 	else if (varName == "USING_OBSTACLE")
 		ss << (smd->domain->active_fields & SM_ACTIVE_OBSTACLE ? "True" : "False");
 	else if (varName == "USING_GUIDING")
-		ss << (smd->domain->flags & MOD_SMOKE_GUIDING || smd->domain->active_fields & SM_ACTIVE_GUIDING ? "True" : "False");
+		ss << (smd->domain->flags & MOD_SMOKE_GUIDING ? "True" : "False");
 	else if (varName == "USING_INVEL")
 		ss << (smd->domain->active_fields & SM_ACTIVE_INVEL ? "True" : "False");
 	else if (varName == "SOLVER_DIM")
diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index db11270ee33..68863e2052e 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -3228,8 +3228,8 @@ static void smokeModifier_process(
 	{
 		SmokeDomainSettings *sds = smd->domain;
 		int startframe, endframe, framenr;
-		Object *guiding_parent;
-		SmokeModifierData *smd_parent;
+		Object *guiding_parent = NULL;
+		SmokeModifierData *smd_parent = NULL;
 		bool is_first_frame;
 		framenr = scene->r.cfra;
 		startframe = sds->cache_frame_start;
@@ -3302,12 +3302,15 @@ static void smokeModifier_process(
 		{
 			if (sds->cache_flag & FLUID_CACHE_BAKING_DATA)
 			{
-				/* Load guiding vel from flow object (only if baked) or domain object? */
-				if (sds->guiding_source == SM_GUIDING_SRC_FLOW && sds->cache_flag & FLUID_CACHE_BAKED_GUIDING) {
-					fluid_read_guiding(sds->fluid, smd, framenr, false);
-				}
-				else if (sds->guiding_source == SM_GUIDING_SRC_DOMAIN && smd_parent) {
-					fluid_read_guiding(sds->fluid, smd_parent, framenr, true);
+				if (sds->flags & MOD_SMOKE_GUIDING)
+				{
+					/* Load guiding vel from flow object (only if baked) or domain object? */
+					if (sds->guiding_source == SM_GUIDING_SRC_FLOW && sds->cache_flag & FLUID_CACHE_BAKED_GUIDING) {
+						fluid_read_guiding(sds->fluid, smd, framenr, false);
+					}
+					else if (sds->guiding_source == SM_GUIDING_SRC_DOMAIN && smd_parent) {
+						fluid_read_guiding(sds->fluid, smd_parent, framenr, true);
+					}
 				}
 
 				/* Refresh all objects if we start baking from a resumed frame */



More information about the Bf-blender-cvs mailing list