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 */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to