[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46147] branches/smoke2/intern/smoke/ intern/source/smoke.cpp: Revert last commit and fix "!" error in precompute loop

Daniel Genrich daniel.genrich at gmx.net
Tue May 1 13:25:28 CEST 2012


Revision: 46147
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46147
Author:   genscher
Date:     2012-05-01 11:25:28 +0000 (Tue, 01 May 2012)
Log Message:
-----------
Revert last commit and fix "!" error in precompute loop

Modified Paths:
--------------
    branches/smoke2/intern/smoke/intern/source/smoke.cpp

Modified: branches/smoke2/intern/smoke/intern/source/smoke.cpp
===================================================================
--- branches/smoke2/intern/smoke/intern/source/smoke.cpp	2012-05-01 11:21:59 UTC (rev 46146)
+++ branches/smoke2/intern/smoke/intern/source/smoke.cpp	2012-05-01 11:25:28 UTC (rev 46147)
@@ -7,24 +7,23 @@
 {
 	printf("-------------------- SMOKE INIT A-------------------------\n");
 	{ // static scene
-		SolverObject* solver = new SolverObject( "makescene", nVec3i ( 200,80,150 ) );
-		solver->createVec3Grid ( "normal" );
-		solver->createRealGrid ( "dist" );
+		SolverObject* solver = new SolverObject( "makescene", nVec3i ( _res[0], _res[1], _res[2] ), DDF_GRID_NO_FREE );
+		solver->createVec3Grid ( "normal", DDF_GRID_NO_FREE /* Do not free grid when freeing solver */);
+		solver->createRealGrid ( "dist", DDF_GRID_NO_FREE );
 		solver->addInitPlugin ( "init-box-domain",  IntArg ( "flag-inside",FFLUID ) + IntArg ( "flag-border",FINFLOW ) + IntArg("flag-floor", FOBSTACLE) );
+		
 		// obstacles
 		solver->addInitPlugin ( "init-sphere", VecArg("center",Vec3(0.25,0.6,0.35)) + RealArg("radius",0.1) + StringArg("norm","normal")+StringArg("dist","dist"));	
 		solver->addInitPlugin ( "init-box", VecArg("pos1",Vec3(0.2,0.0,0.3)) + VecArg("pos2",Vec3(0.3,0.6,0.4)) + StringArg("norm","normal")+StringArg("dist","dist"));	
 		solver->addInitPlugin ( "init-box", VecArg("pos1",Vec3(0.3,0.0,0.65)) + VecArg("pos2",Vec3(0.5,0.3,0.9)) + StringArg("norm","normal")+StringArg("dist","dist"));	
 		solver->addInitPlugin ( "init-box", VecArg("pos1",Vec3(0.6,0.0,0.3)) + VecArg("pos2",Vec3(0.65,0.4,0.5)) + StringArg("norm","normal")+StringArg("dist","dist"));	
+		
 		// smoke seed
 		solver->addInitPlugin ( "init-sphere", VecArg("center",Vec3(0.3,0.65,0.35)) + RealArg("radius",0.1) + IntArg("type", FDENSITYSOURCE));	
 		solver->addInitPlugin ( "init-box", VecArg("pos1",Vec3(0.25,0.0,0.3)) + VecArg("pos2",Vec3(0.35,0.65,0.4)) + IntArg("type", FDENSITYSOURCE));	
 		solver->addInitPlugin ( "init-box", VecArg("pos1",Vec3(0.35,0.0,0.65)) + VecArg("pos2",Vec3(0.55,0.35,0.9)) + IntArg("type", FDENSITYSOURCE));	
 		solver->addInitPlugin ( "init-box", VecArg("pos1",Vec3(0.65,0.0,0.3)) + VecArg("pos2",Vec3(0.7,0.45,0.5)) + IntArg("type", FDENSITYSOURCE));	
 
-		solver->addInitPlugin ( "dump-universal", StringArg ( "grid", "flags" ) + StringArg ( "override-name","scene/static-flags" )  + IntArg ( "single-dump", 1 ) );	
-		solver->addInitPlugin ( "dump-universal", StringArg ( "grid", "dist" ) + StringArg ( "override-name","scene/static-dist" )  + IntArg ( "single-dump", 1 ) );	
-		solver->addInitPlugin ( "dump-universal", StringArg ( "grid", "normal" ) + StringArg ( "override-name","scene/static-normal" )  + IntArg ( "single-dump", 1 ) );	
 		_solvers.push_back(solver);
 	}
 
@@ -34,9 +33,9 @@
 
 	finalizeAllSolvers();
 
-	// _flags = _solvers[0]->getParams().getGridInt("flags");
-	// _normal = _solvers[0]->getParams().getGridVec3("normal");
-	// _dist = _solvers[0]->getParams().getGridReal("dist");
+	_flags = _solvers[0]->getParams().getGridInt("flags");
+	_normal = _solvers[0]->getParams().getGridVec3("normal");
+	_dist = _solvers[0]->getParams().getGridReal("dist");
 
 	freeAllSolvers();
 
@@ -44,30 +43,38 @@
 
 	printf("-------------------- SMOKE INIT B-------------------------\n");
 	{
-		SolverObject* solver = new SolverObject( "run_static", "scene/static-flags.gz" );
+		SolverObject* solver = new SolverObject( "run_static", _flags );
+
+		Vec3 inflow (0.0, 0, 0.4); // DG TODO: get this from blender
 		solver->getParams().mU0 = inflow;
-		solver->getParams().mTimestepAnim = 0.005;
+
+		solver->getParams().mTimestepAnim = 0.005; // DG TODO: what is this parameter supposed to do?
 			
 		// create grids
-		solver->createVec3Grid ( "mean-flow" );
-		solver->createRealGrid ( "dist" );
-		solver->createVec3Grid ( "vorticity" );
-		solver->createVec3Grid ( "ABL" );
-		solver->createVec3Grid ( "pre-ABL" );
-		solver->createVec3Grid ( "vort" );
-		solver->createRealGrid ( "pdf" );
-		solver->createRealGrid ( "density" );
-		solver->addStandardSolverGrids();
+		solver->createVec3Grid ( "mean-flow", _meanVel ); // DG TODO: load this from mem? - constructed/dumped in precompute normally
+		solver->createRealGrid ( "dist", _dist );
+
+		solver->createVec3Grid ( "vorticity", DDF_GRID_NO_FREE ); // DG TODO: how to handle vorticity?
+
+		solver->createVec3Grid ( "ABL" ); // ABL = artificial boundary layer
+		solver->createVec3Grid ( "pre-ABL", _abl ); // DG TODO: load this from mem
+		solver->createVec3Grid ( "vort" ); // DG TODO: create this on init? what is this?
+		solver->createRealGrid ( "pdf" ); // DG TODO: create this on init? what is this?
+
+		solver->createRealGrid ( "density", DDF_GRID_NO_FREE ); // DG TODO: create this on init
+
+		solver->addStandardSolverGrids(); // DG TODO: make this grids global?
 		solver->createNoiseField("noise", Vec3(0.), Vec3(50,50,50), -0.4, 2.0, 0.002);
 
 		// program solver initialization process
-		solver->addInitPlugin ( "load-universal", StringArg("grid","dist") + StringArg("file","scene/static-dist.gz"));
-		solver->addInitPlugin ( "load-universal", StringArg("grid","mean-flow") + StringArg("file","scene/static-mean.gz"));
-		solver->addInitPlugin ( "load-universal", StringArg("grid","pre-ABL") + StringArg("file","scene/static-abl.gz"));
+		// solver->addInitPlugin ( "load-universal", StringArg("grid","dist") + StringArg("file","scene/static-dist.gz"));
+		// solver->addInitPlugin ( "load-universal", StringArg("grid","mean-flow") + StringArg("file","scene/static-mean.gz"));
+		// solver->addInitPlugin ( "load-universal", StringArg("grid","pre-ABL") + StringArg("file","scene/static-abl.gz"));
 		
 		// program solver main loop
 		solver->addPlugin ( "copy-grid", StringArg ( "src","mean-flow" ) + StringArg ( "dest","vel-curr") );
 		solver->addPlugin ("init-density-inflow", StringArg("density","density") + RealArg("target-value",0.7) + IntArg("flag", FDENSITYSOURCE) + StringArg("noise","noise")); 
+		
 		solver->addPlugin ( "gen-vpart", StringArg ("source","pre-ABL") + StringArg ("flow","ABL") + StringArg("dist","dist") + StringArg("pdf","pdf") +
 							RealArg("thres-vort", 2e-2) + RealArg("thres-pdf",5e-5) + RealArg("mult-pdf",1) + RealArg("scale-flow",0.94) + RealArg("max-bl",0.15) +
 							RealArg("min-dist", 3) + RealArg("min-rad", 3) + RealArg("max-rad", 7) + RealArg("vortex-gain", 2.5) + RealArg("fade-in", 0));
@@ -76,10 +83,10 @@
 		solver->addPlugin ( "apply-vpart", StringArg ( "vorticity", "vorticity" ) );
 		solver->addPlugin ( "advect-vpart");
 		solver->addPlugin ( "merge-vpart", StringArg("ndist","dist") + RealArg("init-time", 30) + RealArg("decay-time",450) + RealArg("merge-dist",0.8) +
-   							RealArg("dissipate-radius",1) + RealArg("radius-cascade",1.5) );
+   		 					RealArg("dissipate-radius",1) + RealArg("radius-cascade",1.5) );
 		solver->addPlugin ("compute-vorticity", StringArg("vorticity","vort"));	
 		solver->addPlugin ("maccormack-advect-real", StringArg("real-src","density"));
-		solver->addPlugin( "dump-df3", IntArg("max-frames",200) + StringArg("gridname","density") + StringArg("prefix","sta") + RealArg("start-time",0) + IntArg("pbrt",1) + StringArg ( "override-name", "render/static" ));
+		// solver->addPlugin( "dump-df3", IntArg("max-frames",200) + StringArg("gridname","density") + StringArg("prefix","sta") + RealArg("start-time",0) + IntArg("pbrt",1) + StringArg ( "override-name", "render/static" ));
 
 		_solvers.push_back(solver);
 	}
@@ -92,29 +99,22 @@
 }
 
 // static precompute
-void FLUID_3D::precompute(const std::string& name, const Vec3& inflow, int frames, bool dynamic, const Vec3& rotAxis = Vec3(0.), Real rotSpeed = 0.)
+void FLUID_3D::precompute(/* const std::string& name, const Vec3& inflow, int frames, bool dynamic, const Vec3& rotAxis = Vec3(0.), Real rotSpeed = 0. */)
 {
-	bool rotate = (rotSpeed != 0.);
-	SolverObject* solver = new SolverObject( "precompute", "scene/" + name + "-flags.gz" );
+	Vec3 inflow (0.0, 0, 0.4); /* DG TODO: Use blender stuff here */
+	const int frames = 50; /* DG TODO: Use blender stuff here */
+	SolverObject* solver = new SolverObject( "precompute", _flags );
 
 	// create grids
-	solver->createVec3Grid ( "normal" );
-	solver->createRealGrid ( "dist" );
-	solver->createVec3Grid ( "mean-vel" );
-	solver->createVec3Grid ( "abl" );
-	solver->addStandardSolverGrids();
-	
-	// additional grids for rot. precomputation
-	if (rotate) {
-		solver->createIntGrid ("obstacle-flags");
-		solver->createIntGrid ("empty-flags");
-		solver->addInitPlugin ( "load-universal", StringArg("grid","obstacle-flags") + StringArg("file","scene/" + name + "-flags.gz"));
-		solver->addInitPlugin ( "init-box-domain",  StringArg("gridname","empty-flags") + IntArg ( "flag-inside",FFLUID ) + IntArg ( "flag-border",FINFLOW ) );		
-	}
+	solver->createVec3Grid ( "normal", _normal );
+	solver->createRealGrid ( "dist", _dist );
+	solver->createVec3Grid ( "mean-vel", DDF_GRID_NO_FREE );
+	solver->createVec3Grid ( "abl", DDF_GRID_NO_FREE );
+	solver->addStandardSolverGrids(); // DG TODO: need to transfer them to smoke: Are these only temp grids? --> Don't think so, will get updated after every frame?
 
 	// load grids, initialize fluid velocities
-	solver->addInitPlugin ( "load-universal", StringArg("grid","dist") + StringArg("file","scene/" + name + "-dist.gz"));
-	solver->addInitPlugin ( "load-universal", StringArg("grid","normal") + StringArg("file","scene/" + name + "-normal.gz"));
+	// TODO solver->addInitPlugin ( "load-universal", StringArg("grid","dist") + StringArg("file","scene/" + name + "-dist.gz"));
+	// TODO solver->addInitPlugin ( "load-universal", StringArg("grid","normal") + StringArg("file","scene/" + name + "-normal.gz"));
 	solver->addInitPlugin ( "set-conditional", StringArg ( "gridname","vel-curr" ) + VecArg ( "target-vec",inflow ) + IntArg ( "flag", FFLUID ) );
 
 	// program solver main loop
@@ -122,37 +122,36 @@
 	solver->addPlugin ( "maccormack-advect-vec3", StringArg ( "vel-src", "vel-curr" ) );
 	solver->addPlugin ( "set-noslip-bcs", StringArg ( "grid","vel-curr" ) );
 	solver->addPlugin ( "diffuse-grid", StringArg ( "src-vec3", "vel-curr" ) + RealArg ( "diff", 0.3 ) );
-	if (rotate)
-		solver->addPlugin ("set-moving-obs-bcs", StringArg("obstacle","obstacle-flags") + StringArg("flags-src","empty-flags") +

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list