[Bf-blender-cvs] [fe64157] fluid-mantaflow: improving manta export script
Sebastián Barschkis
noreply at git.blender.org
Thu Jan 28 12:36:54 CET 2016
Commit: fe641570636bc842f30b0cbf718020ded3764c72
Author: Sebastián Barschkis
Date: Tue Oct 6 00:51:00 2015 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rBfe641570636bc842f30b0cbf718020ded3764c72
improving manta export script
===================================================================
M intern/smoke/intern/MANTA.cpp
M intern/smoke/intern/MANTA.h
M intern/smoke/intern/scenarios/smoke.h
===================================================================
diff --git a/intern/smoke/intern/MANTA.cpp b/intern/smoke/intern/MANTA.cpp
index 1cd5b2e..572d58d 100644
--- a/intern/smoke/intern/MANTA.cpp
+++ b/intern/smoke/intern/MANTA.cpp
@@ -381,7 +381,7 @@ void Manta_API::export_obstacles(float *data, int x, int y, int z, bool is2D = f
void Manta_API::run_manta_sim_highRes(WTURBULENCE *wt)
{
- if (wt == NULL){
+ if (wt == NULL) {
cout << "ERROR: cannot run wt step, wt object is NULL " <<endl; return;
}
PyGILState_STATE gilstate = PyGILState_Ensure();
@@ -396,16 +396,25 @@ void Manta_API::run_manta_sim_highRes(WTURBULENCE *wt)
updateHighResPointers(wt/*,false*/);
}
-void Manta_API::run_manta_sim_file_lowRes(SmokeModifierData *smd)
+std::string get_manta_smoke_script(bool highRes, SmokeModifierData *smd)
{
- // Get either liquid or smoke setup string
- string smoke_script = "";
- 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;
+ std::string smoke_script = "";
+ if (highRes) {
+ smoke_script = smoke_setup_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;
+ }
+ 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 final_script = parseScript(smoke_script, smd);
+
PyGILState_STATE gilstate = PyGILState_Ensure();
PyRun_SimpleString(final_script.c_str());
PyGILState_Release(gilstate);
@@ -413,8 +422,9 @@ void Manta_API::run_manta_sim_file_lowRes(SmokeModifierData *smd)
void Manta_API::run_manta_sim_file_highRes(SmokeModifierData *smd)
{
- string smoke_script = smoke_setup_high + smoke_step_high;
+ std::string smoke_script = get_manta_smoke_script(true, smd);
std::string final_script = parseScript(smoke_script, smd);
+
PyGILState_STATE gilstate = PyGILState_Ensure();
PyRun_SimpleString(final_script.c_str());
PyGILState_Release(gilstate);
@@ -539,7 +549,7 @@ std::string Manta_API::parseLine(const string& line, SmokeModifierData *smd)
bool readingVar = false;
const char delimiter = '$';
while (currPos < line.size()){
- if(line[currPos] == delimiter && ! readingVar){
+ if(line[currPos] == delimiter && ! readingVar) {
readingVar = true;
start_del = currPos + 1;
res += line.substr(end_del + 1, currPos - end_del -1);
@@ -555,24 +565,22 @@ std::string Manta_API::parseLine(const string& line, SmokeModifierData *smd)
return res;
}
-std::string Manta_API::parseScript(const string & setup_string, SmokeModifierData *smd)
+std::string Manta_API::parseScript(const string& setup_string, SmokeModifierData *smd)
{
std::istringstream f(setup_string);
ostringstream res;
- string line="";
- while(getline(f,line)){
- res << parseLine(line,smd) << "\n";
+ string line = "";
+ while(getline(f, line)) {
+ res << parseLine(line, smd) << "\n";
}
return res.str();
}
-void Manta_API::manta_export_grids(SmokeModifierData *smd){
- std::string smoke_script;
- 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;
+void Manta_API::manta_export_grids(SmokeModifierData *smd)
+{
+ std::string smoke_script = get_manta_smoke_script(false, smd);
std::string final_script = Manta_API::parseScript(smoke_script, smd) + standalone;
+
ofstream myfile;
myfile.open (smd->domain->_manta_filepath);
myfile << final_script;
@@ -585,7 +593,7 @@ void Manta_API::manta_export_grids(SmokeModifierData *smd){
string Manta_API::getGridPointer(std::string gridName, std::string solverName)
{
- if ((gridName == "") && (solverName == "")){
+ if ((gridName == "") && (solverName == "")) {
return "";
}
cout << "getting grid pointer " << gridName<< " , " << solverName <<endl;
diff --git a/intern/smoke/intern/MANTA.h b/intern/smoke/intern/MANTA.h
index 54cb40d..c7c5bc6 100644
--- a/intern/smoke/intern/MANTA.h
+++ b/intern/smoke/intern/MANTA.h
@@ -130,6 +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);
};
diff --git a/intern/smoke/intern/scenarios/smoke.h b/intern/smoke/intern/scenarios/smoke.h
index 1c71673..20d434a 100644
--- a/intern/smoke/intern/scenarios/smoke.h
+++ b/intern/smoke/intern/scenarios/smoke.h
@@ -159,6 +159,16 @@ density.save(os.path.join('$MANTA_EXPORT_PATH$','density.uni'))\n\
flags.save(os.path.join('$MANTA_EXPORT_PATH$','flags.uni'))\n\
inflow_grid.save(os.path.join('$MANTA_EXPORT_PATH$','inflow.uni'))\n\
forces.save(os.path.join('$MANTA_EXPORT_PATH$','forces.uni'))\n\
+if manta_using_colors:\n\
+ color_r_low.save(os.path.join('$MANTA_EXPORT_PATH$','color_r.uni'))\n\
+ color_g_low.save(os.path.join('$MANTA_EXPORT_PATH$','color_g.uni'))\n\
+ color_b_low.save(os.path.join('$MANTA_EXPORT_PATH$','color_b.uni'))\n\
+if manta_using_heat:\n\
+ heat_low.save(os.path.join('$MANTA_EXPORT_PATH$','heat.uni'))\n\
+if manta_using_fire:\n\
+ flame_low.save(os.path.join('$MANTA_EXPORT_PATH$','flame.uni'))\n\
+ fuel_low.save(os.path.join('$MANTA_EXPORT_PATH$','fuel.uni'))\n\
+ react_low.save(os.path.join('$MANTA_EXPORT_PATH$','react.uni'))\n\
print('Grids exported')";
const string fire_process_burn_low = "\n\
More information about the Bf-blender-cvs
mailing list