[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20688] trunk/blender/source/blender: Patch/ Bugfix so wind noise got controlable seed and therefore redoable cloth sims - bug reported by istvan

Daniel Genrich daniel.genrich at gmx.net
Sat Jun 6 23:49:00 CEST 2009


Revision: 20688
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20688
Author:   genscher
Date:     2009-06-06 23:49:00 +0200 (Sat, 06 Jun 2009)

Log Message:
-----------
Patch/Bugfix so wind noise got controlable seed and therefore redoable cloth sims - bug reported by istvan

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_blender.h
    trunk/blender/source/blender/blenkernel/intern/effect.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/makesdna/DNA_object_force.h
    trunk/blender/source/blender/python/api2_2x/Object.c
    trunk/blender/source/blender/src/buttons_object.c

Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h	2009-06-06 21:42:10 UTC (rev 20687)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h	2009-06-06 21:49:00 UTC (rev 20688)
@@ -41,7 +41,7 @@
 struct MemFile;
 
 #define BLENDER_VERSION			249
-#define BLENDER_SUBVERSION		0
+#define BLENDER_SUBVERSION		1
 
 #define BLENDER_MINVERSION		245
 #define BLENDER_MINSUBVERSION	15

Modified: trunk/blender/source/blender/blenkernel/intern/effect.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/effect.c	2009-06-06 21:42:10 UTC (rev 20687)
+++ trunk/blender/source/blender/blenkernel/intern/effect.c	2009-06-06 21:49:00 UTC (rev 20688)
@@ -80,7 +80,6 @@
 #include "BKE_screen.h"
 #include "BKE_utildefines.h"
 
-#include "PIL_time.h"
 #include "RE_render_ext.h"
 
 /* fluid sim particle import */
@@ -161,8 +160,7 @@
 		
 		if(pd->forcefield == PFIELD_WIND)
 		{
-			pd->rng = rng_new(1);
-			rng_srandom(pd->rng, (unsigned int)(ceil(PIL_check_seconds_timer()))); // use better seed
+			pd->rng = rng_new(pd->seed);
 		}
 	
 		ec= MEM_callocN(sizeof(pEffectorCache), "effector cache");
@@ -286,14 +284,14 @@
 // noise function for wind e.g.
 static float wind_func(struct RNG *rng, float strength)
 {
-	int random = (rng_getInt(rng)+1) % 65535; // max 2357
+	int random = (rng_getInt(rng)+1) % 128; // max 2357
 	float force = rng_getFloat(rng) + 1.0f;
 	float ret;
 	float sign = 0;
 	
-	sign = (random > 32000.0) ? 1.0: -1.0; // dividing by 2 is not giving equal sign distribution
+	sign = ((float)random > 64.0) ? 1.0: -1.0; // dividing by 2 is not giving equal sign distribution
 	
-	ret = sign*((float)random / force)*strength/65535.0f;
+	ret = sign*((float)random / force)*strength/128.0f;
 	
 	return ret;
 }

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2009-06-06 21:42:10 UTC (rev 20687)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2009-06-06 21:49:00 UTC (rev 20688)
@@ -162,6 +162,8 @@
 #include "mydevice.h"
 #include "blendef.h"
 
+#include "PIL_time.h"
+
 #include <errno.h>
 
 /*
@@ -8144,6 +8146,16 @@
 		
 	}
 	
+	// correct introduce of seed for wind force
+	if (main->versionfile < 249 && main->subversionfile < 1) {
+		Object *ob;
+		for(ob = main->object.first; ob; ob= ob->id.next) {
+			if(ob->pd)
+				ob->pd->seed = ((unsigned int)(ceil(PIL_check_seconds_timer()))+1) % 128;
+		}
+	
+	}
+	
 
 	/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
 	/* WATCH IT 2!: Userdef struct init has to be in src/usiblender.c! */

Modified: trunk/blender/source/blender/makesdna/DNA_object_force.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_object_force.h	2009-06-06 21:42:10 UTC (rev 20687)
+++ trunk/blender/source/blender/makesdna/DNA_object_force.h	2009-06-06 21:49:00 UTC (rev 20688)
@@ -69,7 +69,7 @@
 	struct Tex *tex;	/* Texture of the texture effector */
 	struct RNG *rng; /* random noise generator for e.g. wind */
 	float f_noise; /* noise of force (currently used for wind) */
-	int pad;
+	int seed; /* wind noise random seed */
 } PartDeflect;
 
 typedef struct PointCache {

Modified: trunk/blender/source/blender/python/api2_2x/Object.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Object.c	2009-06-06 21:42:10 UTC (rev 20687)
+++ trunk/blender/source/blender/python/api2_2x/Object.c	2009-06-06 21:49:00 UTC (rev 20688)
@@ -3757,7 +3757,8 @@
 	ob->pd->pdef_perm    =0;	
 	ob->pd->f_strength   =0;	
 	ob->pd->f_power      =0;	
-	ob->pd->maxdist      =0;	       
+	ob->pd->maxdist      =0;
+	ob->pd->seed		 =0;
 	return 1;
 }
 

Modified: trunk/blender/source/blender/src/buttons_object.c
===================================================================
--- trunk/blender/source/blender/src/buttons_object.c	2009-06-06 21:42:10 UTC (rev 20687)
+++ trunk/blender/source/blender/src/buttons_object.c	2009-06-06 21:49:00 UTC (rev 20688)
@@ -159,6 +159,8 @@
 
 #include "butspace.h" // own module
 
+#include "PIL_time.h"
+
 static float prspeed=0.0;
 float prlen=0.0;
 
@@ -3337,6 +3339,7 @@
 		ob->pd->pdef_sbdamp = 0.1f;
 		ob->pd->pdef_sbift  = 0.2f;
 		ob->pd->pdef_sboft  = 0.02f;
+		ob->pd->seed = ((unsigned int)(ceil(PIL_check_seconds_timer()))+1) % 128;
 	}
 	
 	/* only meshes collide now */
@@ -3431,6 +3434,7 @@
 		ob->pd->pdef_sbift  = 0.2f;
 		ob->pd->pdef_sboft  = 0.02f;
 		ob->pd->tex_nabla = 0.025f;
+		ob->pd->seed = ((unsigned int)(ceil(PIL_check_seconds_timer()))+1) % 128;
 	}
 	
 	if(ob->pd) {
@@ -3530,7 +3534,10 @@
 				else if(pd->forcefield == PFIELD_HARMONIC) 
 					uiDefButF(block, NUM, B_FIELD_CHANGE, "Damp: ",	10,120,140,20, &pd->f_damp, 0, 10, 10, 0, "Damping of the harmonic force");	
 				else if(pd->forcefield == PFIELD_WIND) 
-					uiDefButF(block, NUM, B_FIELD_CHANGE, "Noise: ",10,120,140,20, &pd->f_noise, 0, 10, 100, 0, "Noise of the wind force");	
+				{
+					uiDefButF(block, NUM, B_FIELD_CHANGE, "Noise: ",10,120,140,20, &pd->f_noise, 0, 10, 100, 0, "Noise of the wind force");
+					uiDefButI(block, NUM, B_FIELD_CHANGE, "Seed: ",10,100,140,20, &pd->seed, 1, 128, 1, 0, "Seed of the wind noise");
+				}
 			}
 			uiBlockEndAlign(block);
 			
@@ -3839,6 +3846,7 @@
 		ob->pd->pdef_sbdamp = 0.1f;
 		ob->pd->pdef_sbift  = 0.2f;
 		ob->pd->pdef_sboft  = 0.02f;
+		ob->pd->seed = ((unsigned int)(ceil(PIL_check_seconds_timer()))+1) % 128;
 	}
 	block= uiNewBlock(&curarea->uiblocks, "object_softbodies_collision", UI_EMBOSS, UI_HELV, curarea->win);
 	uiNewPanelTabbed("Soft Body", "Physics"); 





More information about the Bf-blender-cvs mailing list