+ more consistent 'setLocalScaling' for the btCompoundShape. Full non-uniform scaling is not supported when child shapes have a rotation. If any child shapes have rotation, the best you can do is either uniform scaling, or 'baking' the non-uniform scaling into the child geometry (vertices of a convex hull for example)

+ fixed an issue with BulletWorldImporter, btBoxShape implicitShapeDimensions already includes local scaling.
This commit is contained in:
rponom
2010-01-28 23:41:09 +00:00
parent ae0e78efd8
commit ee3e231be5
2 changed files with 6 additions and 3 deletions

View File

@@ -267,18 +267,19 @@ void btCompoundShape::calculatePrincipalAxisTransform(btScalar* masses, btTransf
void btCompoundShape::setLocalScaling(const btVector3& scaling)
{
m_localScaling = scaling;
for(int i = 0; i < m_children.size(); i++)
{
btTransform childTrans = getChildTransform(i);
btVector3 childScale = m_children[i].m_childShape->getLocalScaling();
childScale = childScale * (childTrans.getBasis() * scaling);
// childScale = childScale * (childTrans.getBasis() * scaling);
childScale = childScale * scaling / m_localScaling;
m_children[i].m_childShape->setLocalScaling(childScale);
childTrans.setOrigin((childTrans.getOrigin())*scaling);
updateChildTransform(i, childTrans);
recalculateLocalAabb();
}
m_localScaling = scaling;
}