Commit: 55b9eebedef82bc64109a741bea87a98ee1bb25c
Author: Luca Rood
Date:   Fri Jan 6 04:27:29 2017 -0200
Branches: cloth-improvements
https://developer.blender.org/rB55b9eebedef82bc64109a741bea87a98ee1bb25c

Implement rest planarity factor option

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

M       release/scripts/startup/bl_ui/properties_physics_cloth.py
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 fc14855fe8..09f13b9a03 100644
--- a/release/scripts/startup/bl_ui/properties_physics_cloth.py
+++ b/release/scripts/startup/bl_ui/properties_physics_cloth.py
@@ -105,6 +105,7 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel, Panel):
         layout.prop(cloth, "structural_yield_factor")
         layout.prop(cloth, "bending_plasticity")
         layout.prop(cloth, "bending_yield_factor")
+        layout.prop(cloth, "rest_planarity_factor")
 
         split = layout.split()
 
diff --git a/source/blender/makesdna/DNA_cloth_types.h 
b/source/blender/makesdna/DNA_cloth_types.h
index 2480caa279..a2213a67f2 100644
--- a/source/blender/makesdna/DNA_cloth_types.h
+++ b/source/blender/makesdna/DNA_cloth_types.h
@@ -86,6 +86,7 @@ typedef struct ClothSimSettings {
        float   struct_yield_fact;      /* Factor of how much length has to 
change before plastic behavior kicks in (1-inf) */
        float   bend_plasticity;        /* Factor of how much the rest angle 
will change after reaching yield point (0-1) */
        float   bend_yield_fact;        /* How much angle has to change as a 
factor of a full circle before plastic behavior kicks in (0-1) */
+       float   rest_planar_fact;       /* Factor of how planar rest angles 
should be, 0 means the original angle, and 1 means totally flat */
        
        /* XXX various hair stuff
         * should really be separate, this struct is a horrible mess already
@@ -108,7 +109,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 c107b8e4cc..84bd375e48 100644
--- a/source/blender/makesrna/intern/rna_cloth.c
+++ b/source/blender/makesrna/intern/rna_cloth.c
@@ -660,6 +660,12 @@ static void rna_def_cloth_sim_settings(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Bending Yield Factor", "How much cloth 
has to bend before plasticity takes effect");
        RNA_def_property_update(prop, 0, "rna_cloth_update");
 
+       prop = RNA_def_property(srna, "rest_planarity_factor", PROP_FLOAT, 
PROP_NONE);
+       RNA_def_property_float_sdna(prop, NULL, "rest_planar_fact");
+       RNA_def_property_range(prop, 0.0f, 1.0f);
+       RNA_def_property_ui_text(prop, "Rest Planarity Factor", "How planar the 
rest shape should be, 0 is the original shape, and 1 is totally flat");
+       RNA_def_property_update(prop, 0, "rna_cloth_update");
+
        prop = RNA_def_property(srna, "sewing_force_max", PROP_FLOAT, 
PROP_NONE);
        RNA_def_property_float_sdna(prop, NULL, "max_sewing");
        RNA_def_property_range(prop, 0.0f, 10000.0f);
diff --git a/source/blender/physics/intern/BPH_mass_spring.cpp 
b/source/blender/physics/intern/BPH_mass_spring.cpp
index 6eacf19520..830ade1c37 100644
--- a/source/blender/physics/intern/BPH_mass_spring.cpp
+++ b/source/blender/physics/intern/BPH_mass_spring.cpp
@@ -353,8 +353,9 @@ BLI_INLINE void cloth_calc_spring_force(ClothModifierData 
*clmd, ClothSpring *s,
                scaling = parms->bending + s->ang_stiffness * 
fabsf(parms->max_bend - parms->bending);
                k = scaling * s->restlen * s->lenfact * 0.1f; /* multiplying by 
0.1, just to scale the forces to more reasonable values */
 
-               BPH_mass_spring_force_spring_angular(data, s->ij, s->kl, s->pa, 
s->pb, s->la, s->lb, s->restang, &s->angoffset,
-                                                    k, parms->bending_damping, 
bend_plast, parms->bend_yield_fact * M_PI * 2);
+               BPH_mass_spring_force_spring_angular(data, s->ij, s->kl, s->pa, 
s->pb, s->la, s->lb,
+                                                    s->restang * (1.0f - 
parms->rest_planar_fact), &s->angoffset, k,
+                                                    parms->bending_damping, 
bend_plast, parms->bend_yield_fact * M_PI * 2);
 #endif
        }

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

Reply via email to