[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46173] branches/smoke2: Fix another crash caused by pointcache.

Daniel Genrich daniel.genrich at gmx.net
Wed May 2 01:09:27 CEST 2012


Revision: 46173
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46173
Author:   genscher
Date:     2012-05-01 23:09:26 +0000 (Tue, 01 May 2012)
Log Message:
-----------
Fix another crash caused by pointcache.
I commented some code to save me some startup time.
Remove the comments in FLUID_3D::init() to create your own setup files.

Modified Paths:
--------------
    branches/smoke2/intern/smoke/intern/smoke_API.cpp
    branches/smoke2/intern/smoke/intern/source/smoke.cpp
    branches/smoke2/intern/smoke/intern/source/smoke.h
    branches/smoke2/source/blender/blenkernel/intern/smoke.c

Modified: branches/smoke2/intern/smoke/intern/smoke_API.cpp
===================================================================
--- branches/smoke2/intern/smoke/intern/smoke_API.cpp	2012-05-01 21:46:55 UTC (rev 46172)
+++ branches/smoke2/intern/smoke/intern/smoke_API.cpp	2012-05-01 23:09:26 UTC (rev 46173)
@@ -42,14 +42,16 @@
 // y in smoke is z in blender
 extern "C" FLUID_3D *smoke_init(int *res, float *p0, float dtdef)
 {
-	printf("-------------------- SMOKE INIT --------------------------\n");
+	printf("-------------------- SMOKE CREATE --------------------------\n");
 	/*
 	res[0] = 32;
 	res[1] = 32;
 	res[2] = 32;
 	*/
 	FLUID_3D *fluid = new FLUID_3D(res);
-	fluid->init();
+	printf("-------------------- SMOKE INIT --------------------------\n");
+	if(!fluid->_init)
+		fluid->init();
 	return fluid;
 }
 

Modified: branches/smoke2/intern/smoke/intern/source/smoke.cpp
===================================================================
--- branches/smoke2/intern/smoke/intern/source/smoke.cpp	2012-05-01 21:46:55 UTC (rev 46172)
+++ branches/smoke2/intern/smoke/intern/source/smoke.cpp	2012-05-01 23:09:26 UTC (rev 46173)
@@ -5,8 +5,10 @@
 
 void FLUID_3D::init()
 {
+	/*
 	printf("-------------------- SMOKE INIT A-------------------------\n");
 	{ // static scene
+		printf("init res %d, %d, %d\n", _res[0], _res[1], _res[2]);
 		SolverObject* solver = new SolverObject( "makescene", nVec3i ( _res[0], _res[1], _res[2] ) ); // 200, 80, 150
 		solver->createVec3Grid ( "normal" );
 		solver->createRealGrid ( "dist" );
@@ -45,7 +47,7 @@
 		const int nFrames = 50;
 		precompute("static", inflow, nFrames, false);
 	}
-
+*/
 	printf("-------------------- SMOKE INIT B-------------------------\n");
 	{
 		Vec3 inflow (0.4, 0, 0);
@@ -56,12 +58,12 @@
 		// create grids
 		solver->createVec3Grid ( "mean-flow" );
 		solver->createRealGrid ( "dist" );
-		solver->createVec3Grid ( "vorticity" );
+		solver->createVec3Grid ( "vorticity", DDF_GRID_NO_FREE );
 		solver->createVec3Grid ( "ABL" );
 		solver->createVec3Grid ( "pre-ABL" );
 		solver->createVec3Grid ( "vort" );
 		solver->createRealGrid ( "pdf" );
-		solver->createRealGrid ( "density" );
+		solver->createRealGrid ( "density", DDF_GRID_NO_FREE );
 		solver->addStandardSolverGrids();
 		solver->createNoiseField("noise", Vec3(0.), Vec3(50,50,50), -0.4, 2.0, 0.002);
 
@@ -94,6 +96,8 @@
 	_vorticity = _solvers[0]->getParams().getGridVec3("vorticity");
 	_density = _solvers[0]->getParams().getGridReal("density");
 
+	_init = 1;
+
 }
 
 // static precompute
@@ -176,4 +180,6 @@
 {
 	finalizeAllSolvers();
 	freeAllSolvers();
+
+	_init = 0;
 }
\ No newline at end of file

Modified: branches/smoke2/intern/smoke/intern/source/smoke.h
===================================================================
--- branches/smoke2/intern/smoke/intern/source/smoke.h	2012-05-01 21:46:55 UTC (rev 46172)
+++ branches/smoke2/intern/smoke/intern/source/smoke.h	2012-05-01 23:09:26 UTC (rev 46173)
@@ -53,6 +53,8 @@
 		public:
 			int _res[3];
 
+			bool _init;
+
 			/* Init */
 			Grid<int>	*_flags;
 			Grid<Vec3>	*_normal;
@@ -81,6 +83,8 @@
 				_res[0] = res[0];
 				_res[1] = res[1];
 				_res[2] = res[2];
+
+				_init = 0;
 			};
 
 			~FLUID_3D() 

Modified: branches/smoke2/source/blender/blenkernel/intern/smoke.c
===================================================================
--- branches/smoke2/source/blender/blenkernel/intern/smoke.c	2012-05-01 21:46:55 UTC (rev 46172)
+++ branches/smoke2/source/blender/blenkernel/intern/smoke.c	2012-05-01 23:09:26 UTC (rev 46173)
@@ -935,7 +935,7 @@
 			smd->domain->eff_group = NULL;
 			smd->domain->fluid_group = NULL;
 			smd->domain->coll_group = NULL;
-			smd->domain->maxres = 32;
+			smd->domain->maxres = 80;
 			smd->domain->amplify = 1;			
 			smd->domain->omega = 1.0;			
 			smd->domain->alpha = -0.001;
@@ -1884,9 +1884,11 @@
 			smoke_turbulence_step(sds->wt, sds->fluid);
 		}
 	
+		/* DG TODO
 		BKE_ptcache_validate(cache, framenr);
 		if(framenr != startframe)
 			BKE_ptcache_write(&pid, framenr);
+			*/
 
 		tend();
 		// printf ( "Frame: %d, Time: %f\n\n", (int)smd->time, ( float ) tval() );




More information about the Bf-blender-cvs mailing list