[Bf-blender-cvs] [f45d319] soc-2014-fluid: division between high-res and low-res manta operations
Roman Pogribnyi
noreply at git.blender.org
Tue Nov 11 23:43:07 CET 2014
Commit: f45d319d60cfef5ecdf6d2863cd17a0fd0d6e7ad
Author: Roman Pogribnyi
Date: Sun Nov 2 14:20:54 2014 +0100
Branches: soc-2014-fluid
https://developer.blender.org/rBf45d319d60cfef5ecdf6d2863cd17a0fd0d6e7ad
division between high-res and low-res manta operations
===================================================================
M intern/smoke/intern/MANTA.cpp
M intern/smoke/intern/MANTA.h
M intern/smoke/intern/scenarios/smoke.h
M intern/smoke/intern/smoke_API.cpp
===================================================================
diff --git a/intern/smoke/intern/MANTA.cpp b/intern/smoke/intern/MANTA.cpp
index 68918c4..40e373b 100644
--- a/intern/smoke/intern/MANTA.cpp
+++ b/intern/smoke/intern/MANTA.cpp
@@ -420,7 +420,7 @@ void Manta_API::run_manta_sim_thread(Manta_API *fluid)
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(").append(frame_str);
+ std::string py_string_0 = string("sim_step_low(").append(frame_str);
std::string py_string_1 = py_string_0.append(")\0");
cout << "Debug C++: densityPointer:" << Manta_API::getGridPointer("density", "s")<<endl;
PyRun_SimpleString("print ('pyhton density pointer:' + density.getDataPointer())");
@@ -432,31 +432,24 @@ void Manta_API::run_manta_sim_thread(Manta_API *fluid)
updatePointers();
}
-void Manta_API::generate_manta_sim_file(SmokeModifierData *smd)
+void Manta_API::generate_manta_sim_file_lowRes(SmokeModifierData *smd)
{
-// /*create python file with 2-spaces indentation*/
- bool wavelets = smd->domain->flags & MOD_SMOKE_HIGHRES;
-// bool noise_clamp = smd->domain->flags & MOD_SMOKE_NOISE_CLAMP;
-// float noise_clamp_neg = smd->domain->noise_clamp_neg;
-// float noise_clamp_pos = smd->domain->noise_clamp_pos;
-// float noise_val_scale = smd->domain->noise_val_scale;
-// float noise_val_offset = smd->domain->noise_val_offset;
-// float noise_time_anim = smd->domain->noise_time_anim;
-// int num_sim_frames = smd->domain->manta_end_frame - smd->domain->manta_start_frame + 1;
-// if(num_sim_frames < 1)
-// return;
-
- /*constrcting final setup*/
- string smoke_script = smoke_setup_low + ((wavelets)?smoke_setup_high:"") + smoke_step_low + ((wavelets)?smoke_step_high:"");
-// ofstream manta_setup_file;
-// manta_setup_file.open("manta_scene.py", std::fstream::trunc);
-// manta_setup_file << smoke_script ;
-// manta_setup_file.close();
+ string smoke_script = smoke_setup_low + smoke_step_low ;
std::string final_script = parseScript(smoke_script, smd);
vector<string> a;
a.push_back("manta_scene.py");
- runMantaScript(final_script,a);
+ runMantaScript(final_script,a); /*need this to delete previous solvers and grids*/
+ updatePointers();
+}
+
+void Manta_API::generate_manta_sim_file_highRes(SmokeModifierData *smd)
+{
+ string smoke_script = smoke_setup_high + smoke_step_high;
+ std::string final_script = parseScript(smoke_script, smd);
+ PyGILState_STATE gilstate = PyGILState_Ensure();
+ PyRun_SimpleString(final_script.c_str());
+ PyGILState_Release(gilstate);
updatePointers();
}
@@ -737,7 +730,7 @@ Manta_API::Manta_API(int *res, float dx, float dtdef, int init_heat, int init_fi
// _colloPrev = 1; // default value
sds->fluid = this;
- generate_manta_sim_file(sds->smd);
+ generate_manta_sim_file_lowRes(sds->smd);
}
Manta_API::~Manta_API()
diff --git a/intern/smoke/intern/MANTA.h b/intern/smoke/intern/MANTA.h
index c792b09..7b5de1d 100644
--- a/intern/smoke/intern/MANTA.h
+++ b/intern/smoke/intern/MANTA.h
@@ -105,7 +105,8 @@ public:
void stop_manta_sim();
- void generate_manta_sim_file(SmokeModifierData *smd);
+ void generate_manta_sim_file_lowRes(SmokeModifierData *smd);
+ void generate_manta_sim_file_highRes(SmokeModifierData *smd);
void manta_sim_step(int frame);
diff --git a/intern/smoke/intern/scenarios/smoke.h b/intern/smoke/intern/scenarios/smoke.h
index 3b08898..26f3c59 100644
--- a/intern/smoke/intern/scenarios/smoke.h
+++ b/intern/smoke/intern/scenarios/smoke.h
@@ -78,7 +78,7 @@ if $USE_WAVELETS$ and $UPRES$ > 0:\n\
xl_wltnoise.timeAnim = 0.1 \n\
";
-const string smoke_step_low = "def sim_step(t):\n\
+const string smoke_step_low = "def sim_step_low(t):\n\
print ('Step:' + str(t))\n\
#load_once(source,'manta_flow.obj',dict_loaded)\n\
#if t == 2:#loading data on first sim frame only\n\
@@ -121,7 +121,8 @@ const string smoke_step_low = "def sim_step(t):\n\
// #os.rename('den%04d_temp.uni' % t, 'den%04d.uni' % t) \n\
// s.step()\n";
-const string smoke_step_high = " interpolateMACGrid( source=vel, target=xl_vel ) \n\
+const string smoke_step_high = "def sim_step_high(t):\n\
+ interpolateMACGrid( source=vel, target=xl_vel ) \n\
sStr = 1.0 * wltStrength \n\
sPos = 2.0 \n\
for o in range(octaves): \n\
diff --git a/intern/smoke/intern/smoke_API.cpp b/intern/smoke/intern/smoke_API.cpp
index 4222103..2b24608 100644
--- a/intern/smoke/intern/smoke_API.cpp
+++ b/intern/smoke/intern/smoke_API.cpp
@@ -84,7 +84,9 @@ extern "C" void smoke_initBlenderRNA(Manta_API *fluid, float *alpha, float *beta
extern "C" void smoke_initWaveletBlenderRNA(WTURBULENCE *wt, float *strength)
{
+ //PR: TODO
wt->initBlenderRNA(strength);
+
}
static void data_dissolve(float *density, float *heat, float *r, float *g, float *b, int total_cells, int speed, int log)
@@ -187,18 +189,18 @@ extern "C" void smoke_turbulence_export(WTURBULENCE *wt, float **dens, float **r
return;
*dens = wt->_densityBig;
- if(fuel)
- *fuel = wt->_fuelBig;
- if(react)
- *react = wt->_reactBig;
- if(flame)
- *flame = wt->_flameBig;
- if(r)
- *r = wt->_color_rBig;
- if(g)
- *g = wt->_color_gBig;
- if(b)
- *b = wt->_color_bBig;
+// if(fuel)
+// *fuel = wt->_fuelBig;
+// if(react)
+// *react = wt->_reactBig;
+// if(flame)
+// *flame = wt->_flameBig;
+// if(r)
+// *r = wt->_color_rBig;
+// if(g)
+// *g = wt->_color_gBig;
+// if(b)
+// *b = wt->_color_bBig;
*tcu = wt->_tcU;
*tcv = wt->_tcV;
*tcw = wt->_tcW;
@@ -415,7 +417,6 @@ extern "C" void smoke_get_ob_velocity(Manta_API *fluid, float **x, float **y, fl
extern "C" void smoke_turbulence_set_noise(WTURBULENCE *wt, int type, const char *noisefile_path)
{
- wt->setNoise(type, noisefile_path);
}
extern "C" void flame_get_spectrum(unsigned char *spec, int width, float t1, float t2)
@@ -979,7 +980,7 @@ extern "C" int smoke_mantaflow_read(struct SmokeDomainSettings *sds, char* name,
extern "C" void smoke_mantaflow_write_scene_file(struct SmokeModifierData *smd)
{
- smd->domain->fluid->generate_manta_sim_file(smd);
+ smd->domain->fluid->generate_manta_sim_file_lowRes(smd);
}
//extern "C" void smoke_mantaflow_sim_step(Scene *scene, SmokeModifierData *smd)
More information about the Bf-blender-cvs
mailing list