Commit Graph

1261 Commits

Author SHA1 Message Date
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
0c555a5afe just use 16-byte aligned data for solverbody, not 64byte
fixes Issue 659
2012-12-17 21:29:20 +00:00
erwin.coumans
7e14e79da0 Fix Issue 680, compilation error using Visual Studio 2005, service pack 1, quicksort compare function needs to be in a class.
Toggle between GJK and SAT (initializePolyhedralFeatures) in convexDecomposition at easch restart of the demo (spacebar)
2012-12-17 20:38:31 +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
1d4a5d950d Usually m_contactNormal2 == -m_contactNormal1, but not always, so
use a separate contactNormal1/contactNormal2 for each body in btSolverConstraint.

Thanks to Richard McDaniel for the patch.
2012-12-12 23:21:51 +00:00
erwin.coumans
7c610ec045 use unsigned int indices in btGImpactMeshShape
See Issue 663
2012-12-07 19:20:06 +00:00
erwin.coumans
17ca9eb7e7 Fix compile error when defining DEBUG, include memset header
See Issue 678, thanks to Max for the report!
2012-12-07 18:21:14 +00:00
erwin.coumans
d54423f9c0 Fix compile error in Visual Studio 2005 build: only enable SSE/SIMD intrinsics for btVector3 for Visual Studio 2008 and higher 2012-12-07 18:16:04 +00:00
erwin.coumans
f5704d5981 Fix issue with btQuaternion::slerp, thanks to Martin Heistermann.
Fixes Issue 665
2012-11-25 17:19:17 +00:00
erwin.coumans
6964612e8c Remove #end in btScalar.h
Fixes Issue 674
2012-11-24 22:14:13 +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
rponom@gmail.com
f35621eb01 Bug in ConeTwist constraint with tight limits fixed
ConeTwist constructor for one-body constraint modified
2012-11-09 19:22:05 +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
fe3cfe56b6 fix unaligned data issue, see Issue 657 2012-10-10 06:35:32 +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
48e932c8d6 fix build 2012-10-05 22:12:41 +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
6be2689f01 add joint feedback (applied force and applied torque for a constraint) 2012-10-05 05:37:12 +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
cfb609f9d1 tweak CcdPhysicsDemo
remove wrong cp.m_lateralFrictionInitialized = false;
See http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?p=28851#p28851
2012-09-29 01:52:27 +00:00
erwin.coumans
79a792913d Add the option BUILD_MULTITHREADING to CMAKE, only enabled on APPLE and MSVC platforms. This controls multi-core (BulletMultiThreaded), MiniCL, DX11 and OpenCL acceleration.
On other platforms (Linux) it might work, but it is unsupported.
Fix some warnings in btBulletWorldImprter
2012-09-28 19:32:30 +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
182c3034de fixes in btBulletXmlWorldImporter, and add premake4 support for the related demo 2012-09-22 05:27:35 +00:00
erwin.coumans
6f60a388c6 add missing Demos/BulletXmlImportDemo
serialize DynamicsWorldInfo
2012-09-22 02:06:09 +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
214579ec60 Allow btBulletWorldImporter to convert/export a .bullet file to XML
Add first version of btBulletXmlWorldImporter, still incomplete but it can read some files
Fix false assert in btSequentialImpulseConstraintSolver
2012-09-21 22:47:11 +00:00
erwin.coumans
7494463be8 reset the companion Id back to -1, because of a bug related to kinematic objects
Thanks to Francois for the report. See Issue 652
2012-09-20 11:32:27 +00:00
erwin.coumans
5bba00dea4 improve control over rolling friction, use the same m_rollingFriction for both linear factor and absolute clamping value. 2012-09-20 04:18:29 +00:00
erwin.coumans
59a29b1859 fix kinematic objects, see Issue 652
add m_rollingFriction to btRigidBody::btRigidBodyConstructionInfo
2012-09-20 03:32:52 +00:00
erwin.coumans
8be5172df5 fix issue in the recent SSE implementation of setInterpolate3
align class
2012-09-17 16:03:47 +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
54744b6ab9 added gyroscopic force option for btRigidBody, body->setFlags(BT_ENABLE_GYROPSCOPIC_FORCE);
Note that it can easily introduce instability at regular (60Hertz) simulation steps so it is generally best to not use the option.
If needed, use a very small internal step, such as 1000 Hertz (world->stepSimulation(dt,100,1./1000.f); or stepSimulation(1./1000.,0);
2012-09-14 21:39:48 +00:00
erwin.coumans
3e9f35c0fd Add btGearConstraint, with a demo in Bullet/Demos/ConstraintDemo
Thanks to Dimitris Papavasiliou for the idea.
2012-09-13 22:40:39 +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
d99d9779a2 cast to char to avoid C++11 issue
Fixes Issue 716.
2012-09-11 03:58:11 +00:00
erwin.coumans
1b7642f0f5 Prepare for 2.81 release, increase version numbers
Fixed DNA serialization for C++11: avoid negative char values
Fixes 617. (needs to be tested)
2012-09-11 03:49:50 +00:00
erwin.coumans
8c56528a79 Avoid using restitution for ccd motion clamping. Restitution for fast moving objects should be handled by btDiscreteDynamicsWorld::createPredictiveContacts
(make sure to merge islands based on those predictive contacts too, added some check in the solver)
This fixes Issue 356.
Use same solver settings for AllBulletDemos
Make sure to embed the setCcdSweptSphereRadius inside the actual collision shape (for shoot box)
2012-09-11 03:12:32 +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
9cfcabfc4c disable all demos for premake4 iOS build (it only compiles HelloWorld, Benchmark and UnitTest for now)
add btAlignedFree to deleteCriticalSection
2012-09-10 16:02:30 +00:00
erwin.coumans
77b662d5fe fix a few more warnings under Windows
fix linker issue due to unsigned/int variable
2012-09-10 04:46:39 +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