[Bf-blender-cvs] [1eba6949455] temp-fracture-modifier-2.8: attempt for fixing fake cloth + dynamic fracture
Martin Felke
noreply at git.blender.org
Fri Nov 30 01:48:17 CET 2018
Commit: 1eba69494557103479da4824e3d3c3604e028011
Author: Martin Felke
Date: Fri Nov 30 01:48:05 2018 +0100
Branches: temp-fracture-modifier-2.8
https://developer.blender.org/rB1eba69494557103479da4824e3d3c3604e028011
attempt for fixing fake cloth + dynamic fracture
===================================================================
M source/blender/blenkernel/intern/fracture.c
M source/blender/blenkernel/intern/fracture_prefractured.c
M source/blender/blenkernel/intern/fracture_rigidbody.c
M source/blender/blenkernel/intern/fracture_util.c
===================================================================
diff --git a/source/blender/blenkernel/intern/fracture.c b/source/blender/blenkernel/intern/fracture.c
index 356fb7ae775..218e410e457 100644
--- a/source/blender/blenkernel/intern/fracture.c
+++ b/source/blender/blenkernel/intern/fracture.c
@@ -1226,7 +1226,7 @@ static void do_marking(FractureModifierData *fmd, Mesh *result)
void BKE_fracture_copy_customdata(CustomData* src, CustomData* dst,CustomDataMask mask, int src_ofs, int dst_ofs,
int copyelem, int totelem)
{
- //CustomData_copy_data(src, dst, src_ofs, dst_ofs, copyelem);
+
CustomDataLayer *layer;
int i;
for (i = 0; i < src->totlayer; i++)
@@ -1288,7 +1288,7 @@ void BKE_fracture_clear_cache(FractureModifierData* fmd, Scene *scene)
mi->rots = MEM_callocN(sizeof (float) * 4 *frame, "mi->rots");
mi->vels = MEM_callocN(sizeof (float) * 3 *frame, "mi->vels");
mi->aves = MEM_callocN(sizeof (float) * 3 *frame, "mi->aves");
- mi->fractured = false;
+ //mi->fractured = false;
if (!mi->rigidbody->shared->physics_object)
{
@@ -2677,7 +2677,7 @@ void BKE_fracture_do(FractureModifierData *fmd, Shard *mi, Object *obj, Depsgrap
result->id = mi->id + j;
result->rigidbody->flag |= RBO_FLAG_NEEDS_VALIDATE;
result->rigidbody->flag |= RBO_FLAG_NEEDS_RESHAPE;
- BKE_rigidbody_validate_sim_shard(scene->rigidbody_world, result, obj, fmd, true, true, size);
+ //BKE_rigidbody_validate_sim_shard(scene->rigidbody_world, result, obj, fmd, true, true, size);
j++;
}
diff --git a/source/blender/blenkernel/intern/fracture_prefractured.c b/source/blender/blenkernel/intern/fracture_prefractured.c
index 2a3e2660976..9d111972a2d 100644
--- a/source/blender/blenkernel/intern/fracture_prefractured.c
+++ b/source/blender/blenkernel/intern/fracture_prefractured.c
@@ -246,6 +246,7 @@ Mesh* BKE_fracture_apply(FractureModifierData *fmd, Object *ob, Mesh *me_orig, D
fmd->flag |= MOD_FRACTURE_USE_DYNAMIC;
}
+
fmd->shared->flag |= MOD_FRACTURE_REFRESH_CONSTRAINTS;
fmd->shared->flag |= MOD_FRACTURE_REFRESH_AUTOHIDE;
}
@@ -255,7 +256,7 @@ Mesh* BKE_fracture_apply(FractureModifierData *fmd, Object *ob, Mesh *me_orig, D
BKE_fracture_dynamic_do(fmd, ob, scene, depsgraph, bmain);
fmd->shared->flag &= ~ MOD_FRACTURE_REFRESH_DYNAMIC;
- fmd->shared->flag |= MOD_FRACTURE_REFRESH_AUTOHIDE;
+ //fmd->shared->flag |= MOD_FRACTURE_REFRESH_AUTOHIDE;
}
if ((fmd->flag & MOD_FRACTURE_USE_ANIMATED_MESH) && fmd->anim_mesh_ob)
diff --git a/source/blender/blenkernel/intern/fracture_rigidbody.c b/source/blender/blenkernel/intern/fracture_rigidbody.c
index 33375c364fa..b12c2d452fa 100644
--- a/source/blender/blenkernel/intern/fracture_rigidbody.c
+++ b/source/blender/blenkernel/intern/fracture_rigidbody.c
@@ -2134,8 +2134,9 @@ bool BKE_rigidbody_modifier_update(Scene* scene, Object* ob, RigidBodyWorld *rbw
}
BKE_rigidbody_shard_validate(rbw, is_empty ? NULL : mi, ob, fmd, do_rebuild,
- fmd->flag & MOD_FRACTURE_USE_DYNAMIC, bbsize, frame);
+ ((fmd->flag & MOD_FRACTURE_USE_DYNAMIC) && mi->fractured), bbsize, frame);
+ mi->fractured = false;
mi->constraint_index = mi->id;
}
@@ -2214,12 +2215,12 @@ bool BKE_rigidbody_modifier_update(Scene* scene, Object* ob, RigidBodyWorld *rbw
else if (rbsc->flag & RBC_FLAG_NEEDS_VALIDATE && !(fmd->flag & MOD_FRACTURE_USE_DYNAMIC)) {
BKE_rigidbody_validate_sim_shard_constraint(rbw, fmd, ob, rbsc, false);
}
- else if (fmd->flag & MOD_FRACTURE_USE_DYNAMIC) {
+ else if ((fmd->flag & MOD_FRACTURE_USE_DYNAMIC)) {
if (rbsc->mi1 && rbsc->mi2) {
if (!BKE_fracture_meshisland_check_frame(fmd, rbsc->mi1, frame) &&
!BKE_fracture_meshisland_check_frame(fmd, rbsc->mi2, frame))
{
- rbsc->flag |= RBC_FLAG_NEEDS_VALIDATE;
+ //rbsc->flag |= RBC_FLAG_NEEDS_VALIDATE;
BKE_rigidbody_validate_sim_shard_constraint(rbw, fmd, ob, rbsc, false);
}
}
diff --git a/source/blender/blenkernel/intern/fracture_util.c b/source/blender/blenkernel/intern/fracture_util.c
index c1e152bb38e..d8b130634d4 100644
--- a/source/blender/blenkernel/intern/fracture_util.c
+++ b/source/blender/blenkernel/intern/fracture_util.c
@@ -400,16 +400,25 @@ Mesh* BKE_fracture_mesh_boolean(Mesh* geometry, Mesh* shard, Object* obj, Boolea
{
Mesh* result = NULL;
+#if 0
+ int totvert = MIN2(shard->totvert, geometry->totvert);
+ int totedge = MIN2(shard->totedge, geometry->totedge);
+ int totloop = MIN2(shard->totloop, geometry->totloop);
+ int totpoly = MIN2(shard->totpoly, geometry->totpoly);
+#endif
+
if (ctx->use_fractal == false)
{
uv_unwrap_raw_geometry(shard, ctx->uv_layer, true);
do_set_inner_material(shard, ctx->inner_material_index, obj);
}
- BKE_fracture_copy_customdata(&geometry->vdata, &shard->vdata, CD_MASK_ISLAND, 0, 0, shard->totvert, shard->totvert);
- BKE_fracture_copy_customdata(&geometry->edata, &shard->edata, CD_MASK_ISLAND, 0, 0, shard->totedge, shard->totedge);
- BKE_fracture_copy_customdata(&geometry->ldata, &shard->ldata, CD_MASK_ISLAND, 0, 0, shard->totloop, shard->totloop);
- BKE_fracture_copy_customdata(&geometry->pdata, &shard->pdata, CD_MASK_ISLAND, 0, 0, shard->totpoly, shard->totpoly);
+#if 0
+ BKE_fracture_copy_customdata(&geometry->vdata, &shard->vdata, CD_MASK_ISLAND, 0, 0, totvert, totvert);
+ BKE_fracture_copy_customdata(&geometry->edata, &shard->edata, CD_MASK_ISLAND, 0, 0, totedge, totedge);
+ BKE_fracture_copy_customdata(&geometry->ldata, &shard->ldata, CD_MASK_ISLAND, 0, 0, totloop, totloop);
+ BKE_fracture_copy_customdata(&geometry->pdata, &shard->pdata, CD_MASK_ISLAND, 0, 0, totpoly, totpoly);
+#endif
result = BKE_boolean_operation(geometry, obj, shard, obj, ctx->operation, ctx->thresh, NULL);
/*0 == intersection, 2 == difference*/
More information about the Bf-blender-cvs
mailing list