Updated INSTALL description. This info should go also in Bullet User Manual and Online.

Thanks to ejtttje http://code.google.com/p/bullet/issues/detail?id=248

Use GJK for GImpact triangle test
See http://bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=3687

More improvements in GJK degeneracy handling (using second EPA/GJK run)
Issue/discussion here http://code.google.com/p/bullet/issues/detail?id=250

CMake improvements
Thanks to ejtttje http://code.google.com/p/bullet/issues/detail?id=247

Added basic camera/wall detection for character demo
This commit is contained in:
erwin.coumans
2009-07-14 02:10:03 +00:00
parent c4ad354ac0
commit 60c107b7a7
20 changed files with 348 additions and 173 deletions

View File

@@ -237,11 +237,20 @@ void CharacterDemo::clientMoveAndDisplay()
btScalar walkVelocity = btScalar(1.1) * 4.0; // 4 km/h -> 1.1 m/s
btScalar walkSpeed = walkVelocity * dt;
//rotate view
if (gLeft)
walkDirection += strafeDir;
{
btMatrix3x3 orn = m_ghostObject->getWorldTransform().getBasis();
orn *= btMatrix3x3(btQuaternion(btVector3(0,1,0),0.01));
m_ghostObject->getWorldTransform ().setBasis(orn);
}
if (gRight)
walkDirection -= strafeDir;
{
btMatrix3x3 orn = m_ghostObject->getWorldTransform().getBasis();
orn *= btMatrix3x3(btQuaternion(btVector3(0,1,0),-0.01));
m_ghostObject->getWorldTransform ().setBasis(orn);
}
if (gForward)
walkDirection += forwardDir;
@@ -424,7 +433,29 @@ void CharacterDemo::updateCamera()
backward.normalize ();
m_cameraTargetPosition = characterWorldTrans.getOrigin();
m_cameraPosition = m_cameraTargetPosition + up * 2.0 + backward * 12.0;
m_cameraPosition = m_cameraTargetPosition + up * 10.0 + backward * 12.0;
//use the convex sweep test to find a safe position for the camera (not blocked by static geometry)
btSphereShape cameraSphere(0.2f);
btTransform cameraFrom,cameraTo;
cameraFrom.setIdentity();
cameraFrom.setOrigin(characterWorldTrans.getOrigin());
cameraTo.setIdentity();
cameraTo.setOrigin(m_cameraPosition);
btCollisionWorld::ClosestConvexResultCallback cb( characterWorldTrans.getOrigin(), cameraTo.getOrigin() );
cb.m_collisionFilterMask = btBroadphaseProxy::StaticFilter;
m_dynamicsWorld->convexSweepTest(&cameraSphere,cameraFrom,cameraTo,cb);
if (cb.hasHit())
{
btScalar minFraction = cb.m_closestHitFraction;//btMax(btScalar(0.3),cb.m_closestHitFraction);
m_cameraPosition.setInterpolate3(cameraFrom.getOrigin(),cameraTo.getOrigin(),minFraction);
}
//update OpenGL camera settings
glFrustum(-1.0, 1.0, -1.0, 1.0, 1.0, 10000.0);

View File

@@ -15,10 +15,16 @@ subject to the following restrictions:
#ifndef CONTINUOUS_CONVEX_COLLISION_DEMO_H
#define CONTINUOUS_CONVEX_COLLISION_DEMO_H
#include "GlutDemoApplication.h"
///ContinuousConvexCollisionDemo shows the working of the continuous collision detection, including linear and angular motion
#ifdef _WINDOWS
#include "Win32DemoApplication.h"
class btContinuousConvexCollisionDemo : public Win32DemoApplication
#else
#include "GlutDemoApplication.h"
class btContinuousConvexCollisionDemo : public GlutDemoApplication
#endif
{
public:

View File

@@ -63,7 +63,7 @@ btTransform toTrans[maxNumObjects];
int screenWidth = 640;
int screenHeight = 480;
#ifndef _WINDOWS
int main(int argc,char** argv)
{
btContinuousConvexCollisionDemo* ccdDemo = new btContinuousConvexCollisionDemo();
@@ -74,6 +74,17 @@ int main(int argc,char** argv)
return glutmain(argc, argv,screenWidth,screenHeight,"Continuous Convex Collision Demo",ccdDemo);
}
#else
DemoApplication* createDemo()
{
btContinuousConvexCollisionDemo* ccdDemo = new btContinuousConvexCollisionDemo();
ccdDemo->setCameraDistance(40.f);
return ccdDemo;
}
#endif //_WINDOWS
void btContinuousConvexCollisionDemo::initPhysics()
{
@@ -280,8 +291,7 @@ void btContinuousConvexCollisionDemo::displayCallback(void) {
}
}
glFlush();
glutSwapBuffers();
swapBuffers();
}

View File

@@ -74,7 +74,7 @@ subject to the following restrictions:
#define START_POS_Y 5
#define START_POS_Z 0
#include "BasicDemo3D.h"
#include "BasicDemo3d.h"
#include "GlutStuff.h"
///btBulletDynamicsCommon.h is the main Bullet include file, contains most common include files.
#include "btBulletDynamicsCommon.h"

View File

@@ -45,7 +45,7 @@ subject to the following restrictions:
#undef BT_GPU_PREF
#endif
#include "btGpuDemo3DSharedTypes.h"
#include "btGpuDemo3dSharedTypes.h"
//#define CUDA_DEMO_DYNAMICS_WORLD3D_MAX_BATCHES 20
#define CUDA_DEMO_DYNAMICS_WORLD3D_MAX_BATCHES 15

View File

@@ -13,7 +13,7 @@ subject to the following restrictions:
3. This notice may not be removed or altered from any source distribution.
*/
#include "BasicDemo3D.h"
#include "BasicDemo3d.h"
#include "GlutStuff.h"
#include "GLDebugDrawer.h"
#include "btBulletDynamicsCommon.h"
@@ -58,4 +58,4 @@ int main(int argc,char** argv)
//default glut doesn't return from mainloop
return 0;
}
}

View File

@@ -67,7 +67,9 @@ class DemoApplication
int m_mouseOldX;
int m_mouseOldY;
int m_mouseButtons;
public:
int m_modifierKeys;
protected:
float m_scaleBottom;
float m_scaleFactor;

View File

@@ -25,9 +25,9 @@ subject to the following restrictions:
#include <OpenGL/glu.h>
#include <GLUT/glut.h>
#else
#ifndef _WINDOWS
#include <GL/glut.h>
#else
#ifndef _WINDOWS
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
@@ -49,6 +49,8 @@ subject to the following restrictions:
#define BT_KEY_PAGEDOWN VK_NEXT
#define BT_KEY_END VK_END
#define BT_KEY_HOME VK_HOME
#define BT_ACTIVE_ALT VK_LMENU
#else

View File

@@ -32,7 +32,6 @@ DemoApplication* gDemoApplication = 0;
DemoApplication* createDemo();
// Function Declarations
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
@@ -86,7 +85,8 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
gDemoApplication->myinit();
//gDemoApplication->reshape(1024, 768);
gDemoApplication->initPhysics();
gDemoApplication->getDynamicsWorld()->setDebugDrawer(&debugDraw);
if (gDemoApplication->getDynamicsWorld())
gDemoApplication->getDynamicsWorld()->setDebugDrawer(&debugDraw);
// program main loop
@@ -146,10 +146,35 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_SYSKEYDOWN:
{
if (lParam & 1<<29)
{
gDemoApplication->m_modifierKeys = VK_LMENU;
}
break;
}
case WM_SYSKEYUP:
{
if (lParam & 1<<29)
{
gDemoApplication->m_modifierKeys = VK_LMENU;
} else
{
gDemoApplication->m_modifierKeys = 0;
}
break;
}
case WM_SIZE: // Size Action Has Taken Place
switch (wParam) // Evaluate Size Action
{
case SIZE_MINIMIZED: // Was Window Minimized?

View File

@@ -41,6 +41,12 @@ void Win32DemoApplication::clientResetScene()
}
#endif
void Win32DemoApplication::updateModifierKeys()
{
//not yet
}
void Win32DemoApplication::specialKeyboard(int key, int x, int y)
{

View File

@@ -32,6 +32,7 @@ public:
void specialKeyboard(int key, int x, int y);
virtual void updateModifierKeys();
};

138
INSTALL
View File

@@ -1,38 +1,100 @@
Bullet Collision Detection and Physics Library
Compile
Under Windows, projectfiles for Visual Studio version 6,7,7.1 and 8 are available in msvc/<version>.
For example, for Visual Studio 2005, open msvc/8/wksbullet.sln
The ColladaDemo and ConvexDecomposition demo needs to be able to locate the data files (jenga.dae and file.obj) in the current directory. Make sure Visual Studio points to the right folder (..\..).
For other systems, for example Linux or Mac OS-X:
Download/install CMake from www.cmake.org, and run cmake . -G Xcode (or replace Xcode with other available buildsystem).
Alternatively use make or jam:
./autogen.sh
./configure
jam or make
If jam is not available for your system, you can compile it, jam sources are included with the Bullet sources in jam-2.5
compiling jam:
cd jam-2.5
make
(as root)
su
make install
For more help, visit http://www.continuousphysics.com
Bullet Collision Detection and Physics Library
** Windows Compilation **
Under Windows, projectfiles for Visual Studio version 6,7,7.1 and 8 are
available in msvc/<version>. For example, for Visual Studio 2005, open
msvc/8/wksbullet.sln
The ColladaDemo and ConvexDecomposition demo needs to be able to locate the
data files (jenga.dae and file.obj) in the current directory. Make sure Visual
Studio points to the right folder (..\..).
Alternatively use CMake to autogenerate a build system for Windows:
- Download/install CMake from www.cmake.org or package manager
- List available build systems by running 'cmake' in the Bullet root folder
- Create a build system using the -G option for example:
cmake . -G "Visual Studio 9 2008" or
cmake . -G "Visual Studio 9 2008 Win64"
** Linux Compilation **
- Download/install CMake from www.cmake.org or package manager
CMake is like autoconf in that it will create build scripts which are then
used for the actual compilation
- There are some options for cmake builds:
BUILD_SHARED_LIBS: default 'OFF', set to 'ON' to build .so libraries
BUILD_EXTRAS: default 'ON', compiles additional libraries in 'Extras'
BUILD_DEMOS: default 'ON', compiles applications found in 'Demos'
CMAKE_INSTALL_PREFIX: default '/usr/local', the installation path.
CMAKE_INSTALL_RPATH: if you install outside a standard ld search path,
then you should set this to the installation lib path.
Other options may be discovered by 'cmake --help-variable-list' and
'cmake --help-variable OPTION'
- Run 'cmake' with desired options of the form -DOPTION=VALUE
By default this will create the usual Makefile build system, but CMake can
also produce Eclipse or KDevelop project files. See 'cmake --help' to see
what "generators" are available in your environment, selected via '-G'.
For example:
cmake -DBUILD_SHARED_LIBS=ON
- Assuming using the default Makefile output from cmake, run 'make' to
build, and then 'make install' if you wish to install.
** Mac OS X Compilation **
- Download/install CMake from www.cmake.org or package manager
CMake is like autoconf in that it will create build scripts which are then
used for the actual compilation
- There are some options for cmake builds:
BUILD_SHARED_LIBS: default 'OFF', set to 'ON' to build .dylib libraries
BUILD_EXTRAS: default 'ON', compiles additional libraries in 'Extras'
BUILD_DEMOS: default 'ON', compiles applications found in 'Demos'
CMAKE_INSTALL_PREFIX: default '/usr/local', the installation path.
CMAKE_INSTALL_NAME_DIR: if you install outside a standard ld search
path, then you should set this to the installation lib/framework path.
To build framework bundles:
FRAMEWORK: default 'OFF', also requires 'BUILD_SHARED_LIBS' set ON
If both FRAMEWORK and BUILD_SHARED_LIBS are set, will create
OS X style Framework Bundles which can be placed in
linked via the -framework gcc argument or drag into Xcode projects.
(If not framework, then UNIX style 'include' and 'lib' will be produced)
Other options may be discovered by 'cmake --help-variable-list' and
'cmake --help-variable OPTION'
- Run 'cmake' with desired options of the form -DOPTION=VALUE
By default this will create the usual Makefile build system, but CMake can
also produce Eclipse or KDevelop project files. See 'cmake --help' to see
what "generators" are available in your environment, selected via '-G'.
For example:
cmake -DBUILD_SHARED_LIBS=ON -DFRAMEWORK=ON \
-DCMAKE_INSTALL_PREFIX=/Library/Frameworks \
-DCMAKE_INSTALL_NAME_DIR=/Library/Frameworks
- Assuming using the default Makefile output from cmake, run 'make' to build
and then 'make install'.
** Alternative Mac OS X and Linux via 'jam' or autoconf/make **
- at the command line:
./autogen.sh
./configure
- 'jam' or 'make' depending on preference
- If jam is not available for your system, you can compile it, jam sources
are included with the Bullet sources in jam-2.5
- compiling jam:
cd jam-2.5
make
sudo make install
** For more help, visit http://www.bulletphysics.com **

View File

@@ -4,31 +4,31 @@ SET(BulletCollision_SRCS
BroadphaseCollision/btAxisSweep3.cpp
BroadphaseCollision/btBroadphaseProxy.cpp
BroadphaseCollision/btCollisionAlgorithm.cpp
BroadphaseCollision/btDispatcher.cpp
BroadphaseCollision/btDbvtBroadphase.cpp
BroadphaseCollision/btDbvt.cpp
BroadphaseCollision/btDbvtBroadphase.cpp
BroadphaseCollision/btDispatcher.cpp
BroadphaseCollision/btMultiSapBroadphase.cpp
BroadphaseCollision/btOverlappingPairCache.cpp
BroadphaseCollision/btQuantizedBvh.cpp
BroadphaseCollision/btSimpleBroadphase.cpp
CollisionDispatch/btActivatingCollisionAlgorithm.cpp
CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp
CollisionDispatch/btBoxBoxDetector.cpp
CollisionDispatch/btCollisionDispatcher.cpp
CollisionDispatch/btCollisionObject.cpp
CollisionDispatch/btCollisionWorld.cpp
CollisionDispatch/btCompoundCollisionAlgorithm.cpp
CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp
CollisionDispatch/btDefaultCollisionConfiguration.cpp
CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp
CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp
CollisionDispatch/btBoxBoxDetector.cpp
CollisionDispatch/btGhostObject.cpp
CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp
CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp
CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp
CollisionDispatch/btConvexConvexAlgorithm.cpp
CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp
CollisionDispatch/btDefaultCollisionConfiguration.cpp
CollisionDispatch/btEmptyCollisionAlgorithm.cpp
CollisionDispatch/btGhostObject.cpp
CollisionDispatch/btManifoldResult.cpp
CollisionDispatch/btSimulationIslandManager.cpp
CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp
CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp
CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp
CollisionDispatch/btUnionFind.cpp
CollisionDispatch/SphereTriangleDetector.cpp
CollisionShapes/btBoxShape.cpp
@@ -39,9 +39,9 @@ SET(BulletCollision_SRCS
CollisionShapes/btConcaveShape.cpp
CollisionShapes/btConeShape.cpp
CollisionShapes/btConvexHullShape.cpp
CollisionShapes/btConvexInternalShape.cpp
CollisionShapes/btConvexPointCloudShape.cpp
CollisionShapes/btConvexShape.cpp
CollisionShapes/btConvexInternalShape.cpp
CollisionShapes/btConvexTriangleMeshShape.cpp
CollisionShapes/btCylinderShape.cpp
CollisionShapes/btEmptyShape.cpp
@@ -52,34 +52,34 @@ SET(BulletCollision_SRCS
CollisionShapes/btOptimizedBvh.cpp
CollisionShapes/btPolyhedralConvexShape.cpp
CollisionShapes/btScaledBvhTriangleMeshShape.cpp
CollisionShapes/btTetrahedronShape.cpp
CollisionShapes/btSphereShape.cpp
CollisionShapes/btShapeHull.cpp
CollisionShapes/btSphereShape.cpp
CollisionShapes/btStaticPlaneShape.cpp
CollisionShapes/btStridingMeshInterface.cpp
CollisionShapes/btTriangleCallback.cpp
CollisionShapes/btTetrahedronShape.cpp
CollisionShapes/btTriangleBuffer.cpp
CollisionShapes/btTriangleCallback.cpp
CollisionShapes/btTriangleIndexVertexArray.cpp
CollisionShapes/btTriangleIndexVertexMaterialArray.cpp
CollisionShapes/btTriangleMesh.cpp
CollisionShapes/btTriangleMeshShape.cpp
CollisionShapes/btUniformScalingShape.cpp
Gimpact/btContactProcessing.cpp
Gimpact/btGImpactShape.cpp
Gimpact/gim_contact.cpp
Gimpact/btGImpactBvh.cpp
Gimpact/btGenericPoolAllocator.cpp
Gimpact/gim_memory.cpp
Gimpact/btGImpactBvh.cpp
Gimpact/btGImpactCollisionAlgorithm.cpp
Gimpact/btTriangleShapeEx.cpp
Gimpact/gim_tri_collision.cpp
Gimpact/btGImpactQuantizedBvh.cpp
Gimpact/btGImpactShape.cpp
Gimpact/btTriangleShapeEx.cpp
Gimpact/gim_box_set.cpp
Gimpact/gim_contact.cpp
Gimpact/gim_memory.cpp
Gimpact/gim_tri_collision.cpp
NarrowPhaseCollision/btContinuousConvexCollision.cpp
NarrowPhaseCollision/btGjkEpa2.cpp
NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp
NarrowPhaseCollision/btConvexCast.cpp
NarrowPhaseCollision/btGjkConvexCast.cpp
NarrowPhaseCollision/btGjkEpa2.cpp
NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp
NarrowPhaseCollision/btGjkPairDetector.cpp
NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp
NarrowPhaseCollision/btPersistentManifold.cpp
@@ -96,9 +96,9 @@ SET(BroadphaseCollision_HDRS
BroadphaseCollision/btBroadphaseInterface.h
BroadphaseCollision/btBroadphaseProxy.h
BroadphaseCollision/btCollisionAlgorithm.h
BroadphaseCollision/btDispatcher.h
BroadphaseCollision/btDbvtBroadphase.h
BroadphaseCollision/btDbvt.h
BroadphaseCollision/btDbvtBroadphase.h
BroadphaseCollision/btDispatcher.h
BroadphaseCollision/btMultiSapBroadphase.h
BroadphaseCollision/btOverlappingPairCache.h
BroadphaseCollision/btOverlappingPairCallback.h
@@ -107,6 +107,8 @@ SET(BroadphaseCollision_HDRS
)
SET(CollisionDispatch_HDRS
CollisionDispatch/btActivatingCollisionAlgorithm.h
CollisionDispatch/btBoxBoxCollisionAlgorithm.h
CollisionDispatch/btBoxBoxDetector.h
CollisionDispatch/btCollisionConfiguration.h
CollisionDispatch/btCollisionCreateFunc.h
CollisionDispatch/btCollisionDispatcher.h
@@ -114,18 +116,16 @@ SET(CollisionDispatch_HDRS
CollisionDispatch/btCollisionWorld.h
CollisionDispatch/btCompoundCollisionAlgorithm.h
CollisionDispatch/btConvexConcaveCollisionAlgorithm.h
CollisionDispatch/btDefaultCollisionConfiguration.h
CollisionDispatch/btSphereSphereCollisionAlgorithm.h
CollisionDispatch/btBoxBoxCollisionAlgorithm.h
CollisionDispatch/btBoxBoxDetector.h
CollisionDispatch/btGhostObject.h
CollisionDispatch/btSphereBoxCollisionAlgorithm.h
CollisionDispatch/btConvexPlaneCollisionAlgorithm.h
CollisionDispatch/btSphereTriangleCollisionAlgorithm.h
CollisionDispatch/btConvexConvexAlgorithm.h
CollisionDispatch/btConvexPlaneCollisionAlgorithm.h
CollisionDispatch/btDefaultCollisionConfiguration.h
CollisionDispatch/btEmptyCollisionAlgorithm.h
CollisionDispatch/btGhostObject.h
CollisionDispatch/btManifoldResult.h
CollisionDispatch/btSimulationIslandManager.h
CollisionDispatch/btSphereBoxCollisionAlgorithm.h
CollisionDispatch/btSphereSphereCollisionAlgorithm.h
CollisionDispatch/btSphereTriangleCollisionAlgorithm.h
CollisionDispatch/btUnionFind.h
CollisionDispatch/SphereTriangleDetector.h
)
@@ -133,50 +133,68 @@ SET(CollisionShapes_HDRS
CollisionShapes/btBoxShape.h
CollisionShapes/btBvhTriangleMeshShape.h
CollisionShapes/btCapsuleShape.h
CollisionShapes/btCollisionMargin
CollisionShapes/btCollisionMargin.h
CollisionShapes/btCollisionShape.h
CollisionShapes/btCompoundShape.h
CollisionShapes/btConcaveShape.h
CollisionShapes/btConeShape.h
CollisionShapes/btConvexHullShape.h
CollisionShapes/btConvexInternalShape.h
CollisionShapes/btConvexPointCloudShape.h
CollisionShapes/btConvexShape.h
CollisionShapes/btConvexInternalShape.h
CollisionShapes/btConvexTriangleMeshShape.h
CollisionShapes/btCylinderShape.h
CollisionShapes/btEmptyShape.h
CollisionShapes/btHeightfieldTerrainShape.h
CollisionShapes/btMinkowskiSumShape.h
CollisionShapes/btMaterial.h
CollisionShapes/btMinkowskiSumShape.h
CollisionShapes/btMultimaterialTriangleMeshShape.h
CollisionShapes/btMultiSphereShape.h
CollisionShapes/btOptimizedBvh.h
CollisionShapes/btPolyhedralConvexShape.h
CollisionShapes/btScaledBvhTriangleMeshShape.h
CollisionShapes/btTetrahedronShape.h
CollisionShapes/btSphereShape.h
CollisionShapes/btShapeHull.h
CollisionShapes/btSphereShape.h
CollisionShapes/btStaticPlaneShape.h
CollisionShapes/btStridingMeshInterface.h
CollisionShapes/btTriangleCallback.h
CollisionShapes/btTetrahedronShape.h
CollisionShapes/btTriangleBuffer.h
CollisionShapes/btTriangleCallback.h
CollisionShapes/btTriangleIndexVertexArray.h
CollisionShapes/btTriangleIndexVertexMaterialArray.h
CollisionShapes/btTriangleMesh.h
CollisionShapes/btTriangleMeshShape.h
CollisionShapes/btTriangleShape.h
CollisionShapes/btUniformScalingShape.h
)
SET(Gimpact_HDRS
Gimpact/btGImpactShape.h
Gimpact/gim_contact.h
Gimpact/btGImpactBvh.h
Gimpact/btBoxCollision.h
Gimpact/btClipPolygon.h
Gimpact/btContactProcessing.h
Gimpact/btGenericPoolAllocator.h
Gimpact/gim_memory.h
Gimpact/btGeometryOperations.h
Gimpact/btGImpactBvh.h
Gimpact/btGImpactCollisionAlgorithm.h
Gimpact/btTriangleShapeEx.h
Gimpact/gim_tri_collision.h
Gimpact/btGImpactMassUtil.h
Gimpact/btGImpactQuantizedBvh.h
Gimpact/btGImpactShape.h
Gimpact/btQuantization.h
Gimpact/btTriangleShapeEx.h
Gimpact/gim_array.h
Gimpact/gim_basic_geometry_operations.h
Gimpact/gim_bitset.h
Gimpact/gim_box_collision.h
Gimpact/gim_box_set.h
Gimpact/gim_clip_polygon.h
Gimpact/gim_contact.h
Gimpact/gim_geom_types.h
Gimpact/gim_geometry.h
Gimpact/gim_hash_table.h
Gimpact/gim_linear_math.h
Gimpact/gim_math.h
Gimpact/gim_memory.h
Gimpact/gim_radixsort.h
Gimpact/gim_tri_collision.h
)
SET(NarrowPhaseCollision_HDRS
NarrowPhaseCollision/btContinuousConvexCollision.h
@@ -214,10 +232,17 @@ IF (BUILD_SHARED_LIBS)
TARGET_LINK_LIBRARIES(BulletCollision LinearMath)
ENDIF (BUILD_SHARED_LIBS)
#INSTALL of other files requires CMake 2.6
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
INSTALL(TARGETS BulletCollision DESTINATION .)
ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
INSTALL(TARGETS BulletCollision DESTINATION lib)
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h")
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)

View File

@@ -298,7 +298,7 @@ public:
//algorithm details
//#define BULLET_TRIANGLE_COLLISION 1
#define BULLET_TRIANGLE_COLLISION 1
#define GIMPACT_VS_PLANE_COLLISION 1

View File

@@ -47,6 +47,7 @@ bool btGjkEpaPenetrationDepthSolver::calcPenDepth( btSimplexSolverInterface& sim
//resultOut->addContactPoint(results.normal,results.witnesses[1],-results.depth);
wWitnessOnA = results.witnesses[0];
wWitnessOnB = results.witnesses[1];
v = results.normal;
return true;
} else
{
@@ -54,6 +55,7 @@ bool btGjkEpaPenetrationDepthSolver::calcPenDepth( btSimplexSolverInterface& sim
{
wWitnessOnA = results.witnesses[0];
wWitnessOnB = results.witnesses[1];
v = results.normal;
return false;
}
}

View File

@@ -310,28 +310,18 @@ void btGjkPairDetector::getClosestPoints(const ClosestPointInput& input,Result&
if (isValid2)
{
btVector3 tmpNormalInB = tmpPointOnB-tmpPointOnA;
btScalar lenSqr = tmpNormalInB.length2();
if (lenSqr > (SIMD_EPSILON*SIMD_EPSILON))
btScalar distance2 = -(tmpPointOnA-tmpPointOnB).length();
//only replace valid penetrations when the result is deeper (check)
if (!isValid || (distance2 < distance))
{
tmpNormalInB /= btSqrt(lenSqr);
btScalar distance2 = -(tmpPointOnA-tmpPointOnB).length();
//only replace valid penetrations when the result is deeper (check)
if (!isValid || (distance2 < distance))
{
distance = distance2;
pointOnA = tmpPointOnA;
pointOnB = tmpPointOnB;
normalInB = tmpNormalInB;
isValid = true;
m_lastUsedMethod = 3;
} else
{
}
} else
distance = distance2;
pointOnA = tmpPointOnA;
pointOnB = tmpPointOnB;
normalInB = m_cachedSeparatingAxis;
isValid = true;
m_lastUsedMethod = 3;
} else
{
//isValid = false;
m_lastUsedMethod = 4;
}
} else
@@ -342,29 +332,23 @@ void btGjkPairDetector::getClosestPoints(const ClosestPointInput& input,Result&
///thanks to Jacob.Langford for the reproduction case
///http://code.google.com/p/bullet/issues/detail?id=250
btVector3 tmpNormalInB = tmpPointOnA - tmpPointOnB;
btScalar lenSqr = tmpNormalInB.length2();
if (lenSqr > (SIMD_EPSILON*SIMD_EPSILON))
btScalar distance2 = (tmpPointOnA-tmpPointOnB).length()-margin;
//only replace valid distances when the distance is less
if (!isValid || (distance2 < distance))
{
tmpNormalInB /= btSqrt(lenSqr);
btScalar distance2 = (tmpPointOnA-tmpPointOnB).length()-margin;
//only replace valid distances when the distance is less
if (!isValid || (distance2 < distance))
{
distance = distance2;
pointOnA = tmpPointOnA;
pointOnB = tmpPointOnB;
pointOnA -= tmpNormalInB * marginA ;
pointOnB += tmpNormalInB * marginB ;
normalInB = tmpNormalInB;
isValid = true;
m_lastUsedMethod = 6;
} else
{
}
distance = distance2;
pointOnA = tmpPointOnA;
pointOnB = tmpPointOnB;
pointOnA -= m_cachedSeparatingAxis * marginA ;
pointOnB += m_cachedSeparatingAxis * marginB ;
normalInB = m_cachedSeparatingAxis;
isValid = true;
m_lastUsedMethod = 6;
} else
{
m_lastUsedMethod = 5;
}
m_lastUsedMethod = 5;
}
}

View File

@@ -3,25 +3,26 @@ INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src } )
SET(BulletDynamics_SRCS
Character/btKinematicCharacterController.cpp
ConstraintSolver/btConeTwistConstraint.cpp
ConstraintSolver/btContactConstraint.cpp
ConstraintSolver/btGeneric6DofConstraint.cpp
ConstraintSolver/btGeneric6DofSpringConstraint.cpp
ConstraintSolver/btHinge2Constraint.cpp
ConstraintSolver/btUniversalConstraint.cpp
ConstraintSolver/btContactConstraint.cpp
ConstraintSolver/btConeTwistConstraint.cpp
ConstraintSolver/btGeneric6DofConstraint.cpp
ConstraintSolver/btHingeConstraint.cpp
ConstraintSolver/btPoint2PointConstraint.cpp
ConstraintSolver/btSequentialImpulseConstraintSolver.cpp
ConstraintSolver/btSliderConstraint.cpp
ConstraintSolver/btSolve2LinearConstraint.cpp
ConstraintSolver/btTypedConstraint.cpp
Dynamics/Bullet-C-API.cpp
ConstraintSolver/btUniversalConstraint.cpp
Dynamics/btContinuousDynamicsWorld.cpp
Dynamics/btDiscreteDynamicsWorld.cpp
Dynamics/btSimpleDynamicsWorld.cpp
Dynamics/btRigidBody.cpp
Dynamics/btSimpleDynamicsWorld.cpp
Dynamics/Bullet-C-API.cpp
Vehicle/btRaycastVehicle.cpp
Vehicle/btWheelInfo.cpp
Character/btKinematicCharacterController.cpp
)
SET(Root_HDRS
@@ -29,14 +30,13 @@ SET(Root_HDRS
../btBulletCollisionCommon.h
)
SET(ConstraintSolver_HDRS
ConstraintSolver/btGeneric6DofSpringConstraint.h
ConstraintSolver/btHinge2Constraint.h
ConstraintSolver/btUniversalConstraint.h
ConstraintSolver/btConeTwistConstraint.h
ConstraintSolver/btConstraintSolver.h
ConstraintSolver/btContactConstraint.h
ConstraintSolver/btContactSolverInfo.h
ConstraintSolver/btConeTwistConstraint.h
ConstraintSolver/btGeneric6DofConstraint.h
ConstraintSolver/btGeneric6DofSpringConstraint.h
ConstraintSolver/btHinge2Constraint.h
ConstraintSolver/btHingeConstraint.h
ConstraintSolver/btJacobianEntry.h
ConstraintSolver/btPoint2PointConstraint.h
@@ -46,8 +46,10 @@ SET(ConstraintSolver_HDRS
ConstraintSolver/btSolverBody.h
ConstraintSolver/btSolverConstraint.h
ConstraintSolver/btTypedConstraint.h
ConstraintSolver/btUniversalConstraint.h
)
SET(Dynamics_HDRS
Dynamics/btActionInterface.h
Dynamics/btContinuousDynamicsWorld.h
Dynamics/btDiscreteDynamicsWorld.h
Dynamics/btDynamicsWorld.h
@@ -84,8 +86,12 @@ IF (BUILD_SHARED_LIBS)
ENDIF (BUILD_SHARED_LIBS)
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
INSTALL(TARGETS BulletDynamics DESTINATION .)
ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
INSTALL(TARGETS BulletDynamics DESTINATION lib)
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h")
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)

View File

@@ -5,22 +5,23 @@ ${BULLET_PHYSICS_SOURCE_DIR}/src }
SET(BulletSoftBody_SRCS
btSoftBody.cpp
btSoftBodyConcaveCollisionAlgorithm.cpp
btSoftBodyHelpers.cpp
btSoftBodyRigidBodyCollisionConfiguration.cpp
btSoftRigidCollisionAlgorithm.cpp
btSoftSoftCollisionAlgorithm.cpp
btSoftBodyConcaveCollisionAlgorithm.cpp
btSoftRigidDynamicsWorld.cpp
btSoftSoftCollisionAlgorithm.cpp
)
SET(BulletSoftBody_HDRS
btSoftBody.h
btSparseSDF.h
btSoftBodyHelpers.h
btSoftRigidCollisionAlgorithm.h
btSoftSoftCollisionAlgorithm.h
btSoftBodyConcaveCollisionAlgorithm.h
btSoftBodyHelpers.h
btSoftBodyRigidBodyCollisionConfiguration.h
btSoftRigidCollisionAlgorithm.h
btSoftRigidDynamicsWorld.h
btSoftSoftCollisionAlgorithm.h
btSparseSDF.h
)
@@ -33,8 +34,12 @@ IF (BUILD_SHARED_LIBS)
ENDIF (BUILD_SHARED_LIBS)
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
INSTALL(TARGETS BulletSoftBody DESTINATION .)
ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
INSTALL(TARGETS BulletSoftBody DESTINATION lib)
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h")
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)

View File

@@ -6,6 +6,10 @@ endif (CMAKE_SIZEOF_VOID_P MATCHES "8")
#INSTALL of other files requires CMake 2.6
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
# Don't actually need to install any common files, the frameworks include everything
ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
INSTALL(FILES btBulletCollisionCommon.h btBulletDynamicsCommon.h Bullet-C-Api.h DESTINATION include)
ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)

View File

@@ -1,38 +1,38 @@
INCLUDE_DIRECTORIES(
${BULLET_PHYSICS_SOURCE_DIR}/src }
${BULLET_PHYSICS_SOURCE_DIR}/src }
)
SET(LinearMath_SRCS
btAlignedAllocator.cpp
btConvexHull.cpp
btQuickprof.cpp
btGeometryUtil.cpp
btAlignedAllocator.cpp
btQuickprof.cpp
)
SET(LinearMath_HDRS
btAabbUtil2.h
btAlignedAllocator.h
btAlignedObjectArray.h
btList.h
btPoolAllocator.h
btRandom.h
btVector3.h
btConvexHull.h
btDefaultMotionState.h
btMatrix3x3.h
btQuadWord.h
btGeometryUtil.h
btHashMap.h
btScalar.h
btAabbUtil2.h
btConvexHull.h
btIDebugDraw.h
btList.h
btMatrix3x3.h
btMinMax.h
btMotionState.h
btPoolAllocator.h
btQuadWord.h
btQuaternion.h
btQuickprof.h
btRandom.h
btScalar.h
btStackAlloc.h
btGeometryUtil.h
btMotionState.h
btTransform.h
btAlignedAllocator.h
btIDebugDraw.h
btQuickprof.h
btTransformUtil.h
btVector3.h
)
ADD_LIBRARY(LinearMath ${LinearMath_SRCS} ${LinearMath_HDRS})
@@ -41,8 +41,12 @@ SET_TARGET_PROPERTIES(LinearMath PROPERTIES SOVERSION ${BULLET_VERSION})
#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 LinearMath DESTINATION .)
ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
INSTALL(TARGETS LinearMath DESTINATION lib)
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h")
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)