Commit: c4114562634331901c8b9ce6751a83e3dfc8cb1f
Author: Sebastián Barschkis
Date:   Fri Oct 9 12:48:24 2015 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rBc4114562634331901c8b9ce6751a83e3dfc8cb1f

refactored manta script creation

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

M       intern/smoke/intern/FLUID_3D.cpp
M       intern/smoke/intern/MANTA.cpp
M       intern/smoke/intern/MANTA.h
M       intern/smoke/intern/WTURBULENCE.cpp
M       intern/smoke/intern/scenarios/smoke.h
M       source/blender/blenkernel/intern/smoke.c

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

diff --git a/intern/smoke/intern/FLUID_3D.cpp b/intern/smoke/intern/FLUID_3D.cpp
index d077a2b..77825a6 100644
--- a/intern/smoke/intern/FLUID_3D.cpp
+++ b/intern/smoke/intern/FLUID_3D.cpp
@@ -756,12 +756,9 @@ void FLUID_3D::step(float dt, float gravity[3])
        manta_write_effectors(this);
        Manta_API::updatePointers(this);
 
-       int sim_frame = 1;
        PyGILState_STATE gilstate = PyGILState_Ensure();
-       std::string frame_str = static_cast<ostringstream*>( &(ostringstream() 
<< sim_frame) )->str();
-       std::string py_string_0 = string("sim_step_low(").append(frame_str);
-       std::string py_string_1 = py_string_0.append(")\0");
-       PyRun_SimpleString(py_string_1.c_str());
+       std::string py_string_0 = string("step_low()");
+       PyRun_SimpleString(py_string_0.c_str());
        PyGILState_Release(gilstate);
        Manta_API::updatePointers(this);
 
@@ -779,15 +776,8 @@ void FLUID_3D::processBurn(float *fuel, float *smoke, 
float *react, float *heat,
        initColors(0.0f, 0.0f, 0.0f);
 
        PyGILState_STATE gilstate = PyGILState_Ensure();
-       stringstream ss;
-       ss << "burning_rate = " << *_burning_rate << endl;
-       ss << "flame_smoke = " << *_flame_smoke << endl;
-       ss << "ignition_temp = " << *_ignition_temp << endl;
-       ss << "max_temp = " << *_max_temp << endl;
-       ss << "dt = " << _dt << endl;
-       ss << "flame_smoke_color = vec3(" << _flame_smoke_color[0] << "," << 
_flame_smoke_color[1] << "," << _flame_smoke_color[2] << ")" << endl;
-       PyRun_SimpleString(ss.str().c_str());
-       PyRun_SimpleString(fire_process_burn_low.c_str());
+       std::string py_string_0 = string("process_burn()");
+       PyRun_SimpleString(py_string_0.c_str());
        PyGILState_Release(gilstate);
        Manta_API::updatePointers(this);
 }
@@ -795,7 +785,8 @@ void FLUID_3D::processBurn(float *fuel, float *smoke, float 
*react, float *heat,
 void FLUID_3D::updateFlame(float *react, float *flame, int total_cells)
 {
        PyGILState_STATE gilstate = PyGILState_Ensure();
-       PyRun_SimpleString(fire_update_flame_low.c_str());
+       std::string py_string_0 = string("update_flame()");
+       PyRun_SimpleString(py_string_0.c_str());
        PyGILState_Release(gilstate);
        Manta_API::updatePointers(this);
 }
diff --git a/intern/smoke/intern/MANTA.cpp b/intern/smoke/intern/MANTA.cpp
index c4b3742..5a27465 100644
--- a/intern/smoke/intern/MANTA.cpp
+++ b/intern/smoke/intern/MANTA.cpp
@@ -379,40 +379,25 @@ void Manta_API::export_obstacles(float *data, int x, int 
y, int z, bool is2D = f
        PyGILState_Release(gilstate);           
 }
 
-void Manta_API::run_manta_sim_highRes(WTURBULENCE *wt)
+std::string Manta_API::get_manta_smoke_script(SmokeModifierData *smd)
 {
-       if (wt == NULL) {
-               cout << "ERROR: cannot run wt step, wt object is NULL " <<endl; 
 return;
-       }
-       PyGILState_STATE gilstate = PyGILState_Ensure();
-       int sim_frame = 1;
-//     manta_write_effectors(fluid);
-       std::string frame_str = static_cast<ostringstream*>( &(ostringstream() 
<< sim_frame) )->str();
-       std::string py_string_0 = string("sim_step_high(").append(frame_str);
-       std::string py_string_1 = py_string_0.append(")\0");
-       PyRun_SimpleString("print ('pyhton density pointer:' + 
density.getDataPointer())");
-       PyRun_SimpleString(py_string_1.c_str());
-       PyGILState_Release(gilstate);
-       updateHighResPointers(wt/*,false*/);
-}
-
-std::string Manta_API::get_manta_smoke_script(bool highRes, SmokeModifierData 
*smd)
-{
-       std::string smoke_script = "";
-       if (highRes) {
-               smoke_script = smoke_setup_high + smoke_step_high;
+    std::string smoke_script = "";
+       
+       // Check if high res is enabled
+       if (smd->domain->wt) {
+               smoke_script = smoke_setup_high + smoke_import_high + 
smoke_step_high;
        } else {
                if (smd->domain->flags & MOD_SMOKE_MANTA_USE_LIQUID)
                        smoke_script = smoke_setup_low  + liquid_step_low;
                else
-                       smoke_script = smoke_setup_low  + smoke_step_low;
+                       smoke_script = smoke_setup_low + smoke_import_low + 
smoke_step_low ;
        }
        return smoke_script;
 }
 
 void Manta_API::run_manta_sim_file_lowRes(SmokeModifierData *smd)
 {
-       std::string smoke_script = get_manta_smoke_script(false, smd);
+       std::string smoke_script = get_manta_smoke_script(smd);
        std::string final_script = parseScript(smoke_script, smd);
        
        PyGILState_STATE gilstate = PyGILState_Ensure();
@@ -422,7 +407,7 @@ void Manta_API::run_manta_sim_file_lowRes(SmokeModifierData 
*smd)
 
 void Manta_API::run_manta_sim_file_highRes(SmokeModifierData *smd)
 {
-       std::string smoke_script = get_manta_smoke_script(true, smd);
+       std::string smoke_script = get_manta_smoke_script(smd);
        std::string final_script = parseScript(smoke_script, smd);
        
        PyGILState_STATE gilstate = PyGILState_Ensure();
@@ -433,6 +418,7 @@ void 
Manta_API::run_manta_sim_file_highRes(SmokeModifierData *smd)
 std::string Manta_API::getRealValue( const std::string& varName, 
SmokeModifierData *smd)
 {
        ostringstream ss;
+       cout << "name is " << varName << endl;
        bool is2D = smd->domain->fluid->manta_resoution == 2;
        if (varName == "UVS_CNT")
                ss << smd->domain->manta_uvs_num ;
@@ -518,21 +504,27 @@ std::string Manta_API::getRealValue( const std::string& 
varName, SmokeModifierDa
        else if (varName == "XL_DENSITY_SIZE")
                ss << sizeof(float) * smd->domain->wt->_xResBig * 
smd->domain->wt->_yResBig * smd->domain->wt->_zResBig;
        else if (varName == "BURNING_RATE")
-               ss << smd->domain->fluid->_burning_rate;
+               ss << (smd->domain->burning_rate);
        else if (varName == "FLAME_SMOKE")
-               ss << smd->domain->fluid->_flame_smoke;
+               ss << (smd->domain->flame_smoke);
        else if (varName == "IGNITION_TEMP")
-               ss << smd->domain->fluid->_ignition_temp;
+               ss << (smd->domain->flame_ignition);
        else if (varName == "MAX_TEMP")
-               ss << smd->domain->fluid->_max_temp;
+               ss << (smd->domain->flame_max_temp);
        else if (varName == "DT")
                ss << smd->domain->fluid->_dt;
        else if (varName == "FLAME_SMOKE_COLOR_X")
-               ss << smd->domain->fluid->_flame_smoke_color[0];
+               ss << smd->domain->flame_smoke_color[0];
        else if (varName == "FLAME_SMOKE_COLOR_Y")
-               ss << smd->domain->fluid->_flame_smoke_color[1];
+               ss << smd->domain->flame_smoke_color[1];
        else if (varName == "FLAME_SMOKE_COLOR_Z")
-               ss << smd->domain->fluid->_flame_smoke_color[2];
+               ss << smd->domain->flame_smoke_color[2];
+       else if (varName == "USING_COLORS")
+               ss << ((smd->domain->fluid->using_colors) ? "True" : "False");
+       else if (varName == "USING_HEAT")
+               ss << ((smd->domain->fluid->using_heat) ? "True" : "False");
+       else if (varName == "USING_FIRE")
+               ss << ((smd->domain->fluid->using_fire) ? "True" : "False");
        else 
                cout << "ERROR: Unknown option:" << varName <<endl;
        return ss.str();
@@ -575,7 +567,7 @@ std::string Manta_API::parseScript(const string& 
setup_string, SmokeModifierData
 
 void Manta_API::manta_export_grids(SmokeModifierData *smd)
 {
-       std::string smoke_script = get_manta_smoke_script(false, smd);
+       std::string smoke_script = get_manta_smoke_script(smd);
        std::string final_script = Manta_API::parseScript(smoke_script, smd) + 
standalone;
        
        ofstream myfile;
@@ -584,7 +576,11 @@ void Manta_API::manta_export_grids(SmokeModifierData *smd)
        myfile.close();
        
        PyGILState_STATE gilstate = PyGILState_Ensure();
-       
PyRun_SimpleString(Manta_API::parseScript(smoke_export_low,smd).c_str());
+       if (smd->domain->flags & MOD_SMOKE_HIGHRES) {
+               PyRun_SimpleString(Manta_API::parseScript(smoke_export_high, 
smd).c_str());
+       } else {
+               PyRun_SimpleString(Manta_API::parseScript(smoke_export_low, 
smd).c_str());
+       }
        PyGILState_Release(gilstate);
 }
 
diff --git a/intern/smoke/intern/MANTA.h b/intern/smoke/intern/MANTA.h
index c7c5bc6..ab54397 100644
--- a/intern/smoke/intern/MANTA.h
+++ b/intern/smoke/intern/MANTA.h
@@ -130,7 +130,7 @@ public:
        static void updatePointers(FLUID_3D *fluid);
        static void updateHighResPointers(WTURBULENCE *wt);
        static void manta_export_grids(SmokeModifierData *smd);
-       static std::string get_manta_smoke_script(bool highRes, 
SmokeModifierData *smd);
+       static std::string get_manta_smoke_script(SmokeModifierData *smd);
 };
 
 
diff --git a/intern/smoke/intern/WTURBULENCE.cpp 
b/intern/smoke/intern/WTURBULENCE.cpp
index 1c96b22..59b799a 100644
--- a/intern/smoke/intern/WTURBULENCE.cpp
+++ b/intern/smoke/intern/WTURBULENCE.cpp
@@ -1360,12 +1360,9 @@ void WTURBULENCE::initBlenderRNA(float *strength)
 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);
-       std::string frame_str = static_cast<ostringstream*>( &(ostringstream() 
<< sim_frame) )->str();
-       std::string py_string_0 = string("sim_step_high(").append(frame_str);
-       std::string py_string_1 = py_string_0.append(")\0");
-       PyRun_SimpleString(py_string_1.c_str());
+       std::string py_string_0 = string("step_high()");
+       PyRun_SimpleString(py_string_0.c_str());
        PyGILState_Release(gilstate);
        Manta_API::updateHighResPointers(this);
 }
@@ -1375,12 +1372,9 @@ void WTURBULENCE::stepTurbulenceReadable(float dt, 
float* xvel, float* yvel, flo
 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);
-       std::string frame_str = static_cast<ostringstream*>( &(ostringstream() 
<< sim_frame) )->str();
-       std::string py_string_0 = string("sim_step_high(").append(frame_str);
-       std::string py_string_1 = py_string_0.append(")\0");
-       PyRun_SimpleString(py_string_1.c_str());
+       std::string py_string_0 = string("step_high()");
+       PyRun_SimpleString(py_string_0.c_str());
        PyGILState_Release(gilstate);
        Manta_API::updateHighResPointers(this);
 }
@@ -1412,17 +1406,10 @@ void WTURBULENCE::processBurn(float *burningRate, float 
*flameSmoke, float *igni
 {
        // Need to make sure that color grids are initialized as they are 
needed in processBurn
        initColors(0.0f, 0.0f, 0.0f);
-
+       
        PyGILState_STATE gilstate = PyGILState_Ensure();
-       stringstream ss;
-       ss << "burning_rate = " << *burningRate << endl;
-       ss << "flame_smoke = " << *flameSmoke << endl;
-       ss << "ignition_temp = " << *ignitionTemp << endl;
-       ss << "max_temp = " << *maxTemp << endl;
-       ss << "dt = " << dt << endl;
-       ss << "flame_smoke_color = vec3(" << flameSmokeColor[0] << "," << 
flameSmokeColor[1] <

@@ 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