diff options
author | Erwin Coumans <blender@erwincoumans.com> | 2008-09-24 07:12:10 +0400 |
---|---|---|
committer | Erwin Coumans <blender@erwincoumans.com> | 2008-09-24 07:12:10 +0400 |
commit | 3b09c0b0d5a5bea78f0832532f8c206280ae6456 (patch) | |
tree | 42b036ffaa18d7ddf3b65a581ed49bb73130551f /extern/bullet2/src/BulletSoftBody | |
parent | 7eae8d0c7ba8d352faca05e6de4886f3ebd3f169 (diff) |
Created a KX_SoftBodyDeformer for real-time soft bodies.
Added SetDeformer/GetDeformer() to KX_GameObject.
Store mapping between graphics/soft body vertices (work-in-progress)
Real-time soft body integration is still very premature, but
for a quick preview, see this testfile:
http://bulletphysics.com/ftp/pub/test/index.php?dir=blender/&file=soft_test.blend
Diffstat (limited to 'extern/bullet2/src/BulletSoftBody')
3 files changed, 26 insertions, 7 deletions
diff --git a/extern/bullet2/src/BulletSoftBody/btSoftBody.h b/extern/bullet2/src/BulletSoftBody/btSoftBody.h index 4306ed9c471..e89bbcc4fa8 100644 --- a/extern/bullet2/src/BulletSoftBody/btSoftBody.h +++ b/extern/bullet2/src/BulletSoftBody/btSoftBody.h @@ -29,7 +29,7 @@ subject to the following restrictions: #include "BulletCollision/BroadphaseCollision/btDbvt.h" class btBroadphaseInterface; -class btCollisionDispatcher; +class btDispatcher; /* btSoftBodyWorldInfo */ struct btSoftBodyWorldInfo @@ -39,7 +39,7 @@ struct btSoftBodyWorldInfo btScalar water_offset; btVector3 water_normal; btBroadphaseInterface* m_broadphase; - btCollisionDispatcher* m_dispatcher; + btDispatcher* m_dispatcher; btVector3 m_gravity; btSparseSdf<3> m_sparsesdf; }; @@ -607,6 +607,7 @@ public: virtual ~btSoftBody(); /* Check for existing link */ + btAlignedObjectArray<int> m_userIndexMapping; virtual void setCollisionShape(btCollisionShape* collisionShape) { diff --git a/extern/bullet2/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp b/extern/bullet2/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp index 01b9fc0fd35..b363a2efbc1 100644 --- a/extern/bullet2/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp +++ b/extern/bullet2/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp @@ -21,6 +21,10 @@ subject to the following restrictions: #include "btSoftBody.h" #include "btSoftBodyHelpers.h" + + + + btSoftRigidDynamicsWorld::btSoftRigidDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration) :btDiscreteDynamicsWorld(dispatcher,pairCache,constraintSolver,collisionConfiguration) { @@ -28,6 +32,11 @@ m_drawFlags = fDrawFlags::Std; m_drawNodeTree = true; m_drawFaceTree = false; m_drawClusterTree = false; +m_sbi.m_broadphase = pairCache; +m_sbi.m_dispatcher = dispatcher; +m_sbi.m_sparsesdf.Initialize(); +m_sbi.m_sparsesdf.Reset(); + } btSoftRigidDynamicsWorld::~btSoftRigidDynamicsWorld() diff --git a/extern/bullet2/src/BulletSoftBody/btSoftRigidDynamicsWorld.h b/extern/bullet2/src/BulletSoftBody/btSoftRigidDynamicsWorld.h index d0010b65aad..aa8795d897b 100644 --- a/extern/bullet2/src/BulletSoftBody/btSoftRigidDynamicsWorld.h +++ b/extern/bullet2/src/BulletSoftBody/btSoftRigidDynamicsWorld.h @@ -13,12 +13,12 @@ subject to the following restrictions: 3. This notice may not be removed or altered from any source distribution. */ -#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h" - #ifndef BT_SOFT_RIGID_DYNAMICS_WORLD_H #define BT_SOFT_RIGID_DYNAMICS_WORLD_H -class btSoftBody; +#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h" +#include "btSoftBody.h" + typedef btAlignedObjectArray<btSoftBody*> btSoftBodyArray; class btSoftRigidDynamicsWorld : public btDiscreteDynamicsWorld @@ -29,7 +29,8 @@ class btSoftRigidDynamicsWorld : public btDiscreteDynamicsWorld bool m_drawNodeTree; bool m_drawFaceTree; bool m_drawClusterTree; - + btSoftBodyWorldInfo m_sbi; + protected: virtual void predictUnconstraintMotion(btScalar timeStep); @@ -40,7 +41,6 @@ protected: void solveSoftBodiesConstraints(); - public: @@ -57,6 +57,15 @@ public: int getDrawFlags() const { return(m_drawFlags); } void setDrawFlags(int f) { m_drawFlags=f; } + btSoftBodyWorldInfo& getWorldInfo() + { + return m_sbi; + } + const btSoftBodyWorldInfo& getWorldInfo() const + { + return m_sbi; + } + btSoftBodyArray& getSoftBodyArray() { |