diff options
author | Sergej Reich <sergej.reich@googlemail.com> | 2013-12-26 21:15:56 +0400 |
---|---|---|
committer | Sergej Reich <sergej.reich@googlemail.com> | 2013-12-26 21:38:06 +0400 |
commit | ceb2430dd7b54c31d267eb2be8d412e6d7f1b13a (patch) | |
tree | ac959a55f993ab404a2d33327b7856a6206297bc /source/blender/blenkernel/intern | |
parent | c96601138dfe08705fd4375527d322176b8fa126 (diff) |
Rigidbody: Allow triangle mesh shapes to deform during simulation
Only supported when using the "Deform" mesh source.
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r-- | source/blender/blenkernel/intern/rigidbody.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/rigidbody.c b/source/blender/blenkernel/intern/rigidbody.c index 22126b7e45d..868fa41b5c7 100644 --- a/source/blender/blenkernel/intern/rigidbody.c +++ b/source/blender/blenkernel/intern/rigidbody.c @@ -1030,6 +1030,17 @@ static void rigidbody_update_sim_ob(Scene *scene, RigidBodyWorld *rbw, Object *o if (rbo->physics_object == NULL) return; + if (rbo->shape == RB_SHAPE_TRIMESH && rbo->flag & RBO_FLAG_USE_DEFORM) { + DerivedMesh *dm = ob->derivedDeform; + if (dm) { + MVert *mvert = dm->getVertArray(dm); + int totvert = dm->getNumVerts(dm); + BoundBox *bb = BKE_object_boundbox_get(ob); + + RB_shape_trimesh_update(rbo->physics_shape, (float*)mvert, totvert, sizeof(MVert), bb->vec[0], bb->vec[6]); + } + } + mat4_decompose(loc, rot, scale, ob->obmat); /* update scale for all objects */ |