Revision: 31159
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31159
Author: aligorith
Date: 2010-08-08 09:32:04 +0200 (Sun, 08 Aug 2010)
Log Message:
-----------
Bullet SoC - GImpact is now used in place of BVH-Triangle Shapes for the "Mesh"
collision shape
This doesn't seem to have any impact on the chains setup, though will have to
do more testing to check on other situations.
Modified Paths:
--------------
branches/soc-2010-aligorith-2/source/blender/blenkernel/intern/rigidbody.c
branches/soc-2010-aligorith-2/source/blender/rigidbody/RBI_api.h
branches/soc-2010-aligorith-2/source/blender/rigidbody/rb_bullet_api.cpp
Modified:
branches/soc-2010-aligorith-2/source/blender/blenkernel/intern/rigidbody.c
===================================================================
--- branches/soc-2010-aligorith-2/source/blender/blenkernel/intern/rigidbody.c
2010-08-08 05:13:29 UTC (rev 31158)
+++ branches/soc-2010-aligorith-2/source/blender/blenkernel/intern/rigidbody.c
2010-08-08 07:32:04 UTC (rev 31159)
@@ -235,7 +235,8 @@
}
/* construct collision shape */
- shape = rbShapeNewTriMesh(mdata);
+ //shape = rbShapeNewTriMesh(mdata); /* BVH-Triangle Mesh */
+ shape = rbShapeNewGImpactMesh(mdata); /* GImpact */
/* cleanup temp data */
if (dm)
Modified: branches/soc-2010-aligorith-2/source/blender/rigidbody/RBI_api.h
===================================================================
--- branches/soc-2010-aligorith-2/source/blender/rigidbody/RBI_api.h
2010-08-08 05:13:29 UTC (rev 31158)
+++ branches/soc-2010-aligorith-2/source/blender/rigidbody/RBI_api.h
2010-08-08 07:32:04 UTC (rev 31159)
@@ -217,8 +217,10 @@
/* 1 */
extern rbMeshData *rbTriMeshNewData();
extern void rbTriMeshAddTriangle(rbMeshData *mesh, const float v1[3], const
float v2[3], const float v3[3]);
-/* 2*/
+/* 2a - Triangle Meshes */
extern rbCollisionShape *rbShapeNewTriMesh(rbMeshData *mesh);
+/* 2b - GImpact Meshes */
+extern rbCollisionShape *rbShapeNewGImpactMesh(rbMeshData *mesh);
/* Cleanup --------------------------- */
Modified:
branches/soc-2010-aligorith-2/source/blender/rigidbody/rb_bullet_api.cpp
===================================================================
--- branches/soc-2010-aligorith-2/source/blender/rigidbody/rb_bullet_api.cpp
2010-08-08 05:13:29 UTC (rev 31158)
+++ branches/soc-2010-aligorith-2/source/blender/rigidbody/rb_bullet_api.cpp
2010-08-08 07:32:04 UTC (rev 31159)
@@ -71,6 +71,7 @@
#include "LinearMath/btMatrix3x3.h"
#include "LinearMath/btTransform.h"
+#include "BulletCollision/Gimpact/btGImpactShape.h"
#include "BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h"
/* ********************************** */
@@ -609,6 +610,20 @@
return (rbCollisionShape*) new(mem)
btScaledBvhTriangleMeshShape(unscaledShape, btVector3(1.0f,1.0f,1.0f));
}
+rbCollisionShape *rbShapeNewGImpactMesh(rbMeshData *mesh)
+{
+ /* interpret mesh buffer as btTriangleIndexVertexArray (i.e. an impl of
btStridingMeshInterface) */
+ btTriangleMesh *tmesh = reinterpret_cast<btTriangleMesh*>(mesh);
+ btTriangleIndexVertexArray *meshData =
reinterpret_cast<btTriangleIndexVertexArray*>(tmesh);
+ void *mem;
+
+ mem = btAlignedAlloc(sizeof(btGImpactMeshShape), 16);
+ btGImpactMeshShape *gimpactShape = new(mem)
btGImpactMeshShape(meshData);
+ gimpactShape->updateBound(); // TODO: add this to the update collision
margin call?
+
+ return (rbCollisionShape *) gimpactShape;
+}
+
/* Cleanup --------------------------- */
void rbShapeDelete(rbCollisionShape *cshape)
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs