make GLUT optional in cmake

fix for btMultiBody to avoid extreme energy gain
This commit is contained in:
Erwin Coumans
2014-03-17 23:58:03 -07:00
parent 9f92232640
commit cfb06f9cd3
51 changed files with 464 additions and 27 deletions

View File

@@ -0,0 +1,90 @@
INCLUDE_DIRECTORIES(
${BULLET_PHYSICS_SOURCE_DIR}/src
)
SET(Bullet3Collision_SRCS
BroadPhaseCollision/b3DynamicBvh.cpp
BroadPhaseCollision/b3DynamicBvhBroadphase.cpp
BroadPhaseCollision/b3OverlappingPairCache.cpp
NarrowPhaseCollision/b3ConvexUtility.cpp
NarrowPhaseCollision/b3CpuNarrowPhase.cpp
)
SET(Bullet3CollisionBroadPhase_HDRS
BroadPhaseCollision/b3BroadphaseCallback.h
BroadPhaseCollision/b3DynamicBvh.h
BroadPhaseCollision/b3DynamicBvhBroadphase.h
BroadPhaseCollision/b3OverlappingPair.h
BroadPhaseCollision/b3OverlappingPairCache.h
)
SET(Bullet3CollisionBroadPhaseShared_HDRS
BroadPhaseCollision/shared/b3Aabb.h
)
SET(Bullet3CollisionNarrowPhase_HDRS
NarrowPhaseCollision/b3Config.h
NarrowPhaseCollision/b3Contact4.h
NarrowPhaseCollision/b3ConvexUtility.h
NarrowPhaseCollision/b3CpuNarrowPhase.h
NarrowPhaseCollision/b3RaycastInfo.h
NarrowPhaseCollision/b3RigidBodyCL.h
)
SET(Bullet3CollisionNarrowPhaseShared_HDRS
NarrowPhaseCollision/shared/b3BvhSubtreeInfoData.h
NarrowPhaseCollision/shared/b3BvhTraversal.h
NarrowPhaseCollision/shared/b3ClipFaces.h
NarrowPhaseCollision/shared/b3Collidable.h
NarrowPhaseCollision/shared/b3Contact4Data.h
NarrowPhaseCollision/shared/b3ContactConvexConvexSAT.h
NarrowPhaseCollision/shared/b3ContactSphereSphere.h
NarrowPhaseCollision/shared/b3ConvexPolyhedronData.h
NarrowPhaseCollision/shared/b3FindConcaveSatAxis.h
NarrowPhaseCollision/shared/b3FindSeparatingAxis.h
NarrowPhaseCollision/shared/b3MprPenetration.h
NarrowPhaseCollision/shared/b3NewContactReduction.h
NarrowPhaseCollision/shared/b3QuantizedBvhNodeData.h
NarrowPhaseCollision/shared/b3ReduceContacts.h
NarrowPhaseCollision/shared/b3RigidBodyData.h
NarrowPhaseCollision/shared/b3UpdateAabbs.h
)
SET(Bullet3Collision_HDRS
${Bullet3CollisionBroadPhase_HDRS}
${Bullet3CollisionBroadPhaseShared_HDRS}
${Bullet3CollisionNarrowPhaseShared_HDRS}
${Bullet3CollisionNarrowPhase_HDRS}
)
ADD_LIBRARY(Bullet3Collision ${Bullet3Collision_SRCS} ${Bullet3Collision_HDRS})
SET_TARGET_PROPERTIES(Bullet3Collision PROPERTIES VERSION ${BULLET_VERSION})
SET_TARGET_PROPERTIES(Bullet3Collision PROPERTIES SOVERSION ${BULLET_VERSION})
IF (INSTALL_LIBS)
IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
#FILES_MATCHING requires CMake 2.6
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
INSTALL(TARGETS Bullet3Collision DESTINATION .)
ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
INSTALL(TARGETS Bullet3Collision
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX})
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN
".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
SET_TARGET_PROPERTIES(Bullet3Collision PROPERTIES FRAMEWORK true)
SET_TARGET_PROPERTIES(Bullet3Collision PROPERTIES PUBLIC_HEADER "${Bullet3Collision_HDRS}")
# Have to list out sub-directories manually:
#todo
#SET_PROPERTY(SOURCE ${Bullet3CollisionBroadPhase_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/BroadPhaseCollision)
ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
ENDIF (INSTALL_LIBS)

View File

@@ -0,0 +1,63 @@
INCLUDE_DIRECTORIES(
${BULLET_PHYSICS_SOURCE_DIR}/src
)
SET(Bullet3Common_SRCS
b3AlignedAllocator.cpp
b3Vector3.cpp
b3Logging.cpp
)
SET(Bullet3Common_HDRS
b3AlignedAllocator.h
b3AlignedObjectArray.h
b3CommandLineArgs.h
b3HashMap.h
b3Logging.h
b3Matrix3x3.h
b3MinMax.h
b3PoolAllocator.h
b3QuadWord.h
b3Quaternion.h
b3Random.h
b3Scalar.h
b3StackAlloc.h
b3Transform.h
b3TransformUtil.h
b3Vector3.h
shared/b3Float4
shared/b3Int2.h
shared/b3Int4.h
shared/b3Mat3x3.h
shared/b3PlatformDefinitions
shared/b3Quat.h
)
ADD_LIBRARY(Bullet3Common ${Bullet3Common_SRCS} ${Bullet3Common_HDRS})
SET_TARGET_PROPERTIES(Bullet3Common PROPERTIES VERSION ${BULLET_VERSION})
SET_TARGET_PROPERTIES(Bullet3Common PROPERTIES SOVERSION ${BULLET_VERSION})
IF (INSTALL_LIBS)
IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
#FILES_MATCHING requires CMake 2.6
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
INSTALL(TARGETS Bullet3Common DESTINATION .)
ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
INSTALL(TARGETS Bullet3Common
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX})
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN
".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
SET_TARGET_PROPERTIES(Bullet3Common PROPERTIES FRAMEWORK true)
SET_TARGET_PROPERTIES(Bullet3Common PROPERTIES PUBLIC_HEADER "${Bullet3Common_HDRS}")
ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
ENDIF (INSTALL_LIBS)

View File

@@ -0,0 +1,58 @@
INCLUDE_DIRECTORIES(
${BULLET_PHYSICS_SOURCE_DIR}/src
)
SET(Bullet3Dynamics_SRCS
b3CpuRigidBodyPipeline.cpp
ConstraintSolver/b3FixedConstraint.cpp
ConstraintSolver/b3Generic6DofConstraint.cpp
ConstraintSolver/b3PgsJacobiSolver.cpp
ConstraintSolver/b3Point2PointConstraint.cpp
ConstraintSolver/b3TypedConstraint.cpp
)
SET(Bullet3Dynamics_HDRS
b3CpuRigidBodyPipeline.h
ConstraintSolver/b3ContactSolverInfo.h
ConstraintSolver/b3FixedConstraint.h
ConstraintSolver/b3Generic6DofConstraint.h
ConstraintSolver/b3JacobianEntry.h
ConstraintSolver/b3PgsJacobiSolver.h
ConstraintSolver/b3Point2PointConstraint.h
ConstraintSolver/b3SolverBody.h
ConstraintSolver/b3SolverConstraint.h
ConstraintSolver/b3TypedConstraint.h
shared/b3ContactConstraint4.h
shared/b3ConvertConstraint4.h
shared/b3Inertia.h
shared/b3IntegrateTransforms.h
)
ADD_LIBRARY(Bullet3Dynamics ${Bullet3Dynamics_SRCS} ${Bullet3Dynamics_HDRS})
SET_TARGET_PROPERTIES(Bullet3Dynamics PROPERTIES VERSION ${BULLET_VERSION})
SET_TARGET_PROPERTIES(Bullet3Dynamics PROPERTIES SOVERSION ${BULLET_VERSION})
IF (INSTALL_LIBS)
IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
#FILES_MATCHING requires CMake 2.6
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
INSTALL(TARGETS Bullet3Dynamics DESTINATION .)
ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
INSTALL(TARGETS Bullet3Dynamics
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX})
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN
".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
SET_TARGET_PROPERTIES(Bullet3Dynamics PROPERTIES FRAMEWORK true)
SET_TARGET_PROPERTIES(Bullet3Dynamics PROPERTIES PUBLIC_HEADER "${Bullet3Dynamics_HDRS}")
ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
ENDIF (INSTALL_LIBS)

View File

@@ -0,0 +1,44 @@
INCLUDE_DIRECTORIES(
${BULLET_PHYSICS_SOURCE_DIR}/src
)
SET(Bullet3Geometry_SRCS
b3ConvexHullComputer.cpp
b3GeometryUtil.cpp
)
SET(Bullet3Geometry_HDRS
b3AabbUtil.h
b3ConvexHullComputer.h
b3GeometryUtil.h
b3GrahamScan2dConvexHull.h
)
ADD_LIBRARY(Bullet3Geometry ${Bullet3Geometry_SRCS} ${Bullet3Geometry_HDRS})
SET_TARGET_PROPERTIES(Bullet3Geometry PROPERTIES VERSION ${BULLET_VERSION})
SET_TARGET_PROPERTIES(Bullet3Geometry PROPERTIES SOVERSION ${BULLET_VERSION})
IF (INSTALL_LIBS)
IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
#FILES_MATCHING requires CMake 2.6
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
INSTALL(TARGETS Bullet3Geometry DESTINATION .)
ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
INSTALL(TARGETS Bullet3Geometry
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX})
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN
".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
SET_TARGET_PROPERTIES(Bullet3Geometry PROPERTIES FRAMEWORK true)
SET_TARGET_PROPERTIES(Bullet3Geometry PROPERTIES PUBLIC_HEADER "${Bullet3Geometry_HDRS}")
ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
ENDIF (INSTALL_LIBS)

View File

@@ -100,6 +100,7 @@ btMultiBody::btMultiBody(int n_links,
m_angularDamping(0.04f),
m_useGyroTerm(true),
m_maxAppliedImpulse(1000.f),
m_maxCoordinateVelocity(100.f),
m_hasSelfCollision(true),
m_dofCount(0),
__posUpdated(false),
@@ -2410,12 +2411,24 @@ void btMultiBody::calcAccelerationDeltas(const btScalar *force, btScalar *output
output[4] = vdot_out[1];
output[5] = vdot_out[2];
/////////////////
//printf("delta = [");
//for(int dof = 0; dof < getNumLinks() + 6; ++dof)
// printf("%.2f ", output[dof]);
//printf("]\n");
/*
int ndof = getNumLinks() + 6;
printf("test force(impulse) (%d) = [\n",ndof);
for (int i=0;i<ndof;i++)
{
printf("%.2f ", force[i]);
printf("]\n");
}
printf("delta(%d) = [",ndof);
for(int dof = 0; dof < getNumLinks() + 6; ++dof)
printf("%.2f ", output[dof]);
printf("]\n");
/////////////////
*/
int dummy = 0;
}
@@ -2747,16 +2760,25 @@ void btMultiBody::fillContactJacobian(int link,
n_local[0] = rot_from_world[0] * normal;
// omega coeffients first.
btVector3 omega_coeffs;
omega_coeffs = p_minus_com_world.cross(normal);
jac[0] = omega_coeffs[0];
jac[1] = omega_coeffs[1];
jac[2] = omega_coeffs[2];
// then v coefficients
jac[3] = normal[0];
jac[4] = normal[1];
jac[5] = normal[2];
if (this->m_fixedBase)
{
for (int i=0;i<6;i++)
{
jac[i]=0;
}
} else
{
btVector3 omega_coeffs;
omega_coeffs = p_minus_com_world.cross(normal);
jac[0] = omega_coeffs[0];
jac[1] = omega_coeffs[1];
jac[2] = omega_coeffs[2];
// then v coefficients
jac[3] = normal[0];
jac[4] = normal[1];
jac[5] = normal[2];
}
// Set remaining jac values to zero for now.
for (int i = 6; i < 6 + num_links; ++i) {
jac[i] = 0;

View File

@@ -342,6 +342,7 @@ public:
{
sum += delta_vee[i]*multiplier*delta_vee[i]*multiplier;
m_realBuf[i] += delta_vee[i] * multiplier;
btClamp(m_realBuf[i],-m_maxCoordinateVelocity,m_maxCoordinateVelocity);
}
}
@@ -366,6 +367,7 @@ public:
for (int dof = 0; dof < 6 + getNumDofs(); ++dof)
{
m_realBuf[dof] += delta_vee[dof] * multiplier;
btClamp(m_realBuf[dof],-m_maxCoordinateVelocity,m_maxCoordinateVelocity);
}
}
@@ -473,6 +475,15 @@ public:
{
m_useGyroTerm = useGyro;
}
btScalar getMaxCoordinateVelocity() const
{
return m_maxCoordinateVelocity ;
}
void setMaxCoordinateVelocity(btScalar maxVel)
{
m_maxCoordinateVelocity = maxVel;
}
btScalar getMaxAppliedImpulse() const
{
return m_maxAppliedImpulse;
@@ -481,7 +492,6 @@ public:
{
m_maxAppliedImpulse = maxImp;
}
void setHasSelfCollision(bool hasSelfCollision)
{
m_hasSelfCollision = hasSelfCollision;
@@ -582,6 +592,7 @@ private:
btScalar m_angularDamping;
bool m_useGyroTerm;
btScalar m_maxAppliedImpulse;
btScalar m_maxCoordinateVelocity;
bool m_hasSelfCollision;
bool m_isMultiDof;
};

View File

@@ -1,4 +1,4 @@
SUBDIRS( BulletSoftBody BulletCollision BulletDynamics LinearMath )
SUBDIRS( Bullet3Dynamics Bullet3Collision Bullet3Geometry Bullet3Common BulletSoftBody BulletCollision BulletDynamics LinearMath )
IF(BUILD_MULTITHREADING)
SUBDIRS(MiniCL BulletMultiThreaded)