Simple game engine with complete export to scripting language
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

358 lines
17 KiB

  1. Bullet Continuous Collision Detection and Physics Library
  2. Primary author and maintainer: Erwin Coumans
  3. 2007 Aug 15
  4. - fixed bug in Extras/GIMPACT 0.2 related to moving triangle meshes
  5. Thanks Thomas,
  6. 2007 Aug 14
  7. - added parallel constraint solver. Works on Playstation 3 Cell SPU and multi core (Win Threads on PC and XBox 360).
  8. See Extras/BulletMultiThreaded for SpuSolverTask subfolder and SpuParallelSolver.cpp
  9. Thanks Marten Svanfeldt (Starbreeze Studios)
  10. - fixed some bugs related to parallel collision detection (Extras/BulletMultiThreaded)
  11. Thanks Marten Svanfeldt (Starbreeze Studios)
  12. 2007 Aug 2
  13. - added compound and concave-convex (swapped) case for BulletMultiThreaded collision detection, thanks to Marten Svanfeldt
  14. - refactored broadphase and overlapping pair cache. This allows performance improvement by combining multiple broadphases. This helps add/remove of large batches of objects and large worlds. See also Pierre Terdiman forum topic:
  16. 2007 July 27
  17. - added Ragdoll Demo
  18. Thanks to Marten Svanfeldt (Starbreeze Studios)
  19. - added Vector Math library for SIMD 3D graphics linear algebra (vector, matrix, quaternion)
  20. See Bullet/Extras/vectormathlibrary
  21. Supports SIMD SSE, PowerPC PPU and Cell SPU (including PS3 Linux and CellBlade), as well as generic portable scalar version
  22. Will be used to improve BulletMultiThreaded performance
  23. Open Sourced by Sony Computer Entertainment Inc. under the new BSD license
  24. - added SIMD math library
  25. 4-way SIMD for common math functions like atan2f4, cosf4, floorf4, fabsf4, rsqrtf4 etc. Used by Vector Math library under PPU and SPU.
  26. Supports PowerPC (PPU) and Cell SPU, including PS3 Linux and CellBlade.
  27. See Bullet/Extras/simdmathlibrary
  28. Open sourced by Sony Computer Entertainment Inc. under the new BSD license
  29. 2007 July 25
  30. - added several patches: per-rigidbody sleeping threshold. added Assert to prevent deletion of rigidbody while constraints are still pointing at it
  31. Thanks to Marten Svanfeldt (Starbreeze Studios)
  32. 2007 July 13
  33. - fixed relative #include paths again. We can't use "../" relative paths: some compilers choke on it (it causes extreme long paths)
  34. Within the libraries, we always need to start with "BulletCollision/" or "BulletDynamics/ or "LinearMath/"
  35. 2007 July 10
  36. - Updated Bullet User Manual
  37. 2007 July 5
  38. - added btConeTwistConstraint, especially useful for ragdolls. See Demos/RagdollDemo
  39. Thanks to Marten Svanfeldt (Starbreeze Studios)
  40. 2007 June 29
  41. - btHeightfieldTerrainShape: Added heightfield support, with customizations
  42. - Upgraded to GIMPACT 0.2, see Extras/GIMPACT and MovingConcaveDemo
  43. - Several patches from Marten Svanfeldt (Starbreeze Studios)
  44. Improved collision filtering (in broadphase and rigidbody)
  45. Improved debug rendering
  46. Allow to set collision filter group/mask in addRigidBody
  47. 2007 June 15
  48. - Changed btAlignedObjectArray to call copy constructor/replacement new for duplication, rather then assignment operator (operator=).
  49. 2007 June 11
  50. - Added multi-threading. Originally for Playstation 3 Cell SPU, but the same code can run using Win32 Threads using fake DMA transfers (memcpy)
  51. Libspe2 support for Cell Blade / PS3 Linux is upcoming
  52. See Extras/BulletMultiThreaded. Usage: replace btCollisionDispatcher by btSpuGatheringCollisionDispatcher
  53. - Added managed Bullet library, entirely rewritten in C# for Windows and XBox 360 XNA
  54. See Extras/BulletX
  55. Thanks to KleMiX, aka Vsevolod Klementjev
  56. 2007 May 31
  57. - sign-bit went wrong in case of 32-bit broadphase, causing quantization problems.
  58. Thanks DevO for reporting.
  59. 2007 May 23
  60. - Fixed quantization problem for planar triangle meshes in btOptimizedBvh
  61. Thanks Phil Knight for reporting and helping to fix this bug.
  62. 2007 May 20
  63. - btAxisSweep3: Fixed a bug in btAxisSweep3 (sweep and prune) related to object removal. Only showed up when at least one btStaticPlaneShape was inserted.
  64. Thanks tbp for more details on reproducing case.
  65. - btAxisSweep3: Fixed issue with full 32bit precision btAxisSweep3 (define BP_USE_FIXEDPOINT_INT_32), it used only 0xffff/65536 for quantization instead of full integer space (0xffffffff)
  66. - btRaycastVehicle: Added 'getForwardVector' and getCurrentSpeedKmHour utility functions
  67. - Fixed local scaling issues (btConvexTriangleMeshShape, btBvhTriangleMeshShape, removed scaling from btMatrix3x3).
  68. Thanks Volker for reporting!
  69. - Added second filename search, so that starting BspDemo and ConvexDecompositionDemo from within Visual Studio (without setting the starting path) still works
  70. 2007 April 22
  71. - Added braking functionality to btRaycastVehicle
  72. - Removed tons of warnings, under MSVC 2005 compilation in -W4
  73. 2007 March 21
  74. - Fixed issues: comma at end of enum causes errors for some compilers
  75. - Fixed initialization bug in LocalRayResult ( m_localShapeInfo(localShapeInfo) )
  76. 2007 March 20
  77. - Added refit tree to quantized stackless tree, and updated ConcaveDemo as example.
  78. 2007 March 17
  79. - Added constraint solver optimizations, avoiding cross products during iterations, and gather rigidbody/constraint info in contiguous memory (btSolverBody/btSolverConstraint)
  80. - These optimizations don't give large benefit yet, but it has good potential. Turned on by default. Can be switched off using solver->setSolverMode(SOLVER_RANDMIZE_ORDER).
  81. - Enabled anti-jitter for rigid bodies. This is experimental, and can be switched off by setting a global (it is experimental so no proper interface) gJitterVelocityDampingFactor = 1.0;
  82. - Fixed bug in islandmanifold.heapSort(btPersistentManifoldSortPredicate()); , thanks Noehrgel for reporting this (affected Sun Solaris)
  83. 2007 March 12
  84. - Added compile-time toggle between on 16-bit and 32-bit fixed-point SAP broadphase.
  85. This allows the number of bodies to exceed 32767
  86. - Enable useQuantizedAabbCompression on btTriangleMesh, see ColladaDemo
  87. 2007 March 8
  88. - Fixed bug in constraint/island sorting (caused by replacing STL by dedicated btAlignedObjectArray with heapSort)
  89. Thanks Clemens Unterkofler for pointing this out!
  90. 2007 March 6
  91. - removed STL from the Bullet library: replace std::vector by btAlignedObjectArray. Also removed the std::set for overlapping pair set, and turned it into an overlapping pair array. The SAP only adds objects, never removed. Removal is postponed for during traversal of overlapping pairs (duplicates and non-overlapping pairs are removed during that traversal).
  92. - added heap sort and binary search/linear search to btAlignedObjectArray
  93. - fixed wrong cast, thanks Hamstray,
  94. 2007 Feb 25
  95. - Improved performance of convex collision shapes, cache local AABB instead of recomputation. This fixes issue with very slow performance in larger .bsp levels
  96. 2007 Feb 24
  97. - Added compressed/quantized AABB tree, 16 bytes per node, while supporting 32-bit (triangle) indices.
  98. Should be faster and smaller then original version (quantized aabb check is done in integer space)
  99. Original aabb tree nodes are still supported. They are 44 bytes, with full floating point precision and additional subPart index.
  100. - added meter-unit scaling support in ColladaConverter.cpp
  101. 2007 Feb 21
  102. - Build system: updated library names
  103. - Updated EPA comparison integration (missing parameter)
  104. 2007 Jan 04
  105. - fixed optimized AABB tree building: in some cases the tree building fails due to unbalanced trees, which generated stack overflow
  106. 2006 Dec 15
  107. - added contribution to allow double precision collision detection/dynamics. Define BT_USE_DOUBLE_PRECISION in your project and libraries that include Bullet
  108. 2006 Dec 14
  109. - merged contact and non-contact constraint solving into one loop, will improve stability of jointed bodies during collisions
  110. - added first draft for hingeConstraint motor
  111. 2006 Dec 8, Erwin Coumans
  112. - preparation for SIMD: added btAlignedAllocator and btAlignedObjectArray, to replace stl std::vector, same interface, but compatible with 16 byte alignment
  113. - cleaned up dependencies in autogenerated msvc projectfiles
  114. - aligned btVector3 on 16 bytes boundary, under win32. see if developers will come up with problems
  115. 2006 Dec 04, Erwin Coumans
  116. Added btNearCallback. This is similar to Open Dynamics Engine (ODE) dNearCallback, but important differences:
  117. - contact points are persistent (lifetime more then one frame, for warmstarting/incremental contact point management)
  118. - continuous collision detection, time of impact
  119. Added btRigidBody::isInWorld(), returns true if btRigidBody is inside a btCollisionWorld/btDynamicsWorld derived class
  120. Added angularFactor to btRigidbody, this helps some character control (no angular impulse applied)
  121. 2006 Nov 28
  122. Moved StackAlloc from EPA into LinearMath/btStackAlloc
  123. renamed internal class ConcaveShape into btConcaveShape
  124. added btHeightfieldTerrainShape (not completed yet)
  125. 2006 Nov 15 Nathanael Presson
  126. Added EPA penetration depth algorithm, Expanding Polytope Algorithm
  127. Added Pierre Terdiman penetration depth comparison/test DEMO
  128. Fixed Bullet's Minkowski sampling penetration depth solver
  129. Contributed by Nathanael Presson
  130. 2006 Nov 11 Francisco León Nájera
  131. Added GIMPACT trimesh collision detection: concave versus concave,
  132. Contributed by Francisco León Nájera
  133. 2006 Nov 2
  134. Minor refactoring: btCollisionObject changes from struct into class, added accessor methods
  135. Force use of btMotionState to synchronize graphics transform, disabled old btRigidBody constructor that accepts btTransform
  136. Renamed treshold into threshold throughout the code
  137. 2006 Oct 30
  138. Enable decoupling of physics and graphics framerate using interpolation and internal fixed timestep, based on btMotionState
  139. Enabled raycast vehicle demo (still needs tuning)
  140. Refresh contact points, even when they are already persistent.
  141. Fixed debugDraw colors (thanks pc0de for reporting)
  142. Use Dispatcher in ConcaveConvexCollisionAlgorithm (so it uses the registered collision algorithm, not hardcoded convexconcave)
  143. Improved performance of constraint solver by precalculating the cross product/impulse arm
  144. Added collision comparison code: ODE box-box, also sphere-triangle
  145. Added safety check into GJK, and an assert for AABB's that are very large
  146. Fixed kinematic support (deriving velocities for animated objects)
  147. Updated comparison/optional quickstep solver in Extras
  148. UserCollisionAlgorithm demonstrates btTriangleMesh usage (easier trimesh compared to index array version)
  149. Removed scaling from btTransform (we only want to deal with rigid transforms)
  150. 2006 Oct 4
  151. Fixed minor leak in btOptimizeBVH
  152. Cleanup of btRigidBody construction
  153. added getW() in btQuaternion
  154. assert when setLinearVelocity is called on btRigidBody
  155. renamed projectfile library from collada-dom to colladadom (to make VC6 happy)
  156. 2006 Sept 27
  157. Big Refactoring: renamed and moved files, create a replacement for CcdPhysicsEnvironment/CcdPhysicsController.
  158. All Bullet classes in LinearMath, BulletCollision and BulletDynamics start with bt, and methods start with lowercase.
  159. Moved classes into src folder, which is the only include folder needed.
  160. Added 2 headerfiles in src: btBulletCollisionCommon.h and btBulletDynamicsCommon.h
  161. 2006 Sept 23
  162. Fixed 2 bugs, causing crashes when removing objects. Should do better unit-testing. UnionFind and 3D SAP were involved.
  163. 2006 Sept 19
  164. Allow programmable friction and contact solver model. User can register their own functions for several interaction types.
  165. Improved performance, and removed hardcoded maximum overlaps (switched from C-array to stl::set)
  166. 2006 Sept 16
  167. Added Bullet 2.0 User Manual
  168. Allow registration of custom user collision algorithms
  169. 2006 Sept 10
  170. Started cleaning up demos
  171. 2006 Sept 4
  172. Fixed concave collision bug (caused instability/missing collisions in meshes/compounds)
  173. Fixed memoryleak in OptimizedBvh, added RayTestSingle to CollisionWorld
  174. Prepared for VehicleDemo
  175. Increased Performance (island generation for sleeping objects took too much time)
  176. Better COLLADA 1.4.1 physics conformance in ColladaDemo
  177. 2006 August 11
  178. Added Quake BspDemo
  179. Improved CCD for compound and non-convex objects
  180. 2006 August 10
  181. Added per-triangle material (friction/restitution) support for non-convex meshes. See ConcaveDemo for usage.
  182. 2006 August 9
  183. Added CMake support (see
  184. This can autogenerate makefiles, projectfiles cross platform (including MacOS X Xcode )
  185. Just run cmake . in the root folder and it will autogenerate build files
  186. 2006 July 26 Erwin Coumans
  187. Upgraded to COLLADA-DOM 1.4.1, latest SVN version
  188. ColladaDemo can export snapshots to .dae
  189. 2006 July 24 Erwin Coumans
  190. Added Compound CollisionShape support
  191. (this is still low performance -> requires stackless tree-versus-tree traversal for better performance)
  192. 2006 July 15 Erwin Coumans
  193. Added initial support for Parallel execution (collision detection, constraint solving)
  194. See ParallelPhysicsEnvironment in Extras\PhysicsInterface\CcdPhysics
  195. 2006 July 10 Erwin Coumans
  196. Added MacOS X support (some build issues mainly)
  197. 2006 July 5 Erwin Coumans
  198. Improved COLLADA 1.4 physics import, both COLLADA-DOM and FCollada
  199. 2006 June 29 Erwin Coumans
  200. Refactoring of the broadphase
  201. Moved some optional files to Extras: Algebraic ccd and EPA, quickstep
  202. Moved the limits on bodies/overlap to 32k and 65k
  203. 2006 June 25 Erwin Coumans
  204. Added basic Collision Filtering, during broadphase
  205. Allow adding meshes to the TriangleIndexVertexArray,
  206. (input for TriangleMeshShape)
  207. Preparation for CompoundShape
  208. 2006 June 19 Erwin Coumans
  209. Added support for COLLADA Physics Import.
  210. Both jam and Visual Studio can compile ColladaDemo
  211. 2006 June 18 Dirk Gregorius <>
  212. Started implementing Generic6DOF joint and setup basic interface
  213. 2006 June 17 Frank Richter <>
  214. Bumped version in to 1.5.6 (assuming that "1.5f" is
  215. the next version released).
  216. Updated files in mk/autoconf and mk/jam with copies from CS; fixes a
  217. GLU detection issue on MinGW.
  218. Set msvc/bullet_ico.ico as the default application icon.
  219. Disabled exceptions for gcc builds.
  220. Applied a patch from Michael D. Adams to fix a warning with gcc.
  221. 2006 jUNE 16 Erwin Coumans
  222. Constraints now merge simulation islands.
  223. 2006 May 24
  224. Improved GJK accuracy, fixed GjkConvexCast issue, thanks to ~MyXa~ for reporting
  225. 2006 May 19
  226. Added restitution support
  227. Moved out Friction and Dynamics info from ManifoldPoint (removed logical dependency)
  228. Added a void* m_userPersistentData in ManifoldPoint.
  229. Added a ContactDestroyedCallback, to allow user to handle destruction of m_userPersistentData
  230. 2006 May 13
  231. Fixed some bugs in friction / jacobian calculations. Reported by Dirk Gregorius. Thanks!
  232. 2006 May 9
  233. Fixed raycasting filtering
  234. Moved repository to SVN at
  235. 2006 April 27
  236. Moved raycasting to CollisionWorld, to make it more generic
  237. Added basic CCD option in the CcdCollisionDemo
  238. Fixed 'noResponse' mode, for triggering rigidbodies (useful for Artificial Intelligence queries)
  239. Improved Bullet/ODE sample (in Extras)
  240. 2006 April 10
  241. Separating Axis Test (SAT) convex hull collision detector, contribution by Simon Hobbs
  242. Added SIMD SSE Math classes (for above SAT)
  243. Added Mouse picking in CcdPhysicsDemo
  244. Improved penetration depth estimation in MinkowskiPenetrationDepthSolver, both accuracy and performance
  245. Added Hinge constraint
  246. Added quickprof profiling (see )
  247. 2006 March 21 Frank Richter <>
  248. Removed VC manifest files.
  249. Removed superfluous "grpplugins" projects.
  250. 2006 March 20 Erwin Coumans
  251. Clamped the acculumated impulse rather then intermediate impulse (within the iteration)
  252. Use the persistent contacts for reusing the impulse
  253. Separated friction and normal solving for better stability
  254. Decreased the default number of iterations of the constraint solver from 10 to 4
  255. 2006 March 19 Frank Richter <>
  256. Removed a couple of CSisms from the VC projects.
  257. Fixed VC include & lib paths to go to the Addtional* options
  258. instead the command line arguments.
  259. Added pkgconfig support.
  260. 2006 March 14 Frank Richter <>
  261. Added support for shipped GLUT on MinGW.
  262. Fixed GLUT support on MinGW.
  263. 2006 March 13 Frank Richter <>
  264. Bolted on Jam-based build system.
  265. Generated VC project files.
  266. Fixed GCC warnings.
  267. Fixed Linux build issues.
  268. 2006 March 13
  269. Added 3D Sweep and Prune Broadphase Collision Detection, Contribution from Simon Hobbs.
  270. 2006 March 2
  271. Minor change in license to ZLib/LibPNG
  272. This makes it legally a bit easier to deploy on Playstation 3
  273. Prepared for more generic constraints, added ConstraintsDemo
  274. 2006 Feb 23
  275. Rearranged files and dependencies to allow for easier standalone Collision Detection without Bullet Dynamics.
  276. See Demos/CollisionInterfaceDemo and Extras/ode/ode/test/test_BulletGjk.cpp for examples how to use.
  277. ... todo: add history
  278. 2003 Initial version (continuous collision detection)