apply patch for convex decomposition performance improvements, thanks to Tuan Kuranes:
http://code.google.com/p/bullet/issues/detail?id=199 Fix in soft body collision, adding collision margin twice (was visible when rigid body spheres rested on cloth)
This commit is contained in:
@@ -2176,9 +2176,15 @@ inline int maxdir(const T *p,int count,const T &dir)
|
||||
{
|
||||
assert(count);
|
||||
int m=0;
|
||||
float currDotm = dot(p[0], dir);
|
||||
for(int i=1;i<count;i++)
|
||||
{
|
||||
if(dot(p[i],dir)>dot(p[m],dir)) m=i;
|
||||
const float currDoti = dot(p[i], dir);
|
||||
if(currDoti > currDotm)
|
||||
{
|
||||
currDotm = currDoti;
|
||||
m=i;
|
||||
}
|
||||
}
|
||||
return m;
|
||||
}
|
||||
@@ -2189,9 +2195,25 @@ int maxdirfiltered(const T *p,int count,const T &dir,Array<int> &allow)
|
||||
{
|
||||
assert(count);
|
||||
int m=-1;
|
||||
for(int i=0;i<count;i++) if(allow[i])
|
||||
float currDotm = dot(p[0], dir);
|
||||
for(int i=0;i<count;i++)
|
||||
{
|
||||
if(m==-1 || dot(p[i],dir)>dot(p[m],dir)) m=i;
|
||||
if(allow[i])
|
||||
{
|
||||
if(m==-1 )
|
||||
{
|
||||
m=i;
|
||||
}
|
||||
else
|
||||
{
|
||||
const float currDoti = dot(p[i], dir);
|
||||
if (currDoti>currDotm)
|
||||
{
|
||||
currDotm = currDoti;
|
||||
m=i;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
assert(m!=-1);
|
||||
return m;
|
||||
|
||||
@@ -743,8 +743,8 @@ struct btSoftColliders
|
||||
psb = ps;
|
||||
m_colObj = colOb;
|
||||
idt = ps->m_sst.isdt;
|
||||
margin = m_colObj->getCollisionShape()->getMargin()+
|
||||
m_colObj->getCollisionShape()->getMargin();
|
||||
margin = m_colObj->getCollisionShape()->getMargin();
|
||||
///Bullet rigid body uses multiply instead of minimum to determine combined friction. Some customization would be useful.
|
||||
friction = btMin(psb->m_cfg.kDF,m_colObj->getFriction());
|
||||
btVector3 mins;
|
||||
btVector3 maxs;
|
||||
|
||||
Reference in New Issue
Block a user