[Bf-blender-cvs] [5f39d58] soc-2014-fluid: setup script passed directly; file still created fir debug
Roman Pogribnyi
noreply at git.blender.org
Mon Aug 18 14:54:34 CEST 2014
Commit: 5f39d58e6da019eedb78f3f6f66d9d25ed2fbdc7
Author: Roman Pogribnyi
Date: Mon Aug 18 09:25:54 2014 +0200
Branches: soc-2014-fluid
https://developer.blender.org/rB5f39d58e6da019eedb78f3f6f66d9d25ed2fbdc7
setup script passed directly; file still created fir debug
===================================================================
M intern/smoke/intern/MANTA.cpp
M intern/smoke/intern/MANTA.h
M source/blender/blenkernel/intern/smoke.c
M source/blender/python/manta_pp/pwrapper/pymain.cpp
===================================================================
diff --git a/intern/smoke/intern/MANTA.cpp b/intern/smoke/intern/MANTA.cpp
index ef4169e..fd5fef0 100644
--- a/intern/smoke/intern/MANTA.cpp
+++ b/intern/smoke/intern/MANTA.cpp
@@ -181,7 +181,7 @@ extern "C" int read_mantaflow_sim(struct SmokeDomainSettings *sds, char *name, b
return 0;
}
-void indent_ss(stringstream& ss, int indent)
+void indent_ss(ostringstream& ss, int indent)
{
/*two-spaces indent*/
if (indent < 0) return;
@@ -192,7 +192,7 @@ void indent_ss(stringstream& ss, int indent)
ss << indentation;
}
-void manta_gen_noise(stringstream& ss, char* solver, int indent, char *noise, int seed, bool load, bool clamp, float clampNeg, float clampPos, float valScale, float valOffset, float timeAnim)
+void manta_gen_noise(ostringstream& ss, char* solver, int indent, char *noise, int seed, bool load, bool clamp, float clampNeg, float clampPos, float valScale, float valOffset, float timeAnim)
{
if (ss == NULL)/*should never be here*/
{
@@ -209,7 +209,7 @@ void manta_gen_noise(stringstream& ss, char* solver, int indent, char *noise, in
ss << noise << ".timeAnim = " << timeAnim << " \n";
}
-void manta_solve_pressure(stringstream& ss, char *flags, char *vel, char *pressure, bool useResNorms, int openBound, int solver_res,float cgMaxIterFac, float cgAccuracy)
+void manta_solve_pressure(ostringstream& ss, char *flags, char *vel, char *pressure, bool useResNorms, int openBound, int solver_res,float cgMaxIterFac, float cgAccuracy)
{
/*open:0 ; vertical : 1; closed:2*/
ss << " solvePressure(flags=" << flags << ", vel=" << vel << ", pressure=" << pressure << ", useResNorm=" << (useResNorms?"True":"False") << ", openBound='";
@@ -230,7 +230,7 @@ void manta_solve_pressure(stringstream& ss, char *flags, char *vel, char *pressu
ss << ", cgMaxIterFac=" << cgMaxIterFac << ", cgAccuracy=" << cgAccuracy << ") \n";
}
-void manta_advect_SemiLagr(stringstream& ss, int indent, char *flags, char *vel, char *grid, int order)
+void manta_advect_SemiLagr(ostringstream& ss, int indent, char *flags, char *vel, char *grid, int order)
{
if((order <=1) || (flags == NULL) || (vel == NULL) || (grid == NULL)){return;}
indent_ss(ss, indent);
@@ -239,7 +239,7 @@ void manta_advect_SemiLagr(stringstream& ss, int indent, char *flags, char *vel,
}
/*create solver, handle 2D case*/
-void manta_create_solver(stringstream& ss, char *name, char *nick, char *grid_size_name, int x_res, int y_res, int z_res, int dim)
+void manta_create_solver(ostringstream& ss, char *name, char *nick, char *grid_size_name, int x_res, int y_res, int z_res, int dim)
{
if ((dim != 2) && (dim != 3))
{ return; }
@@ -254,7 +254,7 @@ inline bool file_exists (const std::string& name) {
}
/*blender transforms obj coords to [-1,1]. This method transforms them back*/
-void add_mesh_transform_method(stringstream& ss)
+void add_mesh_transform_method(ostringstream& ss)
{
ss << "def transform_back(obj, gs):\n" <<
" obj.scale(gs/2)\n" <<
@@ -383,7 +383,7 @@ void generate_manta_sim_file(Scene *scene, SmokeModifierData *smd)
return;
ofstream manta_setup_file;
manta_setup_file.open("manta_scene.py", std::fstream::trunc);
- stringstream ss; /*setup contents*/
+ ostringstream ss; /*setup contents*/
/*header*/
ss << "from manta import * \n";
@@ -586,7 +586,7 @@ void generate_manta_sim_file(Scene *scene, SmokeModifierData *smd)
manta_setup_file.close();
vector<string> a;
a.push_back("manta_scene.py");
- runMantaScript(a);
+ runMantaScript(ss.str(),a);
// run_manta_scene("manta_scene.py");
// manta_sim_running = false;
// for (int frame=0; frame< 20; frame++)
diff --git a/intern/smoke/intern/MANTA.h b/intern/smoke/intern/MANTA.h
index a70b449..22cda57 100644
--- a/intern/smoke/intern/MANTA.h
+++ b/intern/smoke/intern/MANTA.h
@@ -25,27 +25,27 @@ struct manta_arg_struct {
static pthread_t manta_thread;
-void runMantaScript(vector<string>& args);//defined in manta_pp/pwrapper/pymain.cpp
+void runMantaScript(const string&, vector<string>& args);//defined in manta_pp/pwrapper/pymain.cpp
extern "C" bool manta_check_grid_size(struct FLUID_3D *fluid, int dimX, int dimY, int dimZ);
extern "C" int read_mantaflow_sim(struct SmokeDomainSettings *sds, char *name, bool read_wavelets);
-void indent_ss(stringstream& ss, int indent);
+void indent_ss(ostringstream& ss, int indent);
-void manta_gen_noise(stringstream& ss, char* solver, int indent, char *noise, int seed, bool load, bool clamp, float clampNeg, float clampPos, float valScale, float valOffset, float timeAnim);
+void manta_gen_noise(ostringstream& ss, char* solver, int indent, char *noise, int seed, bool load, bool clamp, float clampNeg, float clampPos, float valScale, float valOffset, float timeAnim);
-void manta_solve_pressure(stringstream& ss, char *flags, char *vel, char *pressure, bool useResNorms, int openBound, int solver_res,float cgMaxIterFac=1.0, float cgAccuracy = 0.01);
+void manta_solve_pressure(ostringstream& ss, char *flags, char *vel, char *pressure, bool useResNorms, int openBound, int solver_res,float cgMaxIterFac=1.0, float cgAccuracy = 0.01);
-void manta_advect_SemiLagr(stringstream& ss, int indent, char *flags, char *vel, char *grid, int order);
+void manta_advect_SemiLagr(ostringstream& ss, int indent, char *flags, char *vel, char *grid, int order);
/*create solver, handle 2D case*/
-void manta_create_solver(stringstream& ss, char *name, char *nick, char *grid_size_name, int x_res, int y_res, int z_res, int dim);
+void manta_create_solver(ostringstream& ss, char *name, char *nick, char *grid_size_name, int x_res, int y_res, int z_res, int dim);
inline bool file_exists (const std::string& name);
/*blender transforms obj coords to [-1,1]. This method transforms them back*/
-void add_mesh_transform_method(stringstream& ss);
+void add_mesh_transform_method(ostringstream& ss);
void manta_cache_path(char *filepath);
diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index d5275eb..85300e8 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -2798,7 +2798,7 @@ static void smokeModifier_process(SmokeModifierData *smd, Scene *scene, Object *
// simulate the actual smoke (c++ code in intern/smoke)
// DG: interesting commenting this line + deactivating loading of noise files
- if(smd->domain->flags & MOD_SMOKE_USE_MANTA) /*load manta sim data into fluid object*/
+ if(framenr != startframe && smd->domain->flags & MOD_SMOKE_USE_MANTA) /*load manta sim data into fluid object*/
{
smoke_mantaflow_sim_step(scene,smd);
const char *density_name_format = "./den%04d.uni";
diff --git a/source/blender/python/manta_pp/pwrapper/pymain.cpp b/source/blender/python/manta_pp/pwrapper/pymain.cpp
index d08bd34..c324703 100644
--- a/source/blender/python/manta_pp/pwrapper/pymain.cpp
+++ b/source/blender/python/manta_pp/pwrapper/pymain.cpp
@@ -92,7 +92,7 @@ void export_force_fields(int size_x, int size_y, int size_z, float *f_x, float*f
// writeGridTxt("s.txt", &force_fields);
}
-void runMantaScript(vector<string>& args) {
+void runMantaScript(const string& ss,vector<string>& args) {
string filename = args[0];
// Initialize extension classes and wrappers
@@ -141,7 +141,10 @@ void runMantaScript(vector<string>& args) {
delete[] buf;
#else
// for linux, use this as it produces nicer error messages
- PyRun_SimpleFileEx(fp, filename.c_str(), 0);
+ string toExec = "";
+
+ PyRun_SimpleString(ss.c_str());
+ // PyRun_SimpleFileEx(fp, filename.c_str(), 0);
// for (int frame=0; frame < 4; ++frame)
// {
// std::string frame_str = static_cast<ostringstream*>( &(ostringstream() << frame) )->str();
@@ -166,22 +169,22 @@ void runMantaScript(vector<string>& args) {
delete [] cargs;
}
-int manta_main(int argc,char* argv[]) {
- debMsg("Version: "<< buildInfoString() , 1);
-
-#ifdef GUI
- guiMain(argc, argv);
-#else
- if (argc<=1) {
- cerr << "Usage : Syntax is 'manta <config.py>'" << endl;
- return 1;
- }
-
- vector<string> args;
- for (int i=1; i<argc; i++) args.push_back(argv[i]);
- runMantaScript(args);
-#endif
-
- return 0;
-}
+//int manta_main(int argc,char* argv[]) {
+// debMsg("Version: "<< buildInfoString() , 1);
+//
+//#ifdef GUI
+// guiMain(argc, argv);
+//#else
+// if (argc<=1) {
+// cerr << "Usage : Syntax is 'manta <config.py>'" << endl;
+// return 1;
+// }
+//
+// vector<string> args;
+// for (int i=1; i<argc; i++) args.push_back(argv[i]);
+// runMantaScript(args);
+//#endif
+//
+// return 0;
+//}
#endif
\ No newline at end of file
More information about the Bf-blender-cvs
mailing list