Commit Graph

313 Commits

Author SHA1 Message Date
erwin coumans
6c9bfce975 Support btMultiBody soft contact using ERP and CFM. Also support custom relaxation parameter to allow successive over relaxation.
Added demos for rigid and multi body soft (compliant) contact.
Will also add simplified Hertz compliant contact, by dynamically modifying the ERP/CFM to mimic a non-linear spring.
Note that btManifoldPoint is growing too big, we need to implement proper contact constraints derived from btTypedConstraint.
2016-02-22 18:40:00 -08:00
erwin coumans
645a88176d Enable softness for btRigidBody contacts. This is implemented by some value (CFM, constraint force mixing) to the main diagonal of A.
CFM for contacts use world CFM value by default, and can override with custom CFM value using the
BT_CONTACT_FLAG_HAS_CONTACT_CFM stored in m_contactPointFlags.
Boolean m_lateralFrictionInitialized is replaced 'BT_CONTACT_FLAG_LATERAL_FRICTION_INITIALIZED' flag stored in int m_contactPointFlags in btManifoldPoint.
Enable successive over-relaxation parameter (SOR) for contacts. btMLCPSolver uses global CFM.
In one of the next commits, contact softness will be enabled btMultiBody contacts.
Also need to review use of CFM in btMLCPSolvers (only world CFM is used at the moment)
2016-01-22 17:43:36 -08:00
Erwin Coumans
5da9e37a05 add BT_DECLARE_ALIGNED_ALLOCATOR() for btTypedConstraint 2015-11-26 12:43:10 -08:00
erwincoumans
5ded2d3ee4 Merge pull request #398 from MakoEnergy/master
Constraint Accessibility.
2015-10-27 12:01:11 -07:00
Cameron White
86880a2795 Only use the max motor impulse if it is positive (it defaults to -1). 2015-08-27 16:03:02 -04:00
Cameron White
29b251e81b Use the max motor impulse if the motor is enabled. 2015-08-04 10:54:34 -04:00
MakoEnergy
b94533d059 Added a method to retrieve the parameter flags to the btSliderConstraint. 2015-05-29 00:15:12 -05:00
MakoEnergy
2f96d050ee Added a method to retrieve the parameter flags to the btPoint2PointConstraint. 2015-05-27 21:00:30 -05:00
MakoEnergy
e48e14889c Created a few getters and setters for the btHingeConstraint. 2015-05-27 16:00:30 -05:00
MakoEnergy
ec84ce3304 Added 4 fetch methods to the 6DoF spring constraint. 2015-05-22 16:26:18 -05:00
Gabor Puhr
98e1334a64 Auto limitation of spring stiffness and damping in btGeneric6DofSpring2Constraint is now optional.
Fix: spring stiffness limitation used the mass incorrectly in btGeneric6DofSpring2Constraint.
2015-05-22 12:58:28 +02:00
MakoEnergy
26c533f02c Added 3 fetch methods and made other methods Const. 2015-05-17 16:48:53 -05:00
MakoEnergy
3bf26c8bbe Final set of fetch methods, for secondary data for the limits. 2015-05-15 16:12:31 -05:00
MakoEnergy
c30a3baad0 Added a method to retrieve the parameter flags to the btConeTwistConstraint. 2015-05-09 04:32:20 -05:00
MakoEnergy
150d0dfc02 Fixed a couple errors with my last commit.
Fixed an error where I placed the wrong brackets and fixed a styling error where I had capitalized the first letter of a function name.
2015-05-08 00:22:09 -05:00
MakoEnergy
b53106319f Created a bunch of "get" methods for the btConeTwistConstraint. 2015-05-07 23:41:19 -05:00
Erwin Coumans
59b511a14e add .bullet extension in File/Open on Mac
add importer support for FIXED_CONSTRAINT_TYPE, to be replaced by btGeneric6DofSpring2Constraint
btFixedConstraint now derives from btGeneric6DofSpring2Constraint
2015-05-03 09:23:35 -07:00
erwin coumans
a165ff54c9 fix maxLinMotorForce/maxAngMotorForce in btSliderConstraint
Thanks to Stephen Peters, see also https://github.com/bulletphysics/bullet3/pull/328
2015-04-29 11:05:00 -07:00
Erwin Coumans (Google)
84f2d5b9a0 Merge remote-tracking branch 'bp/master' 2015-04-28 20:57:41 -07:00
erwin coumans
f4b0cc85cd add Vehicles/Hinge2Vehicle demo, based on the ForkLift demo, using btHinge2Constraint with rigid body wheels
change btHinge2Constraint to derive from new btGeneric6DofSpring2Constraint
2015-04-28 18:12:49 -07:00
erwincoumans
e884511924 Merge pull request #353 from cameronwhite/fix-conetwist-nans
Fix a potential division by zero for cone twist constraints.
2015-04-22 11:44:29 -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
Cameron White
445dc667b3 Avoid a potential division by zero. 2015-04-06 16:56:13 -04:00
erwin coumans
cba140431e prepare to add ForkLiftDemo in App_AllBullet2Demos
rename Ewert/Catto to World/Body for implicit coriolis forces
2015-03-27 11:59:22 -07:00
Erwin Coumans
9931dd9684 remove Cooper implicit (it was just for comparison, it is buggy)
add btMatrix3x3::solve33, thanks to Erin Catto, and added safety against division by zero
2015-03-25 19:33:02 -07:00
Erwin Coumans
0a04a745dd added Erin Catto's 'local' implicit coriolis/gyroscopic force, next to 'Ewert', Cooper, explicit and none
Configured the gyroscopic demo to show the Dzhanibekov effect
see also https://www.youtube.com/watch?v=L2o9eBl_Gzw
2015-03-24 23:16:45 -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
20a270bc94 more URDF2Bullet refactor to make URDF import a little bit more re-usable 2015-03-20 13:07:25 -07:00
erwin coumans
1baf2e5cc6 add support to btHingeConstraint to set/get ERP, example use:
hinge->setParam(BT_CONSTRAINT_ERP,0.5);
btScalar erp = hinge->getParam(BT_CONSTRAINT_ERP);
Also, preliminary support for status bar messages in demo framework.
2014-10-17 13:05:53 -07:00
Erwin Coumans
af5883c6e8 remove a lot of warnings (more todo in demos and serialization code) 2014-08-22 10:29:05 -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
Erwin Coumans
1d00d91707 add btHingeAccumulatedAngleConstraint derived from btHingeConstraint,
that exposes a new method getAccumulatedHingeAngle
See also https://github.com/bulletphysics/bullet3/issues/42
2014-07-30 16:13:34 -07:00
Erwin Coumans
791b5149f6 prepare to re-enable Gwen user interface (OpenGL_DebugFont) for OpenGL2.x
prepare to add improved btGeneric6DofSpringConstraint
2014-06-30 12:09:59 -07:00
Erwin Coumans
e279aed08f re-enable the fix for broken friction in Clang (got accidently undone in a recent commit)
fix OSX build
2014-05-03 10:11:49 -07:00
erwincoumans
0e1a77047c fix Linux build 2014-05-03 02:50:09 -07:00
Erwin Coumans
66ab2a2022 fix OSX build 2014-05-03 08:48:46 -07:00
erwincoumans
0b6d1af1d4 Only enable SSE4 for Visual Studio 2012 or later (_MSC_FULL_VER >= 170050727), it breaks the build for Visual Studio 2010
Add additional constructor for btMultiBodyJointMotor
2014-05-01 22:23:37 -07:00
Erwin Coumans
0e1b90d708 Added SSE4/FMA optimized constraint row solver implementation for btSequentialImpulseConstraintSolver,
thanks to Vladimir Bondarev (https://github.com/VladimirBondarev/bullet3/tree/c25d)
2014-05-01 17:13:50 -07:00
Erwin Coumans
907ac49892 work-around what appears to be a bug in Clang 3.4. Todo: create a small repro case for Clang/LLVM or see if they already fixed it. 2014-04-29 11:44:52 -07:00
erwincoumans
51036713f0 Initialize 64bit user pointer, thanks to AndresTraks
See https://github.com/erwincoumans/bullet3/issues/33
2014-01-29 05:47:45 -08:00
erwin.coumans@gmail.com
d48e2c717c fix rotation correction in btFixedConstraint, see Issue 769 2013-12-04 19:06:28 +00:00
erwin.coumans@gmail.com
439ab03940 fix Mac OSX build (there is no such member called e.m128_f32[0] 2013-11-03 19:55:08 +00:00
erwin.coumans@gmail.com
644d01d231 added the btNNCGConstraintSolver, based on the paper "Nonsmooth Nonlinear Conjugate Gradient Method for interactive
contact force problems". The solver needs a lot of iterations, before the quality goes up (~ 1000)
Thanks to Gabor PUHR for the contribution!
Improved the btLemkeSolver.
Remove the sparse optimizations from the btMatrixX.h, replace it with explicit call to rowComputeNonZeroElements (only used in the btSolveProjectedGaussSeidel), it was likely slowing things down, without being useful.
Re-enable SIMD in the solver (was accidently disabled in Bullet 2.82 release)
2013-10-31 06:17:08 +00:00
erwin.coumans
1a2c3c0ee9 Added a Lemke MLCP solver, extracted from the MBSim project, and re-licensed under the zlib license
with permission of the original author. 
The Lemke implementation is not fully working yet:
1) we need to convert the lo-high LCP problem into a problem without the lo/high
2) we need to sort out the remaining instabilities, and report a failure if the max loopcount is reached etc.
We replaced the fmatvec library with our own LinearMath/btMatrixX.h, and STL std::vector with btAlignedObjectArray

Removed some warnings/potential issues: use fuzzyZero instead of isZero, and some warnings, 
related to this issue 756
2013-10-26 18:45:25 +00:00
erwin.coumans@gmail.com
a1c962192c Allow the ForkLiftDemo to toggle between MLCP and SI solver, using F6 key.
Apply patch for CMake config, see Issue 754 (Issue 753)
Fix a few issue with the MLCP solver: allow split impulse, and fix offset in friction dependencies
2013-10-23 23:35:13 +00:00
erwin.coumans@gmail.com
23f612bbb5 fix Linux build
by default, only enable 64bit build when using ./premake4_linux64 and only 32bit build when using ./premake4_linux
remove some warning
2013-10-22 18:10:45 +00:00
erwin.coumans@gmail.com
a21480c8ca Attempt to fix "Regression in friction and damping behaviour" , see issue 752
Thanks to Sergej Reich for the report and narrowing down the breaking revision!
2013-10-22 09:26:08 +00:00
erwin.coumans@gmail.com
1ca0493dc4 Build full A matrix and b vector for a MLCP solver interface, to explore Lemke, Dantzig, Newton and other MLCP solvers. The A matrix contains sparsity information.
Added a PGS solver that uses the sparsity of the A matrix, just for testing (the equivalent sequential impulse solver is much faster, not having to allocate the big matrices)
2013-10-20 17:38:14 +00:00
erwin.coumans@gmail.com
88b8ae552b add a btFixedConstraint with toggle between btGeneric6DofConsraint and btFixedConstraint in VoronoiFractureDemo 2013-10-02 21:50:50 +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