[Bf-blender-cvs] [379a754] fracture_modifier: changed volume calculation method for convex hull and triangle meshes, mass fractions should be calculated more accurately now, but note, might change behavior of older simulations !!!

Martin Felke noreply at git.blender.org
Thu Oct 29 16:08:45 CET 2015


Commit: 379a754b83d6bea4591a9977f25536fdcc2780cb
Author: Martin Felke
Date:   Thu Oct 29 15:58:27 2015 +0100
Branches: fracture_modifier
https://developer.blender.org/rB379a754b83d6bea4591a9977f25536fdcc2780cb

changed volume calculation method for convex hull and triangle meshes, mass fractions should be calculated more accurately now, but note, might change behavior of older simulations !!!

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

M	source/blender/blenkernel/intern/rigidbody.c

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

diff --git a/source/blender/blenkernel/intern/rigidbody.c b/source/blender/blenkernel/intern/rigidbody.c
index 80e0098..53b843b 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -295,8 +295,6 @@ float BKE_rigidbody_calc_volume(DerivedMesh *dm, RigidBodyOb *rbo)
 		 * NOTE: this may overestimate the volume, but other methods are overkill
 		 */
 		case RB_SHAPE_BOX:
-		case RB_SHAPE_CONVEXH:
-		case RB_SHAPE_TRIMESH:
 			volume = size[0] * size[1] * size[2];
 			if (size[0] == 0) {
 				volume = size[1] * size[2];
@@ -309,6 +307,22 @@ float BKE_rigidbody_calc_volume(DerivedMesh *dm, RigidBodyOb *rbo)
 			}
 			break;
 
+		case RB_SHAPE_CONVEXH:
+		case RB_SHAPE_TRIMESH:
+		{
+			MVert *mvert = dm->getVertArray(dm);
+			int totvert = dm->getNumVerts(dm);
+			MLoopTri *mlooptri = dm->getLoopTriArray(dm);
+			int tottri = dm->getNumLoopTri(dm);
+			MLoop *mloop = dm->getLoopArray(dm);
+
+			BKE_mesh_calc_volume(mvert, totvert, mlooptri, tottri, mloop, &volume, NULL);
+
+			if (volume == 0.0f)
+				volume = 0.00001f;
+			break;
+		}
+
 #if 0 // XXX: not defined yet
 		case RB_SHAPE_COMPOUND:
 			volume = 0.0f;




More information about the Bf-blender-cvs mailing list