[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22310] branches/blender2.5/blender/source /blender: Smoke: fixing collision objects again ( bug introduced in decoupling commit) - thanks to nudelZ for reporting

Daniel Genrich daniel.genrich at gmx.net
Sat Aug 8 22:41:44 CEST 2009


Revision: 22310
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22310
Author:   genscher
Date:     2009-08-08 22:41:44 +0200 (Sat, 08 Aug 2009)

Log Message:
-----------
Smoke: fixing collision objects again (bug introduced in decoupling commit) - thanks to nudelZ for reporting

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/intern/smoke.c
    branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/smoke.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/smoke.c	2009-08-08 17:21:34 UTC (rev 22309)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/smoke.c	2009-08-08 20:41:44 UTC (rev 22310)
@@ -566,13 +566,9 @@
 			}
 			smd->domain->max_textures = 0;
 			if(smd->domain->viewsettings < MOD_SMOKE_VIEW_USEBIG)
-			{
 				smd->domain->viewsettings = 0;
-			}
 			else
-			{
 				smd->domain->viewsettings = MOD_SMOKE_VIEW_USEBIG;
-			}
 
 			if(smd->domain->tray)
 				MEM_freeN(smd->domain->tray);
@@ -753,9 +749,13 @@
 			
 			tstart();
 
-			sds->viewsettings = 0; // reset view for new frame
+			/* reset view for new frame */
+			if(sds->viewsettings < MOD_SMOKE_VIEW_USEBIG)
+				sds->viewsettings = 0;
+			else
+				sds->viewsettings = MOD_SMOKE_VIEW_USEBIG;
 
-			// check for 2nd domain, if not there -> no groups are necessary
+			/* check for 2nd domain, if not there -> no groups are necessary */
 			for(base = scene->base.first; base; base= base->next) 
 			{
 				Object *ob1= base->object;
@@ -889,11 +889,11 @@
 
 											smoke_get_bigres(smd->domain->fluid, bigres);
 
-											for(i = 0; i < smd->domain->amplify; i++)
-												for(j = 0; j < smd->domain->amplify; j++)
-													for(k = 0; k < smd->domain->amplify; k++)
+											for(i = 0; i < smd->domain->amplify + 1; i++)
+												for(j = 0; j < smd->domain->amplify + 1; j++)
+													for(k = 0; k < smd->domain->amplify + 1; k++)
 													{
-														index = smoke_get_index(smd->domain->amplify * cell[0] + i, bigres[0], smd->domain->amplify * cell[1] + j, bigres[1], smd->domain->amplify * cell[2] + k);
+														index = smoke_get_index((smd->domain->amplify + 1)* cell[0] + i, bigres[0], (smd->domain->amplify + 1)* cell[1] + j, bigres[1], (smd->domain->amplify + 1)* cell[2] + k);
 														bigdensity[index] = sfs->density;
 													}
 										}
@@ -914,11 +914,11 @@
 
 											smoke_get_bigres(smd->domain->fluid, bigres);
 
-											for(i = 0; i < smd->domain->amplify; i++)
-												for(j = 0; j < smd->domain->amplify; j++)
-													for(k = 0; k < smd->domain->amplify; k++)
+											for(i = 0; i < smd->domain->amplify + 1; i++)
+												for(j = 0; j < smd->domain->amplify + 1; j++)
+													for(k = 0; k < smd->domain->amplify + 1; k++)
 													{
-														index = smoke_get_index(smd->domain->amplify * cell[0] + i, bigres[0], smd->domain->amplify * cell[1] + j, bigres[1], smd->domain->amplify * cell[2] + k);
+														index = smoke_get_index((smd->domain->amplify + 1)* cell[0] + i, bigres[0], (smd->domain->amplify + 1)* cell[1] + j, bigres[1], (smd->domain->amplify + 1)* cell[2] + k);
 														bigdensity[index] = 0.f;
 													}
 										}
@@ -1138,7 +1138,7 @@
 		// formula taken from "Visual Simulation of Smoke" / Fedkiw et al. pg. 4
 		// T_vox = exp(-C_ext * h)
 		// C_ext/sigma_t = density * C_ext
-		smoke_set_bigtvox(smd, i, exp(-density[i] * 7.0 * smd->domain->dx / smd->domain->amplify) );
+		smoke_set_bigtvox(smd, i, exp(-density[i] * 7.0 * smd->domain->dx / (smd->domain->amplify + 1)) );
 	}
 	smoke_calc_transparency(smd, light, 1);
 }
@@ -1353,7 +1353,7 @@
 
 	VECSUB(tmp, pos, smd->domain->p0);
 
-	VecMulf(tmp, smd->domain->amplify / smd->domain->dx );
+	VecMulf(tmp, (smd->domain->amplify + 1)/ smd->domain->dx );
 
 	if(correct)
 	{
@@ -1402,7 +1402,7 @@
 	else
 	{
 		smoke_get_bigres(smd->domain->fluid, res);
-		bigfactor = 1.0 / smd->domain->amplify;
+		bigfactor = 1.0 / (smd->domain->amplify + 1);
 	}
 
 #pragma omp parallel for schedule(static) private(y, z) shared(big, smd, light, res, bigfactor)

Modified: branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2009-08-08 17:21:34 UTC (rev 22309)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2009-08-08 20:41:44 UTC (rev 22310)
@@ -3665,7 +3665,11 @@
 				smd->domain->traybig = NULL;
 				smd->domain->bind = NULL;
 				smd->domain->max_textures = 0;
-				smd->domain->viewsettings = 0; // reset view for new frame
+				// reset 3dview
+				if(smd->domain->viewsettings < MOD_SMOKE_VIEW_USEBIG)
+					smd->domain->viewsettings = 0;
+				else
+					smd->domain->viewsettings = MOD_SMOKE_VIEW_USEBIG;
 			}
 			else if(smd->type==MOD_SMOKE_TYPE_FLOW)
 			{

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c	2009-08-08 17:21:34 UTC (rev 22309)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c	2009-08-08 20:41:44 UTC (rev 22310)
@@ -5368,7 +5368,7 @@
 			else
 			{
 				smoke_get_bigres(smd->domain->fluid, res);
-				bigfactor = 1.0 / smd->domain->amplify;
+				bigfactor = 1.0 / (smd->domain->amplify + 1);
 			}
 
 			wmLoadMatrix(rv3d->viewmat);





More information about the Bf-blender-cvs mailing list