[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13516] trunk/blender/source/blender: users feature request

Jens Ole Wund (bjornmose) bjornmose at gmx.net
Sat Feb 2 00:20:31 CET 2008


Revision: 13516
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13516
Author:   bjornmose
Date:     2008-02-02 00:20:29 +0100 (Sat, 02 Feb 2008)

Log Message:
-----------
users feature request
-- material memory 

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/softbody.c
    trunk/blender/source/blender/makesdna/DNA_object_force.h
    trunk/blender/source/blender/src/buttons_object.c

Modified: trunk/blender/source/blender/blenkernel/intern/softbody.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/softbody.c	2008-02-01 19:45:11 UTC (rev 13515)
+++ trunk/blender/source/blender/blenkernel/intern/softbody.c	2008-02-01 23:20:29 UTC (rev 13516)
@@ -2913,7 +2913,6 @@
 			VecMulf(dx,forcetime);
 
 			/* the freezer */
-			/* disable slip stich for now
 			if  ((Inpf(dx,dx)<freezeloc )&&(Inpf(bp->force,bp->force)<freezeforce )){
 				bp->frozen /=2;
 			}
@@ -2921,7 +2920,6 @@
 				bp->frozen =MIN2(bp->frozen*1.05f,1.0f);
 			}
 			VecMulf(dx,bp->frozen);
-            */
 
 			/* again some nasty if's to have heun in here too */
 			if (mode ==1){
@@ -3085,6 +3083,30 @@
 	}
 }
 
+
+void apply_spring_memory(Object *ob)
+{
+	SoftBody *sb = ob->soft;
+	BodySpring *bs;
+	BodyPoint *bp1, *bp2;
+	int a;
+	float b,l,r;
+
+    b = sb->plastic;
+	if (sb && sb->totspring){
+		for(a=0; a<sb->totspring; a++) {
+			bs  = &sb->bspring[a];
+			bp1 =&sb->bpoint[bs->v1];
+			bp2 =&sb->bpoint[bs->v2];
+			l = VecLenf(bp1->pos,bp2->pos);
+			r = bs->len/l;
+			if (( r > 1.05f) || (r < 0.95)){
+			bs->len = ((100.0f - b) * bs->len  + b*l)/100.0f;
+			}
+		}
+	}
+}
+
 /* expects full initialized softbody */
 static void interpolate_exciter(Object *ob, int timescale, int time)
 {
@@ -4372,6 +4394,7 @@
 			else{
 				printf("softbody no valid solver ID!");
 			}/*SOLVER SELECT*/
+			if(sb->plastic){ apply_spring_memory(ob);}
 
 			if(sb->solverflags & SBSO_MONITOR ){
 				sct=PIL_check_seconds_timer();

Modified: trunk/blender/source/blender/makesdna/DNA_object_force.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_object_force.h	2008-02-01 19:45:11 UTC (rev 13515)
+++ trunk/blender/source/blender/makesdna/DNA_object_force.h	2008-02-01 23:20:29 UTC (rev 13516)
@@ -130,7 +130,7 @@
 		maxloops,
 		choke,
 		solver_ID,
-		pad4,pad5
+		plastic,pad5
 		;   
 
 	struct SBScratch *scratch;	/* scratch pad/cache on live time not saved in file */

Modified: trunk/blender/source/blender/src/buttons_object.c
===================================================================
--- trunk/blender/source/blender/src/buttons_object.c	2008-02-01 19:45:11 UTC (rev 13515)
+++ trunk/blender/source/blender/src/buttons_object.c	2008-02-01 23:20:29 UTC (rev 13516)
@@ -3936,12 +3936,14 @@
 				uiDefButF(block, NUM, B_DIFF, "E Pull:",	10,30,100,20, &sb->inspring, 0.0,  0.999, 10, 0, "Edge spring stiffness when longer than rest length");
 				uiDefButF(block, NUM, B_DIFF, "E Push:",	110,30,100,20, &sb->inpush, 0.0,  0.999, 10, 0, "Edge spring stiffness when shorter than rest length");
 				uiDefButF(block, NUM, B_DIFF, "E Damp:",	210,30,100,20, &sb->infrict, 0.0,  50.0, 10, 0, "Edge spring friction");
+				
 				uiDefButBitS(block, TOG,OB_SB_AERO_ANGLE,B_SOFTBODY_CHANGE, "N",10,10,20,20, softflag, 0, 0, 0, 0, "New aero(uses angle and length)");
-				uiDefButS(block, NUM, B_DIFF, "Aero:",     30,10,80,20, &sb->aeroedge,  0.00,  30000.0, 10, 0, "Make edges 'sail'");
+				uiDefButS(block, NUM, B_DIFF, "Aero:",     30,10,60,20, &sb->aeroedge,  0.00,  30000.0, 10, 0, "Make edges 'sail'");
+			    uiDefButS(block, NUM, B_SOFTBODY_CHANGE, "Plas:", 90,10,60,20, &sb->plastic, 0.0,  100.0, 10, 0, "Permanent deform");
 				if(ob->type==OB_MESH) {
-					uiDefButF(block, NUM, B_SOFTBODY_CHANGE, "Bend:", 110,10,100,20, &sb->secondspring, 0.0,  10.0, 10, 0, "Strenght of Springs over 2 Edges");
+					uiDefButF(block, NUM, B_SOFTBODY_CHANGE, "Be:", 150,10,80,20, &sb->secondspring, 0.0,  10.0, 10, 0, "Bendig Stiffness");
 					if (*softflag & OB_SB_QUADS){ 
-					uiDefButF(block, NUM, B_SOFTBODY_CHANGE, "Shear:", 210,10,100,20, &sb->shearstiff, 0.0,  1.0, 10, 0, "Strenght of diagonal Springs");
+					uiDefButF(block, NUM, B_SOFTBODY_CHANGE, "Sh:", 230,10,80,20, &sb->shearstiff, 0.0,  1.0, 10, 0, "Shear Stiffness");
 					}
 				}
 				else sb->secondspring = 0;





More information about the Bf-blender-cvs mailing list