Commit: cd76de8410c7f0559c717dfdef981fa508a09a5d
Author: Sebastián Barschkis
Date:   Tue Sep 8 00:39:02 2015 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rBcd76de8410c7f0559c717dfdef981fa508a09a5d

work on high resolution fire

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

M       intern/smoke/intern/FLUID_3D.cpp
M       intern/smoke/intern/MANTA.cpp
M       intern/smoke/intern/WTURBULENCE.cpp
M       intern/smoke/intern/WTURBULENCE.h
M       intern/smoke/intern/scenarios/smoke.h

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

diff --git a/intern/smoke/intern/FLUID_3D.cpp b/intern/smoke/intern/FLUID_3D.cpp
index a272588..a0a6eed 100644
--- a/intern/smoke/intern/FLUID_3D.cpp
+++ b/intern/smoke/intern/FLUID_3D.cpp
@@ -524,11 +524,9 @@ void FLUID_3D::updateFlame(float *react, float *flame, int 
total_cells)
        }
 }
 
-/*===============================================================================================*/
-/*===============================================================================================*/
+//////////////////////////////////////////////////////////////////////
 #else /*USING MANTAFLOW STRUCTURES*/
-/*===============================================================================================*/
-/*===============================================================================================*/
+//////////////////////////////////////////////////////////////////////
 
 FLUID_3D::FLUID_3D(int *res, float dx, float dtdef, int init_heat, int 
init_fire, int init_colors, SmokeModifierData *smd) :
 _xRes(res[0]), _yRes(res[1]), _zRes(res[2]), _res(0.0f)
@@ -1249,6 +1247,7 @@ void FLUID_3D::wipeBoundariesSL(int zBegin, int zEnd)
        }
        
 }
+
 //////////////////////////////////////////////////////////////////////
 // add forces to velocity field
 //////////////////////////////////////////////////////////////////////
diff --git a/intern/smoke/intern/MANTA.cpp b/intern/smoke/intern/MANTA.cpp
index e2cffbf..8f11a51 100644
--- a/intern/smoke/intern/MANTA.cpp
+++ b/intern/smoke/intern/MANTA.cpp
@@ -642,14 +642,11 @@ void Manta_API::updatePointers(FLUID_3D *fluid, bool 
updateColor)
                fluid->_density = (float* 
)pointerFromString(getGridPointer("density", "s"));   
                fluid->_manta_flags = (int* 
)pointerFromString(getGridPointer("flags", "s"));
        }
-//     fluid->_density = (float* )pointerFromString(getGridPointer("density", 
"s"));
        
        fluid->_manta_inflow = (float* 
)pointerFromString(getGridPointer("inflow_grid", "s"));
        if (fluid-> manta_resoution == 2){return;}
        if (fluid->using_colors) {
-               cout<< "POINTER FOR R_LOW" << fluid->_color_r<< endl;
                fluid->_color_r = (float* 
)pointerFromString(getGridPointer("color_r_low", "s"));
-               cout<< "POINTER FOR R_LOW" << fluid->_color_r<< endl;
                fluid->_color_g = (float* 
)pointerFromString(getGridPointer("color_g_low", "s"));
                fluid->_color_b = (float* 
)pointerFromString(getGridPointer("color_b_low", "s"));
        }
@@ -669,11 +666,14 @@ void Manta_API::updateHighResPointers(WTURBULENCE *wt, 
bool updateColor)
 {
        wt->_densityBig = (float* 
)pointerFromString(getGridPointer("xl_density", "xl"));;
        if (updateColor){
-               cout<< "POINTER FOR R_HIGH" << wt->_color_rBig << endl;
                wt->_color_rBig = (float* 
)pointerFromString(getGridPointer("color_r_high", "xl"));
-               cout<< "POINTER FOR R_HIGH" << wt->_color_rBig << endl;
                wt->_color_gBig = (float* 
)pointerFromString(getGridPointer("color_g_high", "xl"));
                wt->_color_bBig = (float* 
)pointerFromString(getGridPointer("color_b_high", "xl"));
        }
+       if (wt->using_fire) {
+               wt->_flameBig = (float* 
)pointerFromString(getGridPointer("flame_high", "xl"));
+               wt->_fuelBig = (float* 
)pointerFromString(getGridPointer("fuel_high", "xl"));
+               wt->_reactBig = (float* 
)pointerFromString(getGridPointer("react_high", "xl"));
+       }
 }
 
diff --git a/intern/smoke/intern/WTURBULENCE.cpp 
b/intern/smoke/intern/WTURBULENCE.cpp
index 000a78e..4db2c49 100644
--- a/intern/smoke/intern/WTURBULENCE.cpp
+++ b/intern/smoke/intern/WTURBULENCE.cpp
@@ -1204,12 +1204,9 @@ void WTURBULENCE::stepTurbulenceFull(float dtOrg, float* 
xvel, float* yvel, floa
   _totalStepsBig++;
 }
 
-
-
-
-
-
-#else                                           /*USING MANTAFLOW WTURBULENCE*/
+//////////////////////////////////////////////////////////////////////
+#else /*USING MANTAFLOW WTURBULENCE*/
+//////////////////////////////////////////////////////////////////////
 
 WTURBULENCE::WTURBULENCE(int xResSm, int yResSm, int zResSm, int amplify, int 
noisetype, const char *noisefile_path, int init_fire, int 
init_colors,SmokeDomainSettings *sds)
 {
@@ -1256,6 +1253,7 @@ WTURBULENCE::WTURBULENCE(int xResSm, int yResSm, int 
zResSm, int amplify, int no
        /* fire */
        _flameBig = _fuelBig = _fuelBigOld = NULL;
        _reactBig = _reactBigOld = NULL;
+       using_fire = false;
        if (init_fire) {
                initFire();
        }
@@ -1265,7 +1263,6 @@ WTURBULENCE::WTURBULENCE(int xResSm, int yResSm, int 
zResSm, int amplify, int no
        _color_bBig = _color_bBigOld = NULL;
        using_colors = false;
        if (init_colors) {
-               using_colors = true;
                initColors(0.0f, 0.0f, 0.0f);
        }
        
@@ -1297,6 +1294,7 @@ WTURBULENCE::WTURBULENCE(int xResSm, int yResSm, int 
zResSm, int amplify, int no
        Manta_API::generate_manta_sim_file_highRes(sds->smd);
        Manta_API::updateHighResPointers(this,using_colors);
 }
+
 /// destructor
 WTURBULENCE::~WTURBULENCE()
 {
@@ -1323,10 +1321,22 @@ WTURBULENCE::~WTURBULENCE()
        delete[] _noiseTile;
 }
 
-void WTURBULENCE::initFire(){}
+void WTURBULENCE::initFire()
+{
+       if (!_flameBig) {
+               initColors(0.0f, 0.0f, 0.0f);
+
+               using_fire = true;
+               PyGILState_STATE gilstate = PyGILState_Ensure();
+               PyRun_SimpleString(smoke_init_fire_high.c_str());
+               PyGILState_Release(gilstate);
+               Manta_API::updateHighResPointers(this, true);
+       }
+}
+
 void WTURBULENCE::initColors(float init_r, float init_g, float init_b)
 {
-       if (!_color_rBig){
+       if (!_color_rBig) {
                using_colors = true;
                PyGILState_STATE gilstate = PyGILState_Ensure();
                stringstream ss;
@@ -1340,11 +1350,15 @@ void WTURBULENCE::initColors(float init_r, float 
init_g, float init_b)
        }
 }
 
-void WTURBULENCE::setNoise(int type, const char *noisefile_path){}
-void WTURBULENCE::initBlenderRNA(float *strength){}
+void WTURBULENCE::setNoise(int type, const char *noisefile_path)
+{}
+
+void WTURBULENCE::initBlenderRNA(float *strength)
+{}
 
 // step more readable version -- no rotation correction
-void WTURBULENCE::stepTurbulenceReadable(float dt, float* xvel, float* yvel, 
float* zvel, unsigned char *obstacles){
+void WTURBULENCE::stepTurbulenceReadable(float dt, float* xvel, float* yvel, 
float* zvel, unsigned char *obstacles)
+{
        PyGILState_STATE gilstate = PyGILState_Ensure();
        int sim_frame = 1;
        //      manta_write_effectors(fluid);
@@ -1358,7 +1372,8 @@ void WTURBULENCE::stepTurbulenceReadable(float dt, float* 
xvel, float* yvel, flo
 
 // step more complete version -- include rotation correction
 // and use OpenMP if available
-void WTURBULENCE::stepTurbulenceFull(float dt, float* xvel, float* yvel, 
float* zvel, unsigned char *obstacles){
+void WTURBULENCE::stepTurbulenceFull(float dt, float* xvel, float* yvel, 
float* zvel, unsigned char *obstacles)
+{
        PyGILState_STATE gilstate = PyGILState_Ensure();
        int sim_frame = 1;
        //      manta_write_effectors(fluid);
@@ -1371,14 +1386,26 @@ void WTURBULENCE::stepTurbulenceFull(float dt, float* 
xvel, float* yvel, float*
 }
 
 // texcoord functions
-void WTURBULENCE::advectTextureCoordinates(float dtOrg, float* xvel, float* 
yvel, float* zvel, float *tempBig1, float *tempBig2){}
-void WTURBULENCE::resetTextureCoordinates(float *_eigMin, float *_eigMax){}
+void WTURBULENCE::advectTextureCoordinates(float dtOrg, float* xvel, float* 
yvel, float* zvel, float *tempBig1, float *tempBig2)
+{}
+
+void WTURBULENCE::resetTextureCoordinates(float *_eigMin, float *_eigMax)
+{}
+
+void WTURBULENCE::computeEnergy(float *energy, float* xvel, float* yvel, 
float* zvel, unsigned char *obstacles)
+{}
+
+void WTURBULENCE::computeEigenvalues(float *_eigMin, float *_eigMax)
+{}
+
+void WTURBULENCE::decomposeEnergy(float *energy, float *_highFreqEnergy)
+{
+}
 
-void WTURBULENCE::computeEnergy(float *energy, float* xvel, float* yvel, 
float* zvel, unsigned char *obstacles){}
+Vec3 WTURBULENCE::WVelocity(Vec3 p)
+{return Vec3(0.);}
 
-void WTURBULENCE::computeEigenvalues(float *_eigMin, float *_eigMax){}
-void WTURBULENCE::decomposeEnergy(float *energy, float *_highFreqEnergy){}
-Vec3 WTURBULENCE::WVelocity(Vec3 p){return Vec3(0.);}
-Vec3 WTURBULENCE::WVelocityWithJacobian(Vec3 p, float* xUnwarped, float* 
yUnwarped, float* zUnwarped){return Vec3(0.);}
+Vec3 WTURBULENCE::WVelocityWithJacobian(Vec3 p, float* xUnwarped, float* 
yUnwarped, float* zUnwarped)
+{return Vec3(0.);}
 
 #endif
diff --git a/intern/smoke/intern/WTURBULENCE.h 
b/intern/smoke/intern/WTURBULENCE.h
index 787177b..e63644d 100644
--- a/intern/smoke/intern/WTURBULENCE.h
+++ b/intern/smoke/intern/WTURBULENCE.h
@@ -121,6 +121,7 @@ struct WTURBULENCE
                float* _fuelBigOld;
                float* _reactBig;
                float* _reactBigOld;
+               bool using_fire;
 
                float* _color_rBig;
                float* _color_rBigOld;
diff --git a/intern/smoke/intern/scenarios/smoke.h 
b/intern/smoke/intern/scenarios/smoke.h
index 6ff7347..ae0ec10 100644
--- a/intern/smoke/intern/scenarios/smoke.h
+++ b/intern/smoke/intern/scenarios/smoke.h
@@ -130,6 +130,12 @@ fuel_low = s.create(RealGrid)\n\
 react_low = s.create(RealGrid)\n\
 manta_using_fire = True\n";
 
+const string smoke_init_fire_high = "print(\"Initializing fire highres\")\n\
+flame_high = xl.create(RealGrid)\n\
+fuel_high = xl.create(RealGrid)\n\
+react_high = xl.create(RealGrid)\n\
+manta_using_fire = True\n";
+
 const string smoke_del_colors_high = "\n\
 del color_r_high \n\
 del color_g_high \n\
@@ -157,7 +163,8 @@ if (GUI):\n\
   gui.pause()\n\
 \n\
 for step in range(100):\n\
-  sim_step_low(step, True)\n";
+  sim_step_low(step, True)\n\
+";
 
 const string smoke_step_low = "def sim_step_low(t, standalone = False):\n\
   #applying inflow\n\
@@ -180,13 +187,13 @@ const string smoke_step_low = "def sim_step_low(t, 
standalone = False):\n\
   else:\n\
     gravity=vec3(0,0,-0.01 * $ALPHA$) if solver_dim==3 else vec3(0,-0.01* 
$ALPHA$,0)\n\
     addBuoyancy(density=density, vel=vel, gravity=gravity, flags=flags)\n\
-  print ('Advecting colors')\n\
   if manta_using_colors:\n\
+    print ('Advecting colors')\n\
     advectSemiLagrange(flags=flags, vel=vel, grid=color_r_low, 
order=$ADVECT_ORDER$)\n\
     advectSemiLagrange(flags=flags, vel=vel, grid=color_g_low, 
order=$ADVECT_ORDER$)\n\
     advectSemiLagrange(flags=flags, vel=vel, grid=color_b_low, 
order=$ADVECT_ORDER$)\n\
-  print ('Advecting fire grids')\n\
   if manta_using_fire:\n\
+    print ('Advecting fire')\n\
     advectSemiLagrange(flags=flags, vel=vel, grid=fuel_low, 
order=$ADVECT_ORDER$)\n\
  

@@ Diff output truncated at 10240 characters. @@

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

Reply via email to