[Bf-blender-cvs] [9e6db7f70b5] temp-fracture-modifier-2.8: first attempt of getting dynamic fracture back working

Martin Felke noreply at git.blender.org
Tue Aug 21 18:05:31 CEST 2018


Commit: 9e6db7f70b5f26c917ddc5d6386f82d8b0cb1d65
Author: Martin Felke
Date:   Tue Aug 21 18:04:35 2018 +0200
Branches: temp-fracture-modifier-2.8
https://developer.blender.org/rB9e6db7f70b5f26c917ddc5d6386f82d8b0cb1d65

first attempt of getting dynamic fracture back working

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

M	release/scripts/startup/bl_ui/properties_physics_fracture.py
M	source/blender/blenkernel/BKE_fracture.h
M	source/blender/blenkernel/BKE_rigidbody.h
M	source/blender/blenkernel/intern/fracture.c
M	source/blender/blenkernel/intern/fracture_constraints.c
M	source/blender/blenkernel/intern/fracture_dynamic.c
M	source/blender/blenkernel/intern/fracture_prefractured.c
M	source/blender/blenkernel/intern/fracture_rigidbody.c
M	source/blender/blenkernel/intern/pointcache.c
M	source/blender/blenkernel/intern/rigidbody.c
M	source/blender/editors/object/object_modifier.c
M	source/blender/editors/object/object_transform.c
M	source/blender/editors/transform/transform_conversions.c
M	source/blender/makesdna/DNA_fracture_types.h
M	source/blender/makesdna/DNA_modifier_types.h
M	source/blender/makesrna/intern/rna_fracture.c
M	source/blender/makesrna/intern/rna_rigidbody.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 6e3236a111c..f0ff79fa51e 100644
--- a/release/scripts/startup/bl_ui/properties_physics_fracture.py
+++ b/release/scripts/startup/bl_ui/properties_physics_fracture.py
@@ -101,9 +101,49 @@ class PHYSICS_PT_fracture_advanced(PhysicButtonsPanel, Panel):
         if (md.frac_algorithm in {'BISECT_FAST', 'BISECT_FAST_FILL', 'BOOLEAN_FRACTAL'}):
             col.prop(md, "orthogonality_factor", text="Rectangular Alignment")
 
+class PHYSICS_PT_fracture_dynamic(PhysicButtonsPanel, Panel):
+      bl_label = "Dynamic"
+      bl_parent_id = 'PHYSICS_PT_fracture'
+      bl_options = {'DEFAULT_CLOSED'}
+
+      def draw_header(self, context):
+          md = context.fracture
+          self.layout.prop(md, "use_dynamic", text="")
+
+      def draw(self, context):
+          md = context.fracture
+          layout = self.layout
+          layout.active = md.use_dynamic
+          row = layout.row(align=True)
+          row.prop(md, "dynamic_force")
+          row.prop(md, "dynamic_percentage")
+          col = layout.column(align=True)
+          col.prop(md, "dynamic_new_constraints")
+          row = col.row(align=True)
+          row.prop(md, "limit_impact")
+          row.prop(md, "dynamic_min_size")
+
 class PHYSICS_PT_fracture(PhysicButtonsPanel, Panel):
     bl_label = "Fracture"
 
+    def draw(self, context):
+        md = context.fracture
+        layout = self.layout
+        layout.label(text="Presets:")
+        sub = layout.row(align=True)
+        sub.menu("FRACTURE_MT_presets", text=bpy.types.FRACTURE_MT_presets.bl_label)
+        sub.operator("fracture.preset_add", text="", icon='ZOOMIN')
+        sub.operator("fracture.preset_add", text="", icon='ZOOMOUT').remove_active = True
+
+        layout.context_pointer_set("modifier", md)
+        row = layout.row()
+        row.operator("object.fracture_refresh", text="Execute Fracture", icon='MOD_EXPLODE').reset = True
+
+class PHYSICS_PT_fracture_basic(PhysicButtonsPanel, Panel):
+    bl_label = "Basic"
+    bl_parent_id = 'PHYSICS_PT_fracture'
+    bl_options = {'DEFAULT_CLOSED'}
+
     def icon(self, bool):
         if bool:
             return 'TRIA_DOWN'
@@ -116,36 +156,6 @@ class PHYSICS_PT_fracture(PhysicButtonsPanel, Panel):
         md = context.fracture
         ob = context.object
 
-        if md.fracture_mode != 'EXTERNAL':
-            layout.label(text="Presets:")
-            sub = layout.row(align=True)
-            sub.menu("FRACTURE_MT_presets", text=bpy.types.FRACTURE_MT_presets.bl_label)
-            sub.operator("fracture.preset_add", text="", icon='ZOOMIN')
-            sub.operator("fracture.preset_add", text="", icon='ZOOMOUT').remove_active = True
-        else:
-            layout.label(text="No UI controls here!")
-            layout.label(text="Control happens via Python")
-
-        row = layout.row()
-        row.prop(md, "fracture_mode")
-
-        if md.fracture_mode == 'EXTERNAL':
-        #    col = layout.column(align=True)
-        #    col.context_pointer_set("modifier", md)
-        #    col.operator("object.rigidbody_convert_to_objects", text = "Convert To Objects")
-        #    col.operator("object.rigidbody_convert_to_keyframes", text = "Convert To Keyframed Objects")
-            return
-
-        if md.fracture_mode == 'DYNAMIC':
-            row = layout.row(align=True)
-            row.prop(md, "dynamic_force")
-            row.prop(md, "dynamic_percentage")
-            col = layout.column(align=True)
-            col.prop(md, "dynamic_new_constraints")
-            row = col.row(align=True)
-            row.prop(md, "limit_impact")
-            row.prop(md, "dynamic_min_size")
-
         layout.prop(md, "frac_algorithm")
         if md.frac_algorithm in {'BOOLEAN', 'BOOLEAN_FRACTAL'}:
             col = layout.column(align=True)
@@ -177,10 +187,6 @@ class PHYSICS_PT_fracture(PhysicButtonsPanel, Panel):
         row.prop(md, "auto_execute")
         row.prop(md, "execute_threaded", text="Threaded (WIP)")
 
-        layout.context_pointer_set("modifier", md)
-        row = layout.row()
-        row.operator("object.fracture_refresh", text="Execute Fracture", icon='MOD_EXPLODE').reset = True
-
 class PHYSICS_PT_fracture_simulation(PhysicButtonsPanel, Panel):
     bl_label = "Constraints"
     bl_options = {'DEFAULT_CLOSED'}
@@ -189,7 +195,7 @@ class PHYSICS_PT_fracture_simulation(PhysicButtonsPanel, Panel):
     @classmethod
     def poll(cls, context):
         md = context.fracture
-        return PhysicButtonsPanel.poll(context) and md.fracture_mode != 'EXTERNAL'
+        return PhysicButtonsPanel.poll(context)
 
     def draw(self, context):
         layout = self.layout
@@ -315,7 +321,9 @@ class PHYSICS_PT_fracture_utilities(PhysicButtonsPanel, Panel):
 classes = (
     FRACTURE_MT_presets,
     PHYSICS_PT_fracture,
+    PHYSICS_PT_fracture_basic,
     PHYSICS_PT_fracture_advanced,
+    PHYSICS_PT_fracture_dynamic,
     PHYSICS_PT_fracture_simulation,
     PHYSICS_PT_fracture_utilities,
     PHYSICS_PT_fracture_anim_mesh,
diff --git a/source/blender/blenkernel/BKE_fracture.h b/source/blender/blenkernel/BKE_fracture.h
index 8b3ed9caecf..c7d68480ee2 100644
--- a/source/blender/blenkernel/BKE_fracture.h
+++ b/source/blender/blenkernel/BKE_fracture.h
@@ -35,8 +35,6 @@
 #include "BLI_sys_types.h"
 #include "BKE_scene.h"
 
-struct FracMesh;
-struct Shard;
 struct Mesh;
 
 struct RigidBodyWorld;
@@ -73,30 +71,14 @@ typedef struct FracPointCloud {
 } FracPointCloud;
 
 
-struct Mesh* BKE_fracture_prefractured_apply(struct FractureModifierData *fmd, struct Object *ob, struct Mesh *mesh,
-                                             struct Depsgraph *depsgraph);
-
-struct Mesh* BKE_fracture_dynamic_apply(struct FractureModifierData *fmd, struct Object *ob, struct Mesh *mesh, struct Scene *scene);
-struct Mesh* BKE_fracture_external_apply(struct FractureModifierData *fmd, struct Object* ob, struct Mesh* mesh,
-                                         struct Mesh *derivedData, struct Scene *scene);
-
-struct Mesh* BKE_fracture_mesh_from_packdata(struct FractureModifierData *fmd, struct Mesh *derivedData);
-
-void BKE_fracture_refresh(struct FractureModifierData* fmd, struct Object *ob,
-                                     struct Mesh* mesh, struct Depsgraph *depsgraph);
-
 void BKE_fracture_autohide_refresh(struct FractureModifierData* fmd, struct Object *ob, struct Mesh *me_assembled);
 void BKE_fracture_automerge_refresh(struct FractureModifierData* fmd, struct Mesh *me_assembled);
-struct Mesh *BKE_fracture_result_mesh(struct FractureModifierData* fmd, struct Mesh *dm, struct Object* ob, bool validMesh,
-                                      struct Scene* scene);
 
 FracPointCloud BKE_fracture_points_get(struct Depsgraph *depsgraph, struct FractureModifierData *emd,
                                        struct Object *ob, struct MeshIsland *mi);
 
 void BKE_fracture_face_calc_center_mean(struct Mesh *dm, struct MPoly *mp, float r_cent[3]);
 
-struct Shard* BKE_fracture_shard_find(struct ListBase *shards, ShardID id);
-
 void BKE_fracture_face_pairs(struct FractureModifierData *fmd, struct Mesh *dm, struct Object *ob);
 void BKE_fracture_shared_vert_groups(struct FractureModifierData* fmd, struct Mesh* dm, struct ListBase *shared_verts);
 void BKE_fracture_shared_verts_free(struct ListBase* lb);
@@ -110,8 +92,6 @@ void BKE_fracture_free(struct FractureModifierData *fmd, struct Scene *scene);
 void BKE_fracture_do(struct FractureModifierData *fmd, struct MeshIsland *mi, struct Object *obj,
                      struct Depsgraph *depsgraph, struct Main *bmain, struct Scene *scene);
 
-void BKE_fracture_collect_layers(struct Shard* s, struct Mesh *dm, int vertstart, int polystart, int loopstart, int edgestart);
-
 
 void BKE_fracture_animated_loc_rot(struct FractureModifierData *fmd, struct Object *ob, bool do_bind, struct Depsgraph *depsgraph);
 
@@ -137,36 +117,13 @@ struct RigidBodyShardCon *BKE_fracture_mesh_constraint_create(struct Scene *scen
 void BKE_fracture_mesh_constraint_remove_all(struct FractureModifierData *fmd, struct Scene *scene);
 
 
-/* Shard handling */
-struct Shard *BKE_fracture_shard_create(struct MVert *mvert, struct MPoly *mpoly, struct MLoop *mloop,
-                                        struct MEdge *medge, int totvert, int totpoly, int totloop, int totedge, bool copy);
-
-struct Shard* BKE_fracture_shard_copy(struct Shard *s);
-struct Mesh* BKE_fracture_shard_to_mesh(struct Shard *s, bool doCustomData);
-
-float BKE_shard_calc_minmax(struct Shard *shard);
-void BKE_fracture_shard_free(struct Shard *s, bool doCustomData);
-
 bool BKE_fracture_mesh_center_centroid_area(struct Mesh *shard, float cent[3]);
-void BKE_fracture_custom_data_mesh_to_shard(struct Shard *s, struct Mesh *dm);
-
-
-void BKE_fracture_fracmesh_free(struct FracMesh *fm, bool doCustomData);
-struct FracMesh *BKE_fracture_fracmesh_create(void);
 
 void BKE_bm_mesh_hflag_flush_vert(struct BMesh *bm, const char hflag);
 
 void BKE_fracture_constraint_create(struct Scene *scene, struct FractureModifierData *fmd,
                                                      struct MeshIsland *mi1, struct MeshIsland *mi2, short con_type, float thresh);
 
-bool BKE_fracture_dynamic_lookup_mesh_state(struct FractureModifierData *fmd, int frame);
-
-struct MDeformVert* BKE_fracture_shards_to_islands(struct FractureModifierData* fmd, struct Object* ob, struct Mesh *orig_dm,
-                                                   struct Scene *scene);
-
-void BKE_fracture_fill_vgroup(struct FractureModifierData *rmd, struct Mesh *dm, struct MDeformVert *dvert, struct Object *ob,
-                              struct Mesh *old_cached);
-
 void BKE_fracture_split_islands(struct FractureModifierData *fmd, struct Object* ob, struct Mesh *me, struct Mesh ***temp_islands,
 int *count);
 
@@ -199,5 +156,7 @@ void BKE_fracture_mesh_free(struct Mesh *me);
 void BKE_fracture_meshisland_check_realloc_cache(struct FractureModifierData *fmd, struct RigidBodyWorld *rbw, struct MeshIsland* mi, int frame);
 
 bool BKE_fracture_meshisland_check_frame(struct F

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list