Revision: 14337
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14337
Author:   bjornmose
Date:     2008-04-05 23:29:17 +0200 (Sat, 05 Apr 2008)

Log Message:
-----------
bug fix soft body can resume with point cache 
sneak in .. springs preload

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-04-05 
14:49:41 UTC (rev 14336)
+++ trunk/blender/source/blender/blenkernel/intern/softbody.c   2008-04-05 
21:29:17 UTC (rev 14337)
@@ -2751,6 +2751,10 @@
                if (G.rt > 500){
                        scale = (G.rt - 500) / 100.0f;
                }
+               /* public version shrink to fit */
+               if (sb->springpreload != 0 ){
+                       scale = sb->springpreload / 100.0f;
+               }
                for(a=0; a<sb->totspring; a++) {
                        BodySpring *bs = &sb->bspring[a];
                        bs->len= scale*VecLenf(sb->bpoint[bs->v1].origS, 
sb->bpoint[bs->v2].origS);
@@ -3268,6 +3272,9 @@
 
        for(a=0, bp=sb->bpoint; a<sb->totpoint; a++, bp++)
                fwrite(&bp->pos, sizeof(float), 3, fp);
+/*write velocities too */ 
+       for(a=0, bp=sb->bpoint; a<sb->totpoint; a++, bp++)
+               fwrite(&bp->vec, sizeof(float), 3, fp);
        
        fclose(fp);
 }
@@ -3282,6 +3289,7 @@
 
        if(sb->totpoint == 0) return 0;
 
+
        if(sb->particles)
                stack_index = 
modifiers_indexInObject(ob,(ModifierData*)psys_get_modifier(ob,sb->particles));
        else {
@@ -3302,8 +3310,14 @@
                                ret = 0;
                                break;
                        }
-
-               fclose(fp);
+                       /*read velocities too !*/
+                       for(a=0, bp=sb->bpoint; a<sb->totpoint; a++, bp++){
+                               if(fread(&bp->vec, sizeof(float), 3, fp) != 3) {
+                                       ret = 0;
+                                       break;
+                               }
+                       }
+                       fclose(fp);
        }
 
        return ret;

Modified: trunk/blender/source/blender/makesdna/DNA_object_force.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_object_force.h    2008-04-05 
14:49:41 UTC (rev 14336)
+++ trunk/blender/source/blender/makesdna/DNA_object_force.h    2008-04-05 
21:29:17 UTC (rev 14337)
@@ -130,7 +130,7 @@
                maxloops,
                choke,
                solver_ID,
-               plastic,pad5
+               plastic,springpreload
                ;   
 
        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-04-05 14:49:41 UTC 
(rev 14336)
+++ trunk/blender/source/blender/src/buttons_object.c   2008-04-05 21:29:17 UTC 
(rev 14337)
@@ -3985,9 +3985,10 @@
                                uiDefButBitS(block, TOG, OB_SB_QUADS, 
B_SOFTBODY_CHANGE, "Stiff Quads",         110,50,90,20, softflag, 0, 0, 0, 0, 
"Adds diagonal springs on 4-gons");
                                uiDefButBitS(block, TOG, OB_SB_EDGECOLL, 
B_DIFF, "CEdge",               220,50,45,20, softflag, 0, 0, 0, 0, "Edge 
collide too"); 
                                uiDefButBitS(block, TOG, OB_SB_FACECOLL, 
B_DIFF, "CFace",               265,50,45,20, softflag, 0, 0, 0, 0, "Faces 
collide too SLOOOOOW warning "); 
-                               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");
+                               uiDefButF(block, NUM, B_DIFF, "Pull:",  
10,30,75,20, &sb->inspring, 0.0,  0.999, 10, 0, "Edge spring stiffness when 
longer than rest length");
+                               uiDefButF(block, NUM, B_DIFF, "Push:",  
85,30,75,20, &sb->inpush, 0.0,  0.999, 10, 0, "Edge spring stiffness when 
shorter than rest length");
+                               uiDefButF(block, NUM, B_DIFF, "Damp:",  
160,30,70,20, &sb->infrict, 0.0,  50.0, 10, 0, "Edge spring friction");
+                           uiDefButS(block, NUM, B_SOFTBODY_CHANGE, "SL:",250 
,30,60,20, &sb->springpreload, 0.0,  200.0, 10, 0, "Alter spring lenght to 
shrink/blow up (unit %) 0 to disable ");
                                
                                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,60,20, &sb->aeroedge,  0.00,  30000.0, 10, 0, "Make edges 'sail'");


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to