Commit Graph

750 Commits

Author SHA1 Message Date
Erwin Coumans
7a0288bf56 fix issue with btDbvt::collideOCL, related to memmove (needs further testing)
only enable OpenCL demo if flag --enable_experimental_opencl is passed to ExampleBrowser
2015-05-02 22:33:33 -07:00
Erwin Coumans
aec360f158 add Raycast demo 2015-04-30 15:31:44 -07:00
erwin coumans
03e53627d6 fix an issue in MPR collision detection (which is not used by default), only for testing in the VoronoiFracture demo 2015-04-29 12:09:12 -07:00
erwincoumans
794c8ec064 add BspDemo.bsp data file
add sphere2.urdf
move btSpatialAlgebra into LinearMath
remove some warnings, introduce BT_ZERO, BT_ONE, BT_HALF as defines for 0.f/0., 1.f/1., 0.5f/0.5 respectively
2015-04-16 10:17:35 -07:00
erwin coumans
1e13454511 Added experimental implicit gyroscopic force implementation, one by Michael Ewert, and another by Cooper (from OpenDE)
Will also add Erin Catto's local implicit version from the GDC 2015 tutorial
Added demo for btGeneric6DofSpring2Constraint, thanks to Gabor Puhr
Add gfxBridge.autogenerateGraphicsObjects method for Bullet 2 demos in new framework (need to implement all Bullet 2 collision shape types...)
Use 1,1,1 for local scaling in btStaticPlaneShape
2015-03-24 15:55:05 -07:00
Erwin Coumans
193e680790 _N -> n, _C -> c, _L ->l, some collision with a standard C++ header? 2015-02-20 13:51:24 -08:00
Erwin Coumans
c7671779c2 add method to add triangle by its indices for btTriangleMesh
See also https://github.com/bulletphysics/bullet3/pull/315
thanks to quiasmo   for the contribution
2015-02-04 10:47:13 -08:00
Erwin Coumans
b1863f7ce2 Refactored GJK, EPA and MPR as a template class, reducing/removing the dependencies
to the rest of the Bullet code base. This code will replace the original GJK/EPA
in a future commit.

Added btMprPenetration, an implementation of Minkowski Portal Refinement
by Daniel Fiser. Original MPR idea is by Gary Snethen, and the first
implementation is here: https://github.com/erwincoumans/xenocollide
It is an alternative to EPA, although computing the local penetration depth.
EPA computes the global penetration depth. In many cases, MPR is sufficient
and performs better than EPA.
2014-11-02 12:53:36 -08:00
Erwin Coumans
f9eb7c68c5 add btInMemorySerializer (experiments, allows for in-memory deep copy of worlds, bypassing the BulletFileLoader mechanism)
add btCollisionWorldImporter that can load a .bullet file, or use the btInMemorySerializer for deep-copy
2014-09-16 19:18:10 -07:00
erwincoumans
89aeae9102 Add serialization support for btGeneric6DofSpring2Constraint
Attempt to re-order serialization data so it can be serialized in-memory (for deep copy)
2014-09-16 09:22:35 -07:00
Erwin Coumans
a26f9c1871 premake: use *.cpp insteadl of **.cpp 2014-09-05 11:22:25 -07:00
Erwin Coumans
3c558ec995 explicitly deserialize btCapsuleShape date (margin, scaling, halfextents), because the API modifies them 2014-08-26 17:21:08 -07:00
Erwin Coumans
2b35911f2a X11OpenGLWindow: create stencil buffer for shadows in OpenGL2 mode (OpenGL3 uses shadow maps)
Add 'createCollisionObjectGraphicsObject' API for CommonPhysicsSetup
Add 'pthread' dependency as workaround for NVIDIA graphics driver issue
(see //See https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-319/+bug/1248642
)
2014-08-26 11:28:44 -07:00
Erwin Coumans
5834547368 fix more warnings in BulletCollision, and fix CMakeLists for Linux 2014-08-21 15:54:50 -07:00
Erwin Coumans
143c2da254 premake4: don't use recursive file globbing in LinearMath and BulletCollision 2014-08-21 14:03:15 -07:00
erwincoumans
590504bf72 Merge pull request #201 from bgossage/fix_pointer_cast
-- Corrected cast of 32-bit int to 64-bit pointer
2014-08-21 11:19:45 -07:00
Erwin Coumans
7b28e86c7b add improved btGeneric6DofSpring2Constraint, thanks to Puhr Gabor and Tamas Umenhoffer!
improved the new demo testbed (work-in-progress)
add basic Lua demo, import URDF test, STL import, obj import
2014-08-20 16:28:16 -07:00
bgossage
d58857f06b -- Corrected cast of 32-bit int to 64-bit pointer
-- Removes 64-bit portability issue.
2014-07-17 11:13:07 -05:00
erwin coumans
eb74688c18 Add setUserIndex/getUserIndex (int index) to btCollisionShape
Share physics setup of BasicDemo between different graphics frameworks, see Demos\BasicDemo\BasicDemoPhysicsSetup.*
Plan is to do this for all Bullet demos.
Improve gwen performance and cursor navigation for tree control.
tweak shadowmap size
SimpleOpenGL3App::registerCubeShape accepts half extents
2014-05-20 12:02:01 -07:00
Erwin Coumans
7f3cbc066f Remove @workaround for sticky convex collisions in btGjkPairDetector, it suffers from many artifacts,
We still need to do more work on GJK when using very small collision margins...
Fix premake build on Windows
2014-05-15 22:55:54 -07:00
Erwin Coumans
e579fa9488 fix/workaround for gcc internal compiler error
See also http://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?f=9&t=9636&hilit=compiler+error+gcc

and https://github.com/bulletphysics/bullet3/issues/174
https://github.com/bulletphysics/bullet3/issues/39
2014-05-15 15:44:22 -07:00
Erwin Coumans
7151865c16 Introduce kF_UseGjkConvexCastRaytest, and make kF_UseSubSimplexConvexCastRaytest the default for btCollisionWorld::rayTest See https://github.com/bulletphysics/bullet3/issues/34
Add btCollisionObject::setIgnoreCollisionCheck to disable collisions between specific instances, without having a btTypedConstraint. See https://github.com/bulletphysics/bullet3/issues/165

Make btMultiBody and btMultiBodyJointMotor backwards compatible with Bullet 2.82 API (single-DOF API)
2014-05-01 13:51:56 -07:00
XBog
ed42e217b5 subdivion backface shouldnt be in front 2014-04-12 18:11:58 +02:00
erwin coumans
69e5454d18 Add the old Bullet 2.x obsolete demos, and CMake buildsystem files, and gradually move them to newer Bullet 3.x structure
Use statically linked freeglut, instead of dynamic glut for the obsolete Bullet 2.x demos
Add the 'reset' method to b3GpuDynamicsWorld, and use it in the BasicGpuDemo (pretty slow in debug mode, use release mode)
Don't crash in btCollisionWorld, if there is no collision dispatcher
2013-12-19 12:40:59 -08:00
Erwin Coumans
222ecb156d add GImpact and BulletSoftBody, until we have replacement (otherwise it prevents people from migrating to the github/Bullet3 repository) 2013-12-18 09:05:30 -08:00
erwincoumans
fca6d11381 created new Bullet 2 CPU BasicDemo, using the OpenGL 3 rendering. I will add picking soon. Hold ctrl/alt + mouse to move/zoom camera
remove reference to btGImpact (it is removed now)
2013-12-06 17:48:58 -08:00
Erwin Coumans
f06312c632 remove most clutter (todo) 2013-12-06 15:29:13 -07:00
erwin.coumans@gmail.com
1362b6ab48 Fix convex cast normals for btScaledBvhTriangleShape: normals were already in world space
See Issue 371 THere seems to be some other issues, need to get a reproduction case.
2013-11-26 18:44:06 +00:00
erwin.coumans@gmail.com
9aad92315b Avoid crash in btCompoundCompoundCollisionAlgorithm if there is no tree for one of the btCompoundShapes
Update the revision, to avoid clearing the child cache each frame
2013-11-17 20:35:35 +00:00
erwin.coumans@gmail.com
cf7f5436e4 apply CMake patch in Issue 748
thanks to Julien Schueller for the contribution!
2013-10-22 18:34:17 +00:00
erwin.coumans@gmail.com
5bd6decb2e Use the more accurate, but slightly slower, gjk ray test by default, instead of the sub-simplex convex cast.
Set the rayCallback.m_flag  btTriangleRaycastCallback::kF_UseSubSimplexConvexCastRaytest to enable the previous approximate/faster ray test.
2013-10-19 16:42:17 +00:00
erwin.coumans@gmail.com
2fb686b937 change btMultiBody to allow removal/changing of links
(still not easy to modify the link structure of a btMultiBody -> You have to manually re-link parents, copying links around etc)
2013-10-03 05:13:41 +00:00
erwin.coumans
f02dd51597 Added a first version of a Featherstone multi body implementation.
The original version was written by Stephen Thompson.
I replaced Eigen math by Bullet LinearMath, and added a dedicated 6x6 matrix solver. 
Also I integrated support for collisions/contact constraints between btMultiBody and btRigidBody, and de-activation support.
See Demos/FeatherstoneMultiBodyDemo/Win32FeatherstoneMultiBodyDemo.cpp for example usage.
There is currently only support for contact constraints for btMultiBody. 
Next on the list will be adding support for joint limit constraint for btMultiBody. 
The implementation is still experimental/untested, the quality will improve in upcoming Bullet releases.
2013-10-01 22:50:31 +00:00
erwin.coumans
e94a2137b0 minor update manual
fix vehicle demo (heightfield is broken, when using very large scaling factor)
add btConeShape serialization, see Issue 725
add btGearConstraint get/set, see Issue 685 and Issue 671
2013-09-13 16:34:39 +00:00
erwin.coumans
8f4f99809e use btScalar instead of float for btTriangleMesh
thanks to nsarkozi. This fixes issue 704
2013-09-12 22:22:15 +00:00
erwin.coumans
fa2276f1ca add option for slightly more accurate, and slightly slower algorithm for ray versus convex, used in btCollisionWorld::rayTest.
rayResult.m_flags |= btTriangleRaycastCallback::kF_UseGjkConvexRaytest;
See Demos/RaytestDemo/RaytestDemo.cpp for usage
This fixes issue 146, longest outstanding from 2008.
2013-09-12 20:25:06 +00:00
erwin.coumans
e792f0e549 Add faster processing of btCompoundShape versus btCompoundShape, using a dedicated btCompoundCompoundCollisionAlgorithm,
with hash pair caching and tandem tree traversal. It should be much faster, when using many child shapes for both compounds.
Fix iOS compilation, added header.
2013-09-12 19:28:39 +00:00
erwin.coumans
bb379bd84c fix one of the btCompoundShape scaling issues, this fix breaks the API (need to add warning at the next release)
fixes https://code.google.com/p/bullet/issues/detail?id=374 and
https://code.google.com/p/bullet/issues/detail?id=444
2013-09-10 23:34:23 +00:00
erwin.coumans
7195b54d13 Fix Issue 712, related to NVIDIA CUDA check in CMakeLists.txt
Enable btGImpact raycast optimization, thanks to C0DEFACE, see Issue 664
Cull triangle/AABB for concave/heightfield shapes, thanks to Danny Chapman
fix btGetCpuCapabilities, thanks to Ian Ollman! See https://code.google.com/p/bullet/issues/detail?id=738
2013-09-10 23:09:24 +00:00
erwin.coumans
6b3828d74b removed the early out, it was not general 2013-09-10 19:52:58 +00:00
erwin.coumans@gmail.com
2bb26cbb7d Enable btHeightfieldShape in VehicleDemo, so it is tested (using heightfield128x128)
(converted raw data to .cpp so it doesn't need to be loaded from disk)
Some optimizations for btHeightfieldShape, thanks to Danny Chapman
 Quick check on AABB (was not done) and reduce calls to 'getVertex'
2013-09-10 00:57:00 +00:00
erwin.coumans@gmail.com
4ed87140fc add an update revision, to make it easier to sync with Bullet 3.x
add set/getUserindex in addition to set/getUserPointer
2013-06-19 01:00:42 +00:00
erwin.coumans@gmail.com
542c53fb30 Don't pass along unused btStackAlloc everywhere. The API change might user code (derived classes with the old virtual method are not called anymore) 2013-05-08 22:45:35 +00:00
erwin.coumans
33688fc011 removed name from source code 2013-04-02 18:33:00 +00:00
erwin.coumans@gmail.com
e8c2475c95 Added a gCompoundChildShapePairCallback to filter (enable/disable) child shape collisions for a btCompoundShape.
Thanks to Rich McDaniel for the patch.
See MyCompoundChildShapeCallback in Demos/ConvexDecompositionDemo/ConvexDecompositionDemo.cpp for usage.
2013-04-02 02:01:43 +00:00
erwin.coumans@gmail.com
1f4f8c7e05 Workaround for sticky convex collisions when using GJK/EPA in combination with very small collision margins.
In some degenerate cases the contact normal is pointing the wrong direction
so fix it now (until we can deal with all degenerate cases in GJK and EPA)
contact normals need to point from B to A in all cases, so we can simply check if the contact normal really points from B to A
We like to use a dot product of the normal against the difference of the centroids, 
once the centroid is available in the API
until then we use the center of the aabb to approximate the centroid
2013-04-02 00:32:18 +00:00
erwin.coumans
976cd0028a Add a missing header file btCollisionObjectWrapper.h
Thanks to  Alexander Meissner

Fixes Issue 684
2013-01-03 18:51:20 +00:00
erwin.coumans
02a22f6329 Avoid using SSE in API when BT_USE_SSE_IN_API is not defined
Fixes Issue 683.
2012-12-20 22:09:59 +00:00
erwin.coumans
c4548ec746 Add a helper method that creates a btCompoundShape from a btGimpactMeshShape, for more robust collision detection.
The idea is to create tetrahedra from each surface triangle, by moving its centroid inwards along the collision normal using depth.
If the centroid hits an internal triangle, it will stop there.

The commit also includes part of the gimpact raycast performance improvement, except for the actual btCollisionWorld part
(that file was out-of-date and needs manual patching)
2012-12-14 23:14:09 +00:00
erwin.coumans
27fd8ea0d7 make it more obvious that btBvhTriangleMeshShape cannot be used for moving objects. 2012-12-14 20:31:03 +00:00