C++17 physics library with Python bindings for kinematics, dynamics and contact simulation of articulated robots and animated characters.
bulletphysics/bullet3
Bullet Physics SDK, a C++ library for real-time collision detection and multi-physics simulation used in games, VR, robotics and machine learning.
- Stars
- 14,842
- Forks
- 3,109
- Open issues
- 439
- Last commit
- 29 days ago
What is it?
Bullet Physics SDK is a C++ library for real-time collision detection and physics simulation. It covers rigid body dynamics and soft body simulation, and it is used in games, VR, visual effects, robotics and machine learning.
The repository includes PyBullet, a Python module built on top of the engine that is widely used for robotics and reinforcement learning research. Demos, an example browser and unit tests are included. The library is designed to build on Windows, Linux, macOS, iOS and Android, and optional demos need OpenGL 2 or 3.
The project also has experimental OpenCL support that runs collision detection and rigid body dynamics on the GPU, requiring a high-end desktop GPU. Bullet is distributed under the zlib license and can be installed via vcpkg, CMake or premake.
Key features
- 01Real-time collision detection and rigid body dynamics
- 02Soft body and multi-physics simulation
- 03PyBullet Python bindings for robotics and reinforcement learning
- 04Experimental OpenCL GPU acceleration for collision and dynamics
- 05Cross-platform builds with CMake, premake and vcpkg
Use cases
- Adding physics and collision handling to games or VR applications
- Simulating robot arms, legs or grippers for robotics research
- Training reinforcement learning agents in physically simulated environments
- Prototyping visual effects that need rigid or soft body dynamics
Quick start
- 1
Install the PyBullet Python package
pip3 install pybullet --upgrade --user - 2
Run a PyBullet example environment
python3 -m pybullet_envs.examples.enjoy_TF_AntBulletEnv_v0_2017may
Things to know
- The issue tracker is closed, so support relies on the PyBullet forums.
- The experimental OpenCL GPU support needs a high-end desktop GPU and does not work on OpenCL CPU devices.
- The Windows VR sandbox requires HTC Vive or Oculus Rift hardware.
In collections
Topics
FAQ
- What is bullet3?
- Bullet Physics SDK, a C++ library for real-time collision detection and multi-physics simulation used in games, VR, robotics and machine learning. Bullet Physics SDK is a C++ library for real-time collision detection and physics simulation. It covers rigid body dynamics and soft body simulation, and it is used in games, VR, visual effects, robotics and machine learning.
- Is bullet3 free to use? What license does it have?
- bullet3 is open source under the Other license. Check the license terms before using it in commercial products.
- Is bullet3 still maintained?
- Actively maintained. The last commit to bullet3 was on Oct 9, 2026.
- What can I use bullet3 for?
- Adding physics and collision handling to games or VR applications Simulating robot arms, legs or grippers for robotics research Training reinforcement learning agents in physically simulated environments Prototyping visual effects that need rigid or soft body dynamics
- How do I install bullet3?
- Install the PyBullet Python package: pip3 install pybullet --upgrade --user Run a PyBullet example environment: python3 -m pybullet_envs.examples.enjoy_TF_AntBulletEnv_v0_2017may
- Where can I get bullet3?
- The source code and installation instructions are on GitHub: https://github.com/bulletphysics/bullet3
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A multi-core friendly C++ rigid body physics and collision detection library for games and VR applications.
Rust-based 2D and 3D physics engines for games, animation, and robotics, with C, Python, JavaScript, and Bevy bindings.
A general-purpose physics engine for fast, accurate simulation of articulated bodies in contact, widely used in robotics and machine learning research.
An Unreal Engine 5 plugin that runs MuJoCo physics inside the editor and runtime, pairing accurate contact dynamics with Unreal's rendering.
An abstract C++ physics interface for robot simulation that lets applications swap between different physics engines through a plugin system.