more physics work, tuning parameters, hooking up friction etc.

This commit is contained in:
Erwin Coumans 2005-07-30 18:10:53 +00:00
parent 9da7ec89ed
commit ed997ca8d2
13 changed files with 59 additions and 52 deletions

@ -390,6 +390,9 @@ ECHO Done
<File <File
RelativePath="..\LinearMath\GEN_random.h"> RelativePath="..\LinearMath\GEN_random.h">
</File> </File>
<File
RelativePath="..\LinearMath\IDebugDraw.h">
</File>
<File <File
RelativePath="..\LinearMath\SimdMatrix3x3.h"> RelativePath="..\LinearMath\SimdMatrix3x3.h">
</File> </File>

@ -33,8 +33,8 @@ void BoxShape::GetAabb(const SimdTransform& t,SimdVector3& aabbMin,SimdVector3&
//todo: this is a quick fix, we need to enlarge the aabb dependent on several criteria //todo: this is a quick fix, we need to enlarge the aabb dependent on several criteria
// SimdVector3 extra(1,1,1); SimdVector3 extra(CONVEX_DISTANCE_MARGIN,CONVEX_DISTANCE_MARGIN,CONVEX_DISTANCE_MARGIN);
// extent += extra; extent += extra;
aabbMin = center - extent; aabbMin = center - extent;
aabbMax = center + extent; aabbMax = center + extent;

@ -33,12 +33,15 @@ void ConvexShape::setLocalScaling(const SimdVector3& scaling)
void ConvexShape::GetAabbSlow(const SimdTransform& trans,SimdVector3&minAabb,SimdVector3&maxAabb) const void ConvexShape::GetAabbSlow(const SimdTransform& trans,SimdVector3&minAabb,SimdVector3&maxAabb) const
{ {
SimdScalar margin = 0.05f; SimdScalar margin = GetMargin();
for (int i=0;i<3;i++) for (int i=0;i<3;i++)
{ {
SimdVector3 vec(0.f,0.f,0.f); SimdVector3 vec(0.f,0.f,0.f);
vec[i] = 1.f; vec[i] = 1.f;
SimdVector3 tmp = trans(LocalGetSupportingVertex(vec*trans.getBasis()));
SimdVector3 sv = LocalGetSupportingVertex(vec*trans.getBasis());
SimdVector3 tmp = trans(sv);
maxAabb[i] = tmp[i]+margin; maxAabb[i] = tmp[i]+margin;
vec[i] = -1.f; vec[i] = -1.f;
tmp = trans(LocalGetSupportingVertex(vec*trans.getBasis())); tmp = trans(LocalGetSupportingVertex(vec*trans.getBasis()));

@ -13,12 +13,13 @@
#include "SimdQuaternion.h" #include "SimdQuaternion.h"
#include "StridingMeshInterface.h" #include "StridingMeshInterface.h"
#include "AabbUtil2.h" #include "AabbUtil2.h"
#include "NarrowPhaseCollision/CollisionMargin.h"
TriangleMeshShape::TriangleMeshShape(StridingMeshInterface* meshInterface) TriangleMeshShape::TriangleMeshShape(StridingMeshInterface* meshInterface)
: m_meshInterface(meshInterface), : m_meshInterface(meshInterface),
m_collisionMargin(0.1f) m_collisionMargin(CONVEX_DISTANCE_MARGIN)
{ {
} }

@ -115,7 +115,7 @@ void BoxTriangleCallback::SetTimeStepAndCounters(float timeStep,int stepCount,fl
boxBody->GetCollisionShape()->GetAabb(boxInTriangleSpace,m_aabbMin,m_aabbMax); boxBody->GetCollisionShape()->GetAabb(boxInTriangleSpace,m_aabbMin,m_aabbMax);
float extraMargin = CONVEX_DISTANCE_MARGIN+0.1f; float extraMargin = CONVEX_DISTANCE_MARGIN;//+0.1f;
SimdVector3 extra(extraMargin,extraMargin,extraMargin); SimdVector3 extra(extraMargin,extraMargin,extraMargin);
@ -133,7 +133,6 @@ void ConvexConcaveCollisionAlgorithm::ClearCache()
void ConvexConcaveCollisionAlgorithm::ProcessCollision (BroadphaseProxy* ,BroadphaseProxy* ,float timeStep,int stepCount,bool useContinuous) void ConvexConcaveCollisionAlgorithm::ProcessCollision (BroadphaseProxy* ,BroadphaseProxy* ,float timeStep,int stepCount,bool useContinuous)
{ {
if (m_concave.GetClientObjectType() == TRIANGLE_MESH_SHAPE_PROXYTYPE) if (m_concave.GetClientObjectType() == TRIANGLE_MESH_SHAPE_PROXYTYPE)
{ {

@ -163,7 +163,7 @@ void ToiContactDispatcher::SolveConstraints(float timeStep, int numIterations,in
info.m_numIterations = numIterations; info.m_numIterations = numIterations;
info.m_timeStep = timeStep; info.m_timeStep = timeStep;
info.m_tau = 0.4f; info.m_tau = 0.4f;
info.m_restitution = 0.1f;//m_restitution; info.m_restitution = 0.0f;//m_restitution;
m_solver->SolveGroup( &islandmanifold[0], islandmanifold.size(),info,debugDrawer ); m_solver->SolveGroup( &islandmanifold[0], islandmanifold.size(),info,debugDrawer );

@ -22,7 +22,7 @@ static SimdScalar ContactThreshold = -10.0f;
float useGlobalSettingContacts = false;//true; float useGlobalSettingContacts = false;//true;
SimdScalar contactDamping = 0.9f; SimdScalar contactDamping = 0.2f;
SimdScalar contactTau = .02f;//0.02f;//*0.02f; SimdScalar contactTau = .02f;//0.02f;//*0.02f;

@ -150,7 +150,7 @@ void ContactJoint::GetInfo2(Info2 *info)
c2[1] = ccc2[1]; c2[1] = ccc2[1];
c2[2] = ccc2[2]; c2[2] = ccc2[2];
float friction = m_body0->getFriction() * m_body1->getFriction(); float friction = 20.f*m_body0->getFriction() * m_body1->getFriction();
// first friction direction // first friction direction
if (m_numRows >= 2) if (m_numRows >= 2)

@ -26,8 +26,8 @@ RigidBody::RigidBody( const MassProps& massProps,SimdScalar linearDamping,SimdSc
setMassProps(massProps.m_mass, massProps.m_inertiaLocal); setMassProps(massProps.m_mass, massProps.m_inertiaLocal);
setDamping(linearDamping, angularDamping); setDamping(linearDamping, angularDamping);
updateInertiaTensor();
m_worldTransform.setIdentity(); m_worldTransform.setIdentity();
updateInertiaTensor();
} }

@ -147,7 +147,7 @@ private:
SimdVector3 m_invInertiaLocal; SimdVector3 m_invInertiaLocal;
SimdVector3 m_totalForce; SimdVector3 m_totalForce;
SimdVector3 m_totalTorque; SimdVector3 m_totalTorque;
SimdQuaternion m_orn1; // SimdQuaternion m_orn1;
SimdVector3 m_linearVelocity; SimdVector3 m_linearVelocity;

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="7.0" Version="7.10"
Name="Bullet3ContinuousCollision" Name="Bullet3ContinuousCollision"
ProjectGUID="{FFD3C64A-30E2-4BC7-BC8F-51818C320400}" ProjectGUID="{FFD3C64A-30E2-4BC7-BC8F-51818C320400}"
SccProjectName="" SccProjectName=""
@ -39,22 +39,22 @@
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
OutputFile="..\..\..\..\..\..\build\msvc_7\libs\extern\debug\Bullet.lib" OutputFile="..\..\..\..\..\build\msvc_7\libs\extern\debug\Bullet.lib"
SuppressStartupBanner="TRUE"/> SuppressStartupBanner="TRUE"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
CommandLine="ECHO Copying header files CommandLine="ECHO Copying header files
IF NOT EXIST ..\..\..\..\..\..\build\msvc_7\extern\bullet\include MKDIR ..\..\..\..\..\..\build\msvc_7\extern\bullet\include IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\bullet\include MKDIR ..\..\..\..\..\build\msvc_7\extern\bullet\include
IF NOT EXIST ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision MKDIR ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision MKDIR ..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision
IF NOT EXIST ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes MKDIR ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes MKDIR ..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes
IF NOT EXIST ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision MKDIR ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision MKDIR ..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision
XCOPY /Y ..\..\LinearMath\*.h ..\..\..\..\..\..\build\msvc_7\extern\bullet\include XCOPY /Y ..\..\LinearMath\*.h ..\..\..\..\..\build\msvc_7\extern\bullet\include
XCOPY /Y ..\..\Bullet\BroadphaseCollision\*.h ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision XCOPY /Y ..\..\Bullet\BroadphaseCollision\*.h ..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision
XCOPY /Y ..\..\Bullet\CollisionShapes\*.h ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes XCOPY /Y ..\..\Bullet\CollisionShapes\*.h ..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes
XCOPY /Y ..\..\Bullet\NarrowPhaseCollision\*.h ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision XCOPY /Y ..\..\Bullet\NarrowPhaseCollision\*.h ..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision
ECHO Done ECHO Done
"/> "/>
@ -105,22 +105,22 @@ ECHO Done
Name="VCCustomBuildTool"/> Name="VCCustomBuildTool"/>
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
OutputFile="..\..\..\..\..\..\build\msvc_7\libs\extern\Bullet.lib" OutputFile="..\..\..\..\..\build\msvc_7\libs\extern\Bullet.lib"
SuppressStartupBanner="TRUE"/> SuppressStartupBanner="TRUE"/>
<Tool <Tool
Name="VCMIDLTool"/> Name="VCMIDLTool"/>
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
CommandLine="ECHO Copying header files CommandLine="ECHO Copying header files
IF NOT EXIST ..\..\..\..\..\..\build\msvc_7\extern\bullet\include MKDIR ..\..\..\..\..\..\build\msvc_7\extern\bullet\include IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\bullet\include MKDIR ..\..\..\..\..\build\msvc_7\extern\bullet\include
IF NOT EXIST ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision MKDIR ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision MKDIR ..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision
IF NOT EXIST ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes MKDIR ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes MKDIR ..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes
IF NOT EXIST ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision MKDIR ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision MKDIR ..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision
XCOPY /Y ..\..\LinearMath\*.h ..\..\..\..\..\..\build\msvc_7\extern\bullet\include XCOPY /Y ..\..\LinearMath\*.h ..\..\..\..\..\build\msvc_7\extern\bullet\include
XCOPY /Y ..\..\Bullet\BroadphaseCollision\*.h ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision XCOPY /Y ..\..\Bullet\BroadphaseCollision\*.h ..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision
XCOPY /Y ..\..\Bullet\CollisionShapes\*.h ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes XCOPY /Y ..\..\Bullet\CollisionShapes\*.h ..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes
XCOPY /Y ..\..\Bullet\NarrowPhaseCollision\*.h ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision XCOPY /Y ..\..\Bullet\NarrowPhaseCollision\*.h ..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision
ECHO Done ECHO Done
"/> "/>
@ -176,15 +176,15 @@ ECHO Done
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
CommandLine="ECHO Copying header files CommandLine="ECHO Copying header files
IF NOT EXIST ..\..\..\..\..\..\build\msvc_7\extern\bullet\include MKDIR ..\..\..\..\..\..\build\msvc_7\extern\bullet\include IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\bullet\include MKDIR ..\..\..\..\..\build\msvc_7\extern\bullet\include
IF NOT EXIST ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision MKDIR ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision MKDIR ..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision
IF NOT EXIST ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes MKDIR ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes MKDIR ..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes
IF NOT EXIST ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision MKDIR ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision MKDIR ..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision
XCOPY /Y ..\..\LinearMath\*.h ..\..\..\..\..\..\build\msvc_7\extern\bullet\include XCOPY /Y ..\..\LinearMath\*.h ..\..\..\..\..\build\msvc_7\extern\bullet\include
XCOPY /Y ..\..\Bullet\BroadphaseCollision\*.h ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision XCOPY /Y ..\..\Bullet\BroadphaseCollision\*.h ..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision
XCOPY /Y ..\..\Bullet\CollisionShapes\*.h ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes XCOPY /Y ..\..\Bullet\CollisionShapes\*.h ..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes
XCOPY /Y ..\..\Bullet\NarrowPhaseCollision\*.h ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision XCOPY /Y ..\..\Bullet\NarrowPhaseCollision\*.h ..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision
ECHO Done ECHO Done
"/> "/>
@ -242,18 +242,17 @@ ECHO Done
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
CommandLine="ECHO Copying header files CommandLine="ECHO Copying header files
IF NOT EXIST ..\..\..\..\..\..\build\msvc_7\extern\bullet\include MKDIR ..\..\..\..\..\..\build\msvc_7\extern\bullet\include IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\bullet\include MKDIR ..\..\..\..\..\build\msvc_7\extern\bullet\include
IF NOT EXIST ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision MKDIR ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision MKDIR ..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision
IF NOT EXIST ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes MKDIR ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes MKDIR ..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes
IF NOT EXIST ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision MKDIR ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision MKDIR ..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision
XCOPY /Y ..\..\LinearMath\*.h ..\..\..\..\..\..\build\msvc_7\extern\bullet\include XCOPY /Y ..\..\LinearMath\*.h ..\..\..\..\..\build\msvc_7\extern\bullet\include
XCOPY /Y ..\..\Bullet\BroadphaseCollision\*.h ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision XCOPY /Y ..\..\Bullet\BroadphaseCollision\*.h ..\..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision
XCOPY /Y ..\..\Bullet\CollisionShapes\*.h ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes XCOPY /Y ..\..\Bullet\CollisionShapes\*.h ..\..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes
XCOPY /Y ..\..\Bullet\NarrowPhaseCollision\*.h ..\..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision XCOPY /Y ..\..\Bullet\NarrowPhaseCollision\*.h ..\..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision
ECHO Done ECHO Done
"/> "/>
<Tool <Tool
Name="VCPreBuildEventTool"/> Name="VCPreBuildEventTool"/>
@ -273,7 +272,8 @@ ECHO Done
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
</Configurations> </Configurations>
<References>
</References>
<Files> <Files>
<Filter <Filter
Name="NarrowPhaseCollision" Name="NarrowPhaseCollision"

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="7.0" Version="7.10"
Name="Bullet3Dynamics" Name="Bullet3Dynamics"
ProjectGUID="{3427A9EF-FF84-4B3E-9AE5-C37CF44D7DA4}" ProjectGUID="{3427A9EF-FF84-4B3E-9AE5-C37CF44D7DA4}"
Keyword="Win32Proj"> Keyword="Win32Proj">
@ -241,7 +241,8 @@ ECHO Done
Name="VCAuxiliaryManagedWrapperGeneratorTool"/> Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration> </Configuration>
</Configurations> </Configurations>
<References>
</References>
<Files> <Files>
<Filter <Filter
Name="ConstraintSolver" Name="ConstraintSolver"