Commit: fdb18c9d6461dddabf16729ce442554c75328e7f
Author: Martin Felke
Date:   Wed Nov 12 13:14:00 2014 +0100
Branches: fracture_modifier
https://developer.blender.org/rBfdb18c9d6461dddabf16729ce442554c75328e7f

can activate constrained objects too, new setting: cluster solver iterations 
override, attempt to show only cracks between clusters during activation

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

M       release/scripts/startup/bl_ui/properties_physics_fracture.py
M       source/blender/blenkernel/intern/rigidbody.c
M       source/blender/makesdna/DNA_modifier_types.h
M       source/blender/makesrna/intern/rna_modifier.c
M       source/blender/modifiers/intern/MOD_fracture.c

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

diff --git a/release/scripts/startup/bl_ui/properties_physics_fracture.py 
b/release/scripts/startup/bl_ui/properties_physics_fracture.py
index f43e368..e142927 100644
--- a/release/scripts/startup/bl_ui/properties_physics_fracture.py
+++ b/release/scripts/startup/bl_ui/properties_physics_fracture.py
@@ -141,7 +141,9 @@ class PHYSICS_PT_fracture_simulation(PhysicButtonsPanel, 
Panel):
             row.prop(md, "breaking_distance", text="Distance")
             row.prop(md, "breaking_distance_weighted")
 
-            box.prop(md, "solver_iterations_override")
+            col = box.column(align=True)
+            col.prop(md, "solver_iterations_override")
+            col.prop(md, "cluster_solver_iterations_override")
             box.prop(md, "use_mass_dependent_thresholds")
             box.label("Threshold Vertex Group:")
             box.prop_search(md, "thresh_vertex_group", ob, "vertex_groups", 
text = "")
diff --git a/source/blender/blenkernel/intern/rigidbody.c 
b/source/blender/blenkernel/intern/rigidbody.c
index 64cf013..cbf4273 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -1695,7 +1695,7 @@ static int filterCallback(void* world, void* island1, 
void* island2, void *blend
                        fmd1 = (FractureModifierData*)modifiers_findByType(ob1, 
eModifierType_Fracture);
                        valid = valid && (fmd1 != NULL);
                        valid = valid && (ob1->rigidbody_object->flag & 
RBO_FLAG_USE_KINEMATIC_DEACTIVATION);
-                       valid = valid && (ob2->rigidbody_object->flag & 
RBO_FLAG_USE_KINEMATIC_DEACTIVATION);
+                       //valid = valid && (ob2->rigidbody_object->flag & 
RBO_FLAG_USE_KINEMATIC_DEACTIVATION);
 
                        valid2 = valid2 && (fmd1 != NULL);
                        valid2 = valid2 && (fmd1->use_constraints == false);
@@ -1737,7 +1737,7 @@ static int filterCallback(void* world, void* island1, 
void* island2, void *blend
                        fmd2 = (FractureModifierData*)modifiers_findByType(ob2, 
eModifierType_Fracture);
                        valid = valid && (fmd2 != NULL);
                        valid = valid && (ob2->rigidbody_object->flag & 
RBO_FLAG_USE_KINEMATIC_DEACTIVATION);
-                       valid = valid && (ob1->rigidbody_object->flag & 
RBO_FLAG_USE_KINEMATIC_DEACTIVATION);
+                       //valid = valid && (ob1->rigidbody_object->flag & 
RBO_FLAG_USE_KINEMATIC_DEACTIVATION);
 
                        valid2 = valid2 && (fmd2 != NULL);
                        valid2 = valid2 && (fmd2->use_constraints == false);
@@ -2715,7 +2715,12 @@ static void rigidbody_update_simulation(Scene *scene, 
RigidBodyWorld *rbw, bool
                                                iterations = 
rbw->num_solver_iterations;
                                        }
                                        else {
-                                               iterations = 
rmd->solver_iterations_override;
+                                               if ((rbsc->mi1->particle_index 
!= -1) && (rbsc->mi1->particle_index == rbsc->mi2->particle_index)) {
+                                                       iterations = 
rmd->cluster_solver_iterations_override;
+                                               }
+                                               else {
+                                                       iterations = 
rmd->solver_iterations_override;
+                                               }
                                        }
                                        
                                        if (iterations > 0) {
diff --git a/source/blender/makesdna/DNA_modifier_types.h 
b/source/blender/makesdna/DNA_modifier_types.h
index 7bbe12d..bd50271 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -1451,6 +1451,7 @@ typedef struct FractureModifierData {
 
        int constraint_limit;
        int solver_iterations_override;
+       int cluster_solver_iterations_override;
        int breaking_percentage;
        int splinter_axis;
 
@@ -1487,7 +1488,7 @@ typedef struct FractureModifierData {
        /* internal values */
        float max_vol;
 
-       //char pad[4];
+       char pad[4];
 } FractureModifierData;
 
 #endif  /* __DNA_MODIFIER_TYPES_H__ */
diff --git a/source/blender/makesrna/intern/rna_modifier.c 
b/source/blender/makesrna/intern/rna_modifier.c
index c196d97..2cb3ad2 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -713,6 +713,13 @@ static void 
rna_RigidBodyModifier_solver_iterations_override_set(PointerRNA *ptr
        rmd->refresh_constraints = true;
 }
 
+static void 
rna_RigidBodyModifier_cluster_solver_iterations_override_set(PointerRNA *ptr, 
float value)
+{
+       FractureModifierData *rmd = (FractureModifierData*)ptr->data;
+       rmd->cluster_solver_iterations_override = value;
+       rmd->refresh_constraints = true;
+}
+
 static void rna_RigidBodyModifier_autohide_dist_set(PointerRNA *ptr, float 
value)
 {
        FractureModifierData *rmd = (FractureModifierData*)ptr->data;
@@ -4017,6 +4024,13 @@ static void rna_def_modifier_fracture(BlenderRNA *brna)
        RNA_def_property_range(prop, 1.0f, 1000.0f);
        RNA_def_property_ui_text(prop, "Splinter length", "Length of 
splinters");
        RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+       prop = RNA_def_property(srna, "cluster_solver_iterations_override", 
PROP_INT, PROP_NONE);
+       RNA_def_property_int_sdna(prop, NULL, 
"cluster_solver_iterations_override");
+       RNA_def_property_range(prop, 0, INT_MAX);
+       RNA_def_property_int_funcs(prop, NULL, 
"rna_RigidBodyModifier_cluster_solver_iterations_override_set", NULL);
+       RNA_def_property_ui_text(prop, "Cluster Solver Iterations Override", 
"Override the world constraint solver iteration value for INSIDE clusters with 
this value, 0 means no override");
+       RNA_def_property_update(prop, 0, "rna_Modifier_update");
 }
 
 void RNA_def_modifier(BlenderRNA *brna)
diff --git a/source/blender/modifiers/intern/MOD_fracture.c 
b/source/blender/modifiers/intern/MOD_fracture.c
index c1379f6d..097b3ae 100644
--- a/source/blender/modifiers/intern/MOD_fracture.c
+++ b/source/blender/modifiers/intern/MOD_fracture.c
@@ -109,6 +109,7 @@ static void initData(ModifierData *md)
 
        fmd->cluster_breaking_threshold = 1000.0f;
        fmd->solver_iterations_override = 0;
+       fmd->cluster_solver_iterations_override = 0;
        fmd->shards_to_islands = false;
        fmd->execute_threaded = false;
        fmd->nor_tree = NULL;
@@ -1042,9 +1043,11 @@ static void copyData(ModifierData *md, ModifierData 
*target)
        trmd->extra_group = rmd->extra_group;
 
        /* sub object group  XXX Do we keep this ?*/
-       /* trmd->dm_group = rmd->dm_group;*/
+       trmd->dm_group = rmd->dm_group;
 
        trmd->use_particle_birth_coordinates = 
rmd->use_particle_birth_coordinates;
+       trmd->splinter_length = rmd->splinter_length;
+       trmd->cluster_solver_iterations_override = 
rmd->cluster_solver_iterations_override;
 }
 
 /* mi->bb, its for volume fraction calculation.... */

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

Reply via email to