Commit: 2ccdaf398e94dc7d56d7a5fe72c6c0d54317c9bb
Author: Martin Felke
Date:   Wed Oct 28 17:38:34 2015 +0100
Branches: fracture_modifier
https://developer.blender.org/rB2ccdaf398e94dc7d56d7a5fe72c6c0d54317c9bb

changed calculation of stability factor for compounds and adapted UI a bit (for 
compounds)

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

M       release/scripts/startup/bl_ui/properties_physics_fracture.py
M       source/blender/blenkernel/intern/rigidbody.c
M       source/blender/makesrna/intern/rna_modifier.c

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

diff --git a/release/scripts/startup/bl_ui/properties_physics_fracture.py 
b/release/scripts/startup/bl_ui/properties_physics_fracture.py
index f2048a3..0e405e5 100644
--- a/release/scripts/startup/bl_ui/properties_physics_fracture.py
+++ b/release/scripts/startup/bl_ui/properties_physics_fracture.py
@@ -156,17 +156,22 @@ class PHYSICS_PT_fracture_simulation(PhysicButtonsPanel, 
Panel):
         col.prop(md, "constraint_limit", text="Constraint limit, per 
MeshIsland")
         col.prop(md, "contact_dist")
 
-        layout.label("Constraint Breaking Settings")
+        if md.use_compounds:
+            layout.label("Compound Breaking Settings")
+        else:
+            layout.label("Constraint Breaking Settings")
+
         col = layout.column(align=True)
         col.prop(md, "breaking_threshold", text="Threshold")
         col.prop(md, "cluster_breaking_threshold")
 
         if md.use_compounds:
-            layout.label("Compound Damage Propagation Settings")
+            #layout.label("Compound Damage Propagation Settings")
             col = layout.column(align=True)
             col.prop(md, "minimum_impulse")
             #col.prop(md, "impulse_dampening")
             #col.prop(md, "directional_factor")
+            col.prop(md, "mass_threshold_factor")
         else:
             layout.label("Constraint Special Breaking Settings")
             col = layout.column(align=True)
@@ -190,9 +195,7 @@ class PHYSICS_PT_fracture_simulation(PhysicButtonsPanel, 
Panel):
             col = layout.column(align=True)
             col.prop(md, "solver_iterations_override")
             col.prop(md, "cluster_solver_iterations_override")
-
-        layout.prop(md, "use_mass_dependent_thresholds")
-        layout.prop(md, "mass_threshold_factor")
+            layout.prop(md, "use_mass_dependent_thresholds")
 
 class PHYSICS_PT_fracture_utilities(PhysicButtonsPanel, Panel):
     bl_label = "Fracture Utilities"
diff --git a/source/blender/blenkernel/intern/rigidbody.c 
b/source/blender/blenkernel/intern/rigidbody.c
index fd86064..07e1e64 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -191,16 +191,21 @@ void BKE_rigidbody_calc_threshold(float max_con_mass, 
FractureModifierData *rmd,
 
        max_thresh = thresh = rmd->breaking_threshold;
        if ((con->mi1->rigidbody != NULL) && (con->mi2->rigidbody != NULL)) {
-               con_mass = con->mi1->rigidbody->mass + 
con->mi2->rigidbody->mass;
 
-               if (rmd->use_mass_dependent_thresholds)
+               if (rmd->use_compounds)
                {
-                       thresh = (con_mass / max_con_mass) * max_thresh;
-               }
+                       float min_mass = MIN2(con->mi1->rigidbody->mass, 
con->mi2->rigidbody->mass);
+                       float max_mass = MAX2(con->mi1->rigidbody->mass, 
con->mi2->rigidbody->mass);
 
-               if (rmd->mass_threshold_factor > 0.0f)
+                       thresh = (min_mass + (rmd->mass_threshold_factor * 
max_mass) / min_mass + max_mass) * max_thresh;
+               }
+               else
                {
-                       thresh = thresh * con_mass * rmd->mass_threshold_factor;
+                       con_mass = con->mi1->rigidbody->mass + 
con->mi2->rigidbody->mass;
+                       if (rmd->use_mass_dependent_thresholds)
+                       {
+                               thresh = (con_mass / max_con_mass) * max_thresh;
+                       }
                }
 
                con->breaking_threshold = thresh;
diff --git a/source/blender/makesrna/intern/rna_modifier.c 
b/source/blender/makesrna/intern/rna_modifier.c
index 6b48257..ce8b47d 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -5244,7 +5244,7 @@ static void rna_def_modifier_fracture(BlenderRNA *brna)
        RNA_def_property_float_funcs(prop, NULL, 
"rna_FractureModifier_mass_threshold_factor_set", NULL);
        RNA_def_property_range(prop, 0.0f, 1.0f);
        RNA_def_property_ui_text(prop, "Stability Factor",
-                                "Determines how 'stable' an object is, by 
multiplying threshold * mass * this factor, 0 means disabled, 1 means highest 
mass dependent stability");
+                                "Determines how 'stable' an object is 0 means 
min_mass / min_mass + max_mass, 1 means maximal threshold everywhere");
        RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
        RNA_def_property_update(prop, 0, "rna_Modifier_update");
 }

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

Reply via email to