[Bf-blender-cvs] [204f55c] master: Cloth: Fix shrinking to properly respond to animated min/max and weight.

Alexander Gavrilov noreply at git.blender.org
Fri May 6 11:07:12 CEST 2016


Commit: 204f55c189d7e7a7b7808b6730a285326e7ac38a
Author: Alexander Gavrilov
Date:   Mon Apr 18 18:49:03 2016 +0300
Branches: master
https://developer.blender.org/rB204f55c189d7e7a7b7808b6730a285326e7ac38a

Cloth: Fix shrinking to properly respond to animated min/max and weight.

Enable dynamic restlen recomputation based on sew flag and update the
shrink factor math within it to call the new utility function.

===================================================================

M	source/blender/blenkernel/intern/cloth.c

===================================================================

diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c
index 0954ac9..3e6df3e 100644
--- a/source/blender/blenkernel/intern/cloth.c
+++ b/source/blender/blenkernel/intern/cloth.c
@@ -371,7 +371,7 @@ static int do_step_cloth(Object *ob, ClothModifierData *clmd, DerivedMesh *resul
 	/* Support for dynamic vertex groups, changing from frame to frame */
 	cloth_apply_vgroup ( clmd, result );
 
-	if ( 0 )
+	if ( clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_SEW )
 		cloth_update_spring_lengths ( clmd, result );
 
 	cloth_update_springs( clmd );
@@ -1200,10 +1200,11 @@ static void cloth_update_spring_lengths( ClothModifierData *clmd, DerivedMesh *d
 		ClothSpring *spring = search->link;
 
 		if ( spring->type != CLOTH_SPRING_TYPE_SEWING ) {
-			if (clmd->sim_parms->vgroup_shrink > 0)
-				shrink_factor = 1.0f - ((cloth->verts[spring->ij].shrink_factor + cloth->verts[spring->kl].shrink_factor) / 2.0f);
+			if ( spring->type & (CLOTH_SPRING_TYPE_STRUCTURAL | CLOTH_SPRING_TYPE_SHEAR | CLOTH_SPRING_TYPE_BENDING) )
+				shrink_factor = cloth_shrink_factor(clmd, cloth->verts, spring->ij, spring->kl);
 			else
-				shrink_factor = 1.0f - clmd->sim_parms->shrink_min;
+				shrink_factor = 1.0f;
+
 			spring->restlen = len_v3v3(cloth->verts[spring->kl].xrest, cloth->verts[spring->ij].xrest) * shrink_factor;
 		}
 
@@ -1221,7 +1222,8 @@ static void cloth_update_spring_lengths( ClothModifierData *clmd, DerivedMesh *d
 		clmd->sim_parms->avg_spring_len /= struct_springs;
 
 	for (i = 0; i < mvert_num; i++) {
-		cloth->verts[i].avg_spring_len = cloth->verts[i].avg_spring_len * 0.49f / ((float)cloth->verts[i].spring_count);
+		if (cloth->verts[i].spring_count > 0)
+			cloth->verts[i].avg_spring_len = cloth->verts[i].avg_spring_len * 0.49f / ((float)cloth->verts[i].spring_count);
 	}
 }




More information about the Bf-blender-cvs mailing list