Commit: 5721918848c9a4add4e0e4b038945fdf85ec1153
Author: Luca Rood
Date:   Wed Nov 30 17:44:27 2016 -0200
Branches: cloth-improvements
https://developer.blender.org/rB5721918848c9a4add4e0e4b038945fdf85ec1153

Separate shear damping from structural damping

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

M       release/scripts/startup/bl_ui/properties_physics_cloth.py
M       source/blender/blenkernel/intern/cloth.c
M       source/blender/makesdna/DNA_cloth_types.h
M       source/blender/makesrna/intern/rna_cloth.c
M       source/blender/physics/intern/BPH_mass_spring.cpp

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

diff --git a/release/scripts/startup/bl_ui/properties_physics_cloth.py 
b/release/scripts/startup/bl_ui/properties_physics_cloth.py
index 32bfdda..b5acbcb 100644
--- a/release/scripts/startup/bl_ui/properties_physics_cloth.py
+++ b/release/scripts/startup/bl_ui/properties_physics_cloth.py
@@ -93,7 +93,8 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel, Panel):
         col = split.column()
 
         col.label(text="Damping:")
-        col.prop(cloth, "spring_damping", text="Spring")
+        col.prop(cloth, "structural_damping", text="Structural")
+        col.prop(cloth, "shear_damping", text="Shear")
         col.prop(cloth, "air_damping", text="Air")
         col.prop(cloth, "vel_damping", text="Velocity")
 
diff --git a/source/blender/blenkernel/intern/cloth.c 
b/source/blender/blenkernel/intern/cloth.c
index ca80d29..bc07f35 100644
--- a/source/blender/blenkernel/intern/cloth.c
+++ b/source/blender/blenkernel/intern/cloth.c
@@ -87,7 +87,8 @@ void cloth_init(ClothModifierData *clmd )
        clmd->sim_parms->bending = 0.5;
        clmd->sim_parms->max_bend = 0.5;
        clmd->sim_parms->bending_damping = 0.5;
-       clmd->sim_parms->Cdis = 5.0; 
+       clmd->sim_parms->struct_damp = 5.0;
+       clmd->sim_parms->shear_damp = 5.0;
        clmd->sim_parms->Cvi = 1.0;
        clmd->sim_parms->mass = 0.3f;
        clmd->sim_parms->stepsPerFrame = 5;
diff --git a/source/blender/makesdna/DNA_cloth_types.h 
b/source/blender/makesdna/DNA_cloth_types.h
index cd8ae30..3266fed 100644
--- a/source/blender/makesdna/DNA_cloth_types.h
+++ b/source/blender/makesdna/DNA_cloth_types.h
@@ -49,7 +49,8 @@
 typedef struct ClothSimSettings {
        struct  LinkNode *cache; /* UNUSED atm */
        float   mingoal;        /* see SB */
-       float   Cdis;           /* Mechanical damping of springs.               
*/
+       float   struct_damp;    /* Mechanical damping of structural springs. */
+       float   shear_damp;     /* Mechanical damping of structural springs. */
        float   Cvi;            /* Viscous/fluid damping.                       
*/
        float   gravity[3];     /* Gravity/external force vector.               
*/
        float   dt;             /* This is the duration of our time step, 
computed.     */
@@ -100,7 +101,7 @@ typedef struct ClothSimSettings {
        short   presets; /* used for presets on GUI */
        short   reset;
 
-       char pad0[2];
+       char pad0[6];
        struct EffectorWeights *effector_weights;
 } ClothSimSettings;
 
diff --git a/source/blender/makesrna/intern/rna_cloth.c 
b/source/blender/makesrna/intern/rna_cloth.c
index 6a12654..eab538c 100644
--- a/source/blender/makesrna/intern/rna_cloth.c
+++ b/source/blender/makesrna/intern/rna_cloth.c
@@ -550,10 +550,17 @@ static void rna_def_cloth_sim_settings(BlenderRNA *brna)
        RNA_def_property_update(prop, 0, "rna_cloth_update");
        RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
        
-       prop = RNA_def_property(srna, "spring_damping", PROP_FLOAT, PROP_NONE);
-       RNA_def_property_float_sdna(prop, NULL, "Cdis");
+       prop = RNA_def_property(srna, "structural_damping", PROP_FLOAT, 
PROP_NONE);
+       RNA_def_property_float_sdna(prop, NULL, "struct_damp");
        RNA_def_property_range(prop, 0.0f, 50.0f);
-       RNA_def_property_ui_text(prop, "Spring Damping",
+       RNA_def_property_ui_text(prop, "Structural Spring Damping",
+                                "Damping of cloth velocity (higher = more 
smooth, less jiggling)");
+       RNA_def_property_update(prop, 0, "rna_cloth_update");
+
+       prop = RNA_def_property(srna, "shear_damping", PROP_FLOAT, PROP_NONE);
+       RNA_def_property_float_sdna(prop, NULL, "shear_damp");
+       RNA_def_property_range(prop, 0.0f, 50.0f);
+       RNA_def_property_ui_text(prop, "Shear Spring Damping",
                                 "Damping of cloth velocity (higher = more 
smooth, less jiggling)");
        RNA_def_property_update(prop, 0, "rna_cloth_update");
        
diff --git a/source/blender/physics/intern/BPH_mass_spring.cpp 
b/source/blender/physics/intern/BPH_mass_spring.cpp
index cbfed19..fa26f68 100644
--- a/source/blender/physics/intern/BPH_mass_spring.cpp
+++ b/source/blender/physics/intern/BPH_mass_spring.cpp
@@ -363,10 +363,10 @@ BLI_INLINE void cloth_calc_spring_force(ClothModifierData 
*clmd, ClothSpring *s,
                if (s->type & CLOTH_SPRING_TYPE_SEWING) {
                        // 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, k, parms->Cdis, no_compress, parms->max_sewing, s->f, s->dfdx, 
s->dfdv);
+                       BPH_mass_spring_force_spring_linear(data, s->ij, s->kl, 
s->restlen, k, parms->struct_damp, no_compress, parms->max_sewing, s->f, 
s->dfdx, s->dfdv);
                }
                else {
-                       BPH_mass_spring_force_spring_linear(data, s->ij, s->kl, 
s->restlen, k, parms->Cdis, no_compress, 0.0f, s->f, s->dfdx, s->dfdv);
+                       BPH_mass_spring_force_spring_linear(data, s->ij, s->kl, 
s->restlen, k, parms->struct_damp, no_compress, 0.0f, s->f, s->dfdx, s->dfdv);
                }
 #endif
        }
@@ -379,7 +379,7 @@ BLI_INLINE void cloth_calc_spring_force(ClothModifierData 
*clmd, ClothSpring *s,
                scaling = parms->shear + s->stiffness * fabsf(parms->max_shear 
- parms->shear);
                k = scaling / (s->restlen + FLT_EPSILON);
 
-               BPH_mass_spring_force_spring_linear(data, s->ij, s->kl, 
s->restlen, k, parms->Cdis, no_compress, 0.0f, s->f, s->dfdx, s->dfdv);
+               BPH_mass_spring_force_spring_linear(data, s->ij, s->kl, 
s->restlen, k, parms->shear_damp, no_compress, 0.0f, s->f, s->dfdx, s->dfdv);
 #endif
        }
        else if (s->type & CLOTH_SPRING_TYPE_GOAL) {

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to