Fix previous commit, accidently removed some aabbMin/aabbMax assignments.
move margin calculation for aabb before basis transform.
This commit is contained in:
@@ -1229,8 +1229,8 @@ void DemoApplication::clientResetScene()
|
|||||||
myMotionState->m_graphicsWorldTrans = myMotionState->m_startWorldTrans;
|
myMotionState->m_graphicsWorldTrans = myMotionState->m_startWorldTrans;
|
||||||
colObj->setWorldTransform( myMotionState->m_graphicsWorldTrans );
|
colObj->setWorldTransform( myMotionState->m_graphicsWorldTrans );
|
||||||
colObj->setInterpolationWorldTransform( myMotionState->m_startWorldTrans );
|
colObj->setInterpolationWorldTransform( myMotionState->m_startWorldTrans );
|
||||||
//colObj->activate();
|
colObj->activate();
|
||||||
colObj->setActivationState(WANTS_DEACTIVATION);
|
//colObj->setActivationState(WANTS_DEACTIVATION);
|
||||||
}
|
}
|
||||||
//removed cached contact points
|
//removed cached contact points
|
||||||
m_dynamicsWorld->getBroadphase()->getOverlappingPairCache()->cleanProxyFromPairs(colObj->getBroadphaseHandle(),getDynamicsWorld()->getDispatcher());
|
m_dynamicsWorld->getBroadphase()->getOverlappingPairCache()->cleanProxyFromPairs(colObj->getBroadphaseHandle(),getDynamicsWorld()->getDispatcher());
|
||||||
|
|||||||
@@ -234,11 +234,12 @@ void computeAabb (btVector3& aabbMin, btVector3& aabbMax, btConvexInternalShape*
|
|||||||
{
|
{
|
||||||
float margin=convexShape->getMarginNV();
|
float margin=convexShape->getMarginNV();
|
||||||
btVector3 halfExtents = convexShape->getImplicitShapeDimensions();
|
btVector3 halfExtents = convexShape->getImplicitShapeDimensions();
|
||||||
|
halfExtents += btVector3(margin,margin,margin);
|
||||||
btTransform& t = xform;
|
btTransform& t = xform;
|
||||||
btMatrix3x3 abs_b = t.getBasis().absolute();
|
btMatrix3x3 abs_b = t.getBasis().absolute();
|
||||||
btPoint3 center = t.getOrigin();
|
btPoint3 center = t.getOrigin();
|
||||||
btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents));
|
btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents));
|
||||||
extent += btVector3(margin,margin,margin);
|
|
||||||
aabbMin = center - extent;
|
aabbMin = center - extent;
|
||||||
aabbMax = center + extent;
|
aabbMax = center + extent;
|
||||||
break;
|
break;
|
||||||
@@ -250,6 +251,7 @@ void computeAabb (btVector3& aabbMin, btVector3& aabbMax, btConvexInternalShape*
|
|||||||
//add the radius to y-axis to get full height
|
//add the radius to y-axis to get full height
|
||||||
btScalar radius = halfExtents[0];
|
btScalar radius = halfExtents[0];
|
||||||
halfExtents[1] += radius;
|
halfExtents[1] += radius;
|
||||||
|
halfExtents += btVector3(margin,margin,margin);
|
||||||
#if 0
|
#if 0
|
||||||
int capsuleUpAxis = convexShape->getUpAxis();
|
int capsuleUpAxis = convexShape->getUpAxis();
|
||||||
btScalar halfHeight = convexShape->getHalfHeight();
|
btScalar halfHeight = convexShape->getHalfHeight();
|
||||||
@@ -260,7 +262,7 @@ void computeAabb (btVector3& aabbMin, btVector3& aabbMax, btConvexInternalShape*
|
|||||||
btMatrix3x3 abs_b = t.getBasis().absolute();
|
btMatrix3x3 abs_b = t.getBasis().absolute();
|
||||||
btPoint3 center = t.getOrigin();
|
btPoint3 center = t.getOrigin();
|
||||||
btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents));
|
btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents));
|
||||||
extent += btVector3(margin,margin,margin);
|
|
||||||
aabbMin = center - extent;
|
aabbMin = center - extent;
|
||||||
aabbMax = center + extent;
|
aabbMax = center + extent;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -49,10 +49,11 @@ public:
|
|||||||
{
|
{
|
||||||
btVector3 halfExtents(getRadius(),getRadius(),getRadius());
|
btVector3 halfExtents(getRadius(),getRadius(),getRadius());
|
||||||
halfExtents[m_upAxis] = getRadius() + getHalfHeight();
|
halfExtents[m_upAxis] = getRadius() + getHalfHeight();
|
||||||
|
halfExtents += btVector3(getMargin(),getMargin(),getMargin());
|
||||||
btMatrix3x3 abs_b = t.getBasis().absolute();
|
btMatrix3x3 abs_b = t.getBasis().absolute();
|
||||||
btPoint3 center = t.getOrigin();
|
btPoint3 center = t.getOrigin();
|
||||||
btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents));
|
btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents));
|
||||||
extent += btVector3(getMargin(),getMargin(),getMargin());
|
|
||||||
aabbMin = center - extent;
|
aabbMin = center - extent;
|
||||||
aabbMax = center + extent;
|
aabbMax = center + extent;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,6 +122,8 @@ void btCompoundShape::getAabb(const btTransform& trans,btVector3& aabbMin,btVect
|
|||||||
btVector3 extent = btVector3(abs_b[0].dot(localHalfExtents),
|
btVector3 extent = btVector3(abs_b[0].dot(localHalfExtents),
|
||||||
abs_b[1].dot(localHalfExtents),
|
abs_b[1].dot(localHalfExtents),
|
||||||
abs_b[2].dot(localHalfExtents));
|
abs_b[2].dot(localHalfExtents));
|
||||||
|
aabbMin = center-extent;
|
||||||
|
aabbMax = center+extent;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -91,19 +91,15 @@ btHeightfieldTerrainShape::~btHeightfieldTerrainShape()
|
|||||||
|
|
||||||
void btHeightfieldTerrainShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const
|
void btHeightfieldTerrainShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
aabbMin.setValue(-1e30f,-1e30f,-1e30f);
|
|
||||||
aabbMax.setValue(1e30f,1e30f,1e30f);
|
|
||||||
*/
|
|
||||||
|
|
||||||
btVector3 halfExtents = (m_localAabbMax-m_localAabbMin)* m_localScaling * btScalar(0.5);
|
btVector3 halfExtents = (m_localAabbMax-m_localAabbMin)* m_localScaling * btScalar(0.5);
|
||||||
|
halfExtents += btVector3(getMargin(),getMargin(),getMargin());
|
||||||
|
|
||||||
btMatrix3x3 abs_b = t.getBasis().absolute();
|
btMatrix3x3 abs_b = t.getBasis().absolute();
|
||||||
btPoint3 center = t.getOrigin();
|
btPoint3 center = t.getOrigin();
|
||||||
btVector3 extent = btVector3(abs_b[0].dot(halfExtents),
|
btVector3 extent = btVector3(abs_b[0].dot(halfExtents),
|
||||||
abs_b[1].dot(halfExtents),
|
abs_b[1].dot(halfExtents),
|
||||||
abs_b[2].dot(halfExtents));
|
abs_b[2].dot(halfExtents));
|
||||||
extent += btVector3(getMargin(),getMargin(),getMargin());
|
|
||||||
|
|
||||||
aabbMin = center - extent;
|
aabbMin = center - extent;
|
||||||
aabbMax = center + extent;
|
aabbMax = center + extent;
|
||||||
|
|||||||
@@ -64,6 +64,9 @@ public:
|
|||||||
abs_b[1].dot(localHalfExtents),
|
abs_b[1].dot(localHalfExtents),
|
||||||
abs_b[2].dot(localHalfExtents));
|
abs_b[2].dot(localHalfExtents));
|
||||||
|
|
||||||
|
aabbMin = center-extent;
|
||||||
|
aabbMax = center+extent;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -57,6 +57,9 @@ void btTriangleMeshShape::getAabb(const btTransform& trans,btVector3& aabbMin,bt
|
|||||||
btVector3 extent = btVector3(abs_b[0].dot(localHalfExtents),
|
btVector3 extent = btVector3(abs_b[0].dot(localHalfExtents),
|
||||||
abs_b[1].dot(localHalfExtents),
|
abs_b[1].dot(localHalfExtents),
|
||||||
abs_b[2].dot(localHalfExtents));
|
abs_b[2].dot(localHalfExtents));
|
||||||
|
aabbMin = center - extent;
|
||||||
|
aabbMax = center + extent;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user