Commit Graph

718 Commits

Author SHA1 Message Date
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
erwin.coumans
7c610ec045 use unsigned int indices in btGImpactMeshShape
See Issue 663
2012-12-07 19:20:06 +00:00
erwin.coumans
9eddd42347 fix win32 (non-glut) cmake build.
add partId/index to btCollisionObjectWrapper to be able to recognize recursive shape indices (a btCompoundShape with a btGimpactShape child shape etc)
2012-11-10 01:42:35 +00:00
erwin.coumans
ff38230704 use the right m_bvhAabbMax/m_bvhAabbMin to adjust quantization 2012-10-11 16:36:16 +00:00
erwin.coumans
79989a8d3d Force spuNodeCallback to be 16-byte aligned, so that we can use SIMD. Related to Issue 657
Recompute the quantization values in case the maximum/minimum extends roundtrip using quantize/unQuantize are out-of-range
(alternatively, pass in a larger quantizationMargin)
2012-10-10 04:21:36 +00:00
erwin.coumans
eaabf1a2c8 Expose btManifoldResult::calculateCombinedRestitution and btManifoldResult::calculateCombinedFriction as static member functions, so it can be reused for speculative contacts
Add speculative contact restitution, but disabled by default, not well tested (btDiscreteDynamicsWorld::setApplySpeculativeContactRestitution)
Add --with-double-precision option to premake build system
2012-10-05 21:15:11 +00:00
erwin.coumans
394bb103f0 Fix src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp
See Issue 643, thanks to Laurent at liquiddragon for the patch.
Fix warning, See Issue 655
2012-10-04 20:32:04 +00:00
erwin.coumans
74db95d827 disable sphere-box again, it seems broken
http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?f=9&t=8456

fix some warnings
2012-10-02 02:26:37 +00:00
erwin.coumans
60bf599246 perform GrahamScanConvexHull2D around an arbitrary oriented 2D plane in 3D, to fix some convex hull face merging problems
add compound shape support to BulletXmlWorldImporter and fix some compile issue under Debian (hopefully)
object picking change in the demos: create a ball-socket picking constraint when holding shift while mouse dragging, otherwise a fixed (6dof) constraint
add assert in constraint solver, when both objects have their inertia tensor rows set to zero
btPolyhedralContactClipping: add edge-edge contact point in  findSeparatingAxis (similar to the default GJK case)
2012-09-28 07:14:48 +00:00
erwin.coumans
837e5cb5e0 serialize rolling friction 2012-09-27 16:20:29 +00:00
erwin.coumans
60c1b1918a fix bug for convex-convex polyhedral contact clipping, where the origin of the object is not located inside the convex hull of the vertices. 2012-09-23 18:35:19 +00:00
erwin.coumans
f2c9cdfb11 add m_rollingFriction to serialization structures
add btContactSolverInfo and gravity to serialization structures
(actual serialization code will follow soon)
2012-09-21 23:37:24 +00:00
erwin.coumans
22fb7d5c1e improve rolling friction using anisotropic direction, to avoid resting in an instable position
(for implicit capsule, cylinder and cone shape)
See Bullet/Demos/RollingFrictionDemo for an example
2012-09-16 17:01:25 +00:00
erwin.coumans
7eebb79ced implemented rolling friction, using a contact constraint. Useful to get rolling spheres to rest, even on a slightly sloped plane.
See http://www.youtube.com/watch?v=RV7sBAsKu4M and Bullet/Demos/RollingFrictionDemo
Fixes in FractureDemo (mouse picking constraint needs to be removed, otherwise constraint solver crashes/asserts)
2012-09-15 06:52:17 +00:00
erwin.coumans
c2f9d927c2 fix ray test kF_FilterBackfaces and kF_KeepUnflippedNormal flags
add Demos/RaytestDemo to show/test rayTest
fix premake batch files
2012-09-12 23:19:05 +00:00
erwin.coumans
4eb5240cbe Applied patch for character controller by bjorn.wesen. Fixes Issue 644.
Fixed some warnings in double-precision compile
2012-09-11 04:36:57 +00:00
erwin.coumans
9612561113 add btDiscreteDynamicsWorld::createPredictiveContacts after discrete collision detection and add temporary contact manifolds, for the constraint solver.
This should improve 'ccd' handling when using world->getDispatchInfo().m_useContinuous = true;body->setCcdSquareMotionThreshold(...); body->setCcdSquareMotionThreshold(...)
shoot smaller boxes (test)
use yellow instead of orange for contact point normals
tweak default erp and erp2 values, now split impulse is on by default (need to check it)
2012-09-11 00:56:11 +00:00
erwin.coumans
5417bae113 add zigzag heightfield for Ogre compatibility.
Fixes Issue 625. Thanks to KLLoyd!
2012-09-09 22:48:20 +00:00
erwin.coumans
e2522c6f9b re-enable debug drawing of box, instead of using the generic convex path.
Fixes Issue 622. Thanks for the report!
2012-09-09 22:08:23 +00:00
erwin.coumans
2fb970ce33 disable debug drawing in btCompoundCollisionAlgorithm
Fixes Issue 600.
Thanks to Stuart for the report.
2012-09-09 21:31:02 +00:00
erwin.coumans
7bb4e0e1bd fix ForkLiftDemo update (previous commit)
implement preallocate{Vertices,Indices} in btTriangleMesh. Fixes Issue 647.
2012-09-09 17:59:02 +00:00
erwin.coumans
3b83428a7f Applied polar decomposition patch. Fixes Issue 621. Thanks to Christian for the report, Joshua for the fix, Dongsoo for checking the fix.
Applied picking cloth patch. Fixes Issue 646. Thanks to Dongsoo.
Applied patch Softbody updateConstraints. Fixes Issue 503. Thanks to Dave Bruce Phillips and Dongsoo.
Fix various warnigns under Mac OSX.
2012-09-09 17:22:30 +00:00
erwin.coumans
2700ba17c0 fix memory leak when calling initializePolyhedralFeatures
Fixes Issue 623, thanks for the report/patch!
2012-09-08 19:43:24 +00:00
erwin.coumans
b69c6ac3f5 fix padding in btSolverConstraint, see Issue 650
fix some warnings
2012-09-08 19:21:14 +00:00
erwin.coumans
196aa20329 add m_splitImpulseTurnErp solver setting, initialized to 0.1: more stable recovery from deeper penetrations by reducing the angular effect (if split impulse is enabled)
Set it to 1.0 to disable the effect.
removed broken/not maintained heightfield fluid demo
add some API methods to btPersistentManifold
2012-09-03 04:38:08 +00:00
erwin.coumans
c1138535f9 use btAssert instead of assert
use __debugbreak for Windows MSVC asserts and asm volatile ("int3");\ on Mac OSX (__i386__ / __x86_64__)
2012-09-02 17:54:30 +00:00
erwin.coumans
c28f413e50 remove obsolete IBM Cell SDK makefiles 2012-09-02 17:38:51 +00:00
erwin.coumans
84b1774dda improve handling of restitution by using the velocity (linear/angular) before applying forces: this is done by re-introducing the btSolverBody and only apply the forces to solver body, and use the original rigid body velocity for restitution computation.
warmstarting for contact points was broken, fix in btPersistentManifold
enable split impulse by default (at the cost of some performance)
add  the option for zero-length friction (instead of recomputing friction directions using btPlaneSpace), use the solver mode flag SOLVER_ALLOW_ZERO_LENGTH_FRICTION_DIRECTIONS
precompute lateral friction directions (in btManifoldResult)
remove the mConstraintRow[3] from btManifoldPoint, it just took a lot of memory with no benefits: fixed it in btParallelConstraintSolver
2012-08-31 19:46:24 +00:00
erwin.coumans
37ebcc3aa6 fix and re-enable sphere-box collision algorithm, Issue 643
Thanks to Laurent for the fix and Thomas for adapting the fix to latest trunk revision!
2012-07-31 17:17:51 +00:00
erwin.coumans
73b217fb07 Apple contribution for OSX SSE and iOS NEON optimizations unit tests, thanks to Jordan Hubbard, Ian Ollmann and Hristo Hristov.
For OSX:
cd build
./premake_osx xcode4
for iOS:
cd build
./ios_build.sh
./ios_run.sh

Also integrated the branches/StackAllocation to make it easier to multi-thread collision detection in the near future. It avoids changing the btCollisionObject while performing collision detection.

As this is a large patch, some stuff might be temporarily broken, I'll keep an eye out on issues.
2012-06-07 00:56:30 +00:00
erwin.coumans
da54814d09 Bug fix in EPA implementation, compute closest triangle to the origin using edges/vertices, instead of the projected origin distance.
See Issue 606 for detailed description. Thanks a lot to Jarno for the report and fix!
2012-03-16 18:59:50 +00:00
erwin.coumans
76375afff2 revert quickSort change in commit http://code.google.com/p/bullet/source/detail?r=2527 and fix the underlying sort issue
in VoronoiFractureDemo (store intermediate values in memory to avoid problems)
@todo: rewrite the island management to avoid sort for better performance
Thanks to Peter Kyme for the report, fixes Issue 607
2012-03-14 03:52:29 +00:00
erwin.coumans
52f9f6ed09 convert UTF-8 to ascii (how did the Byte Order Mark/BOM ever get into this file?) 2012-03-12 18:43:11 +00:00