[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