[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26593] trunk/blender/extern/bullet2/src/ BulletCollision/CollisionShapes: Add btBvhTriangleMeshShape:: buildOptimizedBvh() in preparation of next commit.
Benoit Bolsee
benoit.bolsee at online.be
Wed Feb 3 22:20:09 CET 2010
Revision: 26593
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26593
Author: ben2610
Date: 2010-02-03 22:20:06 +0100 (Wed, 03 Feb 2010)
Log Message:
-----------
Add btBvhTriangleMeshShape::buildOptimizedBvh() in preparation of next commit. This patch has been approved already and will be in Bullet 2.76.
Modified Paths:
--------------
trunk/blender/extern/bullet2/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp
trunk/blender/extern/bullet2/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h
Modified: trunk/blender/extern/bullet2/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp
===================================================================
--- trunk/blender/extern/bullet2/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp 2010-02-03 21:14:50 UTC (rev 26592)
+++ trunk/blender/extern/bullet2/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp 2010-02-03 21:20:06 UTC (rev 26593)
@@ -30,22 +30,9 @@
//construct bvh from meshInterface
#ifndef DISABLE_BVH
- btVector3 bvhAabbMin,bvhAabbMax;
- if(meshInterface->hasPremadeAabb())
- {
- meshInterface->getPremadeAabb(&bvhAabbMin, &bvhAabbMax);
- }
- else
- {
- meshInterface->calculateAabbBruteForce(bvhAabbMin,bvhAabbMax);
- }
-
if (buildBvh)
{
- void* mem = btAlignedAlloc(sizeof(btOptimizedBvh),16);
- m_bvh = new (mem) btOptimizedBvh();
- m_bvh->build(meshInterface,m_useQuantizedAabbCompression,bvhAabbMin,bvhAabbMax);
- m_ownsBvh = true;
+ buildOptimizedBvh();
}
#endif //DISABLE_BVH
@@ -343,20 +330,25 @@
if ((getLocalScaling() -scaling).length2() > SIMD_EPSILON)
{
btTriangleMeshShape::setLocalScaling(scaling);
- if (m_ownsBvh)
- {
- m_bvh->~btOptimizedBvh();
- btAlignedFree(m_bvh);
- }
- ///m_localAabbMin/m_localAabbMax is already re-calculated in btTriangleMeshShape. We could just scale aabb, but this needs some more work
- void* mem = btAlignedAlloc(sizeof(btOptimizedBvh),16);
- m_bvh = new(mem) btOptimizedBvh();
- //rebuild the bvh...
- m_bvh->build(m_meshInterface,m_useQuantizedAabbCompression,m_localAabbMin,m_localAabbMax);
- m_ownsBvh = true;
+ buildOptimizedBvh();
}
}
+void btBvhTriangleMeshShape::buildOptimizedBvh()
+{
+ if (m_ownsBvh)
+ {
+ m_bvh->~btOptimizedBvh();
+ btAlignedFree(m_bvh);
+ }
+ ///m_localAabbMin/m_localAabbMax is already re-calculated in btTriangleMeshShape. We could just scale aabb, but this needs some more work
+ void* mem = btAlignedAlloc(sizeof(btOptimizedBvh),16);
+ m_bvh = new(mem) btOptimizedBvh();
+ //rebuild the bvh...
+ m_bvh->build(m_meshInterface,m_useQuantizedAabbCompression,m_localAabbMin,m_localAabbMax);
+ m_ownsBvh = true;
+}
+
void btBvhTriangleMeshShape::setOptimizedBvh(btOptimizedBvh* bvh, const btVector3& scaling)
{
btAssert(!m_bvh);
Modified: trunk/blender/extern/bullet2/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h
===================================================================
--- trunk/blender/extern/bullet2/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h 2010-02-03 21:14:50 UTC (rev 26592)
+++ trunk/blender/extern/bullet2/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h 2010-02-03 21:20:06 UTC (rev 26593)
@@ -76,6 +76,8 @@
void setOptimizedBvh(btOptimizedBvh* bvh, const btVector3& localScaling=btVector3(1,1,1));
+ void buildOptimizedBvh();
+
bool usesQuantizedAabbCompression() const
{
return m_useQuantizedAabbCompression;
More information about the Bf-blender-cvs
mailing list