Commit: 6054fff2a61e076599657665285ff87fab759360
Author: Luca Rood
Date:   Tue Jan 24 00:25:45 2017 -0200
Branches: cloth-improvements
https://developer.blender.org/rB6054fff2a61e076599657665285ff87fab759360

Fix regression on sewing springs caused by plasticity

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

M       source/blender/physics/intern/BPH_mass_spring.cpp
M       source/blender/physics/intern/implicit_blender.c

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

diff --git a/source/blender/physics/intern/BPH_mass_spring.cpp 
b/source/blender/physics/intern/BPH_mass_spring.cpp
index 6077dc9e04..eb0b1a4bed 100644
--- a/source/blender/physics/intern/BPH_mass_spring.cpp
+++ b/source/blender/physics/intern/BPH_mass_spring.cpp
@@ -380,7 +380,7 @@ BLI_INLINE void cloth_calc_spring_force(ClothModifierData 
*clmd, ClothSpring *s,
                        // TODO: verify, half verified (couldn't see error)
                        // sewing springs usually have a large distance at 
first so clamp the force so we don't get tunnelling through colission objects
                        BPH_mass_spring_force_spring_linear(data, s->ij, s->kl, 
s->restlen, &s->lenfact, k_tension, 0.0f,
-                                                           d_tension, 0.0f, 
no_compress, parms->max_sewing, 0.0f, 1.0f, !collision_pass);
+                                                           d_tension, 0.0f, 
no_compress, parms->max_sewing, 0.0f, 1.0f, false);
                }
                else {
                        scaling_compression = parms->compression + 
s->lin_stiffness * fabsf(parms->max_compression - parms->compression);
diff --git a/source/blender/physics/intern/implicit_blender.c 
b/source/blender/physics/intern/implicit_blender.c
index 0f17ed67ee..801c548840 100644
--- a/source/blender/physics/intern/implicit_blender.c
+++ b/source/blender/physics/intern/implicit_blender.c
@@ -1613,7 +1613,7 @@ bool BPH_mass_spring_force_spring_linear(Implicit_Data 
*data, int i, int j, floa
                dfdx_spring(dfdx, dir, length, restlen, tension);
 
                /* compute plasticity offset factor */
-               if (do_plast && length > restlen * yield_fact) {
+               if (do_plast && (restlenorig > 0.0f) && (length > restlen * 
yield_fact)) {
                        restlen += ((length / yield_fact) - restlen) * 
plasticity;
                        *lenfact = restlen / restlenorig;
                }
@@ -1632,7 +1632,7 @@ bool BPH_mass_spring_force_spring_linear(Implicit_Data 
*data, int i, int j, floa
                mul_m3_fl(dfdx, fbstar_jacobi(length, restlen, kb, cb));
 
                /* compute plasticity offset factor */
-               if (do_plast && length < restlen / yield_fact) {
+               if (do_plast && (restlenorig > 0.0f) && length < restlen / 
yield_fact) {
                        restlen -= (restlen - (length * yield_fact)) * 
plasticity;
                        *lenfact = restlen / restlenorig;
                }
@@ -1783,7 +1783,7 @@ bool BPH_mass_spring_force_spring_angular(Implicit_Data 
*data, int i, int j, int
        force = stiffness * (angle - restang);
 
        /* compute plasticity offset */
-       if (do_plast) {
+       if (do_plast && (restangorig > 0.0f)) {
                if (angle > restang) {
                        if (angle - restang > yield_ang) {
                                restang += (angle - restang - yield_ang) * 
plasticity;

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

Reply via email to