[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17027] trunk/blender: Last (hopefully) soft body fixes:
Erwin Coumans
blender at erwincoumans.com
Sat Oct 11 22:19:06 CEST 2008
Revision: 17027
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17027
Author: erwin
Date: 2008-10-11 22:19:04 +0200 (Sat, 11 Oct 2008)
Log Message:
-----------
Last (hopefully) soft body fixes:
Enable soft body collision clusters by default.
Add option to 'disable collision' button between soft body and rigid body connected by constraint (option was already available between two rigid bodies)
Modified Paths:
--------------
trunk/blender/extern/bullet2/src/BulletSoftBody/btSoftBody.cpp
trunk/blender/extern/bullet2/src/BulletSoftBody/btSoftBody.h
trunk/blender/extern/bullet2/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp
trunk/blender/source/blender/blenkernel/intern/bullet.c
trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
Modified: trunk/blender/extern/bullet2/src/BulletSoftBody/btSoftBody.cpp
===================================================================
--- trunk/blender/extern/bullet2/src/BulletSoftBody/btSoftBody.cpp 2008-10-11 19:53:39 UTC (rev 17026)
+++ trunk/blender/extern/bullet2/src/BulletSoftBody/btSoftBody.cpp 2008-10-11 20:19:04 UTC (rev 17027)
@@ -306,8 +306,16 @@
}
//
-void btSoftBody::appendAnchor(int node,btRigidBody* body)
+void btSoftBody::appendAnchor(int node,btRigidBody* body,bool disableCollisionWithBody=false)
{
+ if (disableCollisionWithBody)
+ {
+ if (m_collisionDisabledObjects.findLinearSearch(body)==m_collisionDisabledObjects.size())
+ {
+ m_collisionDisabledObjects.push_back(body);
+ }
+ }
+
Anchor a;
a.m_node = &m_nodes[node];
a.m_body = body;
Modified: trunk/blender/extern/bullet2/src/BulletSoftBody/btSoftBody.h
===================================================================
--- trunk/blender/extern/bullet2/src/BulletSoftBody/btSoftBody.h 2008-10-11 19:53:39 UTC (rev 17026)
+++ trunk/blender/extern/bullet2/src/BulletSoftBody/btSoftBody.h 2008-10-11 20:19:04 UTC (rev 17027)
@@ -49,6 +49,8 @@
class btSoftBody : public btCollisionObject
{
public:
+ btAlignedObjectArray<class btCollisionObject*> m_collisionDisabledObjects;
+
//
// Enumerations
//
@@ -667,7 +669,7 @@
Material* mat=0);
/* Append anchor */
void appendAnchor( int node,
- btRigidBody* body);
+ btRigidBody* body,bool disableCollision);
/* Append linear joint */
void appendLinearJoint(const LJoint::Specs& specs,Cluster* body0,Body body1);
void appendLinearJoint(const LJoint::Specs& specs,Body body=Body());
Modified: trunk/blender/extern/bullet2/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp
===================================================================
--- trunk/blender/extern/bullet2/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp 2008-10-11 19:53:39 UTC (rev 17026)
+++ trunk/blender/extern/bullet2/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp 2008-10-11 20:19:04 UTC (rev 17027)
@@ -59,7 +59,10 @@
btSoftBody* softBody = m_isSwapped? (btSoftBody*)body1 : (btSoftBody*)body0;
btCollisionObject* rigidCollisionObject = m_isSwapped? body0 : body1;
- softBody->defaultCollisionHandler(rigidCollisionObject);
+ if (softBody->m_collisionDisabledObjects.findLinearSearch(rigidCollisionObject)==softBody->m_collisionDisabledObjects.size())
+ {
+ softBody->defaultCollisionHandler(rigidCollisionObject);
+ }
}
Modified: trunk/blender/source/blender/blenkernel/intern/bullet.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/bullet.c 2008-10-11 19:53:39 UTC (rev 17026)
+++ trunk/blender/source/blender/blenkernel/intern/bullet.c 2008-10-11 20:19:04 UTC (rev 17027)
@@ -78,8 +78,8 @@
bsb->kSHR = 1.0f;
bsb->kAHR = 0.7f;
- bsb->collisionflags = 0;
- //bsb->collisionflags = OB_BSB_COL_CL_RS + OB_BSB_COL_CL_SS;
+ //bsb->collisionflags = 0;
+ bsb->collisionflags = OB_BSB_COL_CL_RS + OB_BSB_COL_CL_SS;
bsb->numclusteriterations = 64;
return bsb;
Modified: trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
===================================================================
--- trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp 2008-10-11 19:53:39 UTC (rev 17026)
+++ trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp 2008-10-11 20:19:04 UTC (rev 17027)
@@ -1581,7 +1581,7 @@
{
if (rb1)
{
- sb0->appendAnchor(node,rb1);
+ sb0->appendAnchor(node,rb1,disableCollisionBetweenLinkedBodies);
} else
{
sb0->setMass(node,0.f);
@@ -1643,7 +1643,7 @@
{
if (rb0)
{
- sb1->appendAnchor(node,rb0);
+ sb1->appendAnchor(node,rb0,disableCollisionBetweenLinkedBodies);
} else
{
sb1->setMass(node,0.f);
More information about the Bf-blender-cvs
mailing list