[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