Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 5 commits ahead, 1 commit behind bulletphysics:master.
Erwin Coumans
Latest commit eb49035 Oct 17, 2018
Failed to load latest commit information.
.ci Run apt-get update before installing python3-pip Jul 10, 2018
Extras First pass of load files through an interface (to allow loading from … Oct 9, 2018
build3 PyBullet OpenGL/EGL hardware getCameraImage: use glViewport to reduce… Sep 30, 2018
data enable planar reflection in MinitaurGymEnv Oct 14, 2018
docs update quickstart guide from https://docs.google.com/document/d/10sXE… Sep 8, 2018
examples fix typo in previous commit Oct 17, 2018
src fix typo in previous commit Oct 7, 2018
test First pass of load files through an interface (to allow loading from … Oct 9, 2018
.gitignore add gif to pybullet data Aug 26, 2017
.travis.yml Add Travis CI settings for Xenial and Bionic Jul 10, 2018
AUTHORS.txt add a few more contributors (the list is far from complete though) Sep 24, 2017
BulletConfig.cmake.in Revert "Export targets in CMake and add include directories to target… Sep 11, 2017
CMakeLists.txt fix cmake, linux only (patch egl) Aug 30, 2018
Doxyfile add Doxyfile May 1, 2015
LICENSE.txt add latex source of Bullet 2.82 quickstart guide, todo: update to cur… Apr 29, 2015
MANIFEST.in add missing file to MANIFEST.in, bump up PyBullet version Oct 17, 2018
README.md remove leading space Aug 24, 2018
UseBullet.cmake fix make install, when using CMake Mar 6, 2014
VERSION Bullet bump up to version 2.88 Nov 23, 2017
_clang-format clang-format pybullet.c Mar 13, 2017
appveyor.yml Update appveyor.yml Sep 11, 2016
build_cmake_pybullet_double.sh enable egl by default for pybullet SimpleOpenGL3App Aug 30, 2018
build_visual_studio_vr_pybullet_double.bat Thanks to @dchichkov for some of the fixes in the eglRendererPlugin! Sep 9, 2018
build_visual_studio_vr_pybullet_double_cmake.bat trigger appveyor/travis tests Sep 11, 2017
build_visual_studio_without_pybullet_vr.bat Created Wavefront obj to sdf converter, to make it easier to import c… Mar 1, 2017
bullet.pc.cmake pkg-config: Fixing regression introduced by e46b7b2 Jun 30, 2016
clang-format-all.sh apply clang-format (on Mac, slightly different than running it on Win… Sep 30, 2018
setup.py bump up PyBullet version to 2.3.2 Oct 17, 2018
xcode.command move some easy-to-use build files for Mac OSX, Linux and Windows May 21, 2016


Travis Build Status Appveyor Build status

Bullet Physics SDK

This is the official C++ source code repository of the Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.

New in Bullet 2.85: pybullet Python bindings, improved support for robotics and VR. Use pip install pybullet and see PyBullet Quickstart Guide.

The Bullet 2 API will stay default and up-to-date while slowly moving to a new API. The steps towards a new API is in a nutshell:

  1. The old Bullet2 demos are being merged into the examples/ExampleBrowser
  2. A new physics-engine agnostic C-API is created, see examples/SharedMemory/PhysicsClientC_API.h
  3. Python bindings in pybullet are on top of this C-API, see examples/pybullet
  4. A Virtual Reality sandbox using openvr for HTC Vive and Oculus Rift is available
  5. The OpenCL examples in the ExampleBrowser can be enabled using --enable_experimental_opencl

You can still use svn or svn externals using the github git repository: use svn co https://github.com/bulletphysics/bullet3/trunk

Requirements for Bullet 2

A C++ compiler for C++ 2003. The library is tested on Windows, Linux, Mac OSX, iOS, Android, but should likely work on any platform with C++ compiler. Some optional demos require OpenGL 2 or OpenGL 3, there are some non-graphical demos and unit tests too.

Contributors and Coding Style information


Requirements for experimental OpenCL GPGPU support

The entire collision detection and rigid body dynamics can be executed on the GPU.

A high-end desktop GPU, such as an AMD Radeon 7970 or NVIDIA GTX 680 or better. We succesfully tested the software under Windows, Linux and Mac OSX. The software currently doesn't work on OpenCL CPU devices. It might run on a laptop GPU but performance will not likely be very good. Note that often an OpenCL drivers fails to compile a kernel. Some unit tests exist to track down the issue, but more work is required to cover all OpenCL kernels.


All source code files are licensed under the permissive zlib license (http://opensource.org/licenses/Zlib) unless marked differently in a particular folder/file.

Build instructions for Bullet using premake. You can also use cmake instead.


Click on build_visual_studio_vr_pybullet_double.bat and open build3/vs2010/0MySolution.sln When asked, convert the projects to a newer version of Visual Studio. If you installed Python in the C:\ root directory, the batch file should find it automatically. Otherwise, edit this batch file to choose where Python include/lib directories are located.

Windows Virtual Reality sandbox for HTC Vive and Oculus Rift

Build and run the App_SharedMemoryPhysics_VR project, preferably in Release/optimized build. You can connect from Python pybullet to the sandbox using:

import pybullet as p
p.connect(p.SHARED_MEMORY) #or (p.TCP, "localhost", 6667) or (p.UDP, "",1234)

Linux and Mac OSX gnu make

Make sure cmake is installed (sudo apt-get install cmake, brew install cmake, or https://cmake.org)

In a terminal type:


This script will invoke cmake and build in the build_cmake directory. You can find pybullet in Bullet/examples/pybullet. The BulletExampleBrowser binary will be in Bullet/examples/ExampleBrowser.

You can also build Bullet using premake. There are premake executables in the build3 folder. Depending on your system (Linux 32bit, 64bit or Mac OSX) use one of the following lines Using premake:

	cd build3
	./premake4_linux --double gmake
	./premake4_linux64 --double gmake
	./premake4_osx --double --enable_pybullet gmake


	cd gmake

Note that on Linux, you need to use cmake to build pybullet, since the compiler has issues of mixing shared and static libraries.

Mac OSX Xcode

Click on build3/xcode4.command or in a terminal window execute

./premake_osx xcode4


The App_ExampleBrowser executables will be located in the bin folder. You can just run it though a terminal/command prompt, or by clicking it.

[--start_demo_name="Demo Name"]     Start with a selected demo  
[--mp4=moviename.mp4]               Create a mp4 movie of the window, requires ffmpeg installed
[--mouse_move_multiplier=0.400000]  Set the mouse move sensitivity
[--mouse_wheel_multiplier=0.01]     Set the mouse wheel sensitivity
[--background_color_red= 0.9]       Set the red component for background color. Same for green and blue
[--fixed_timestep= 0.0]             Use either a real-time delta time (0.0) or a fixed step size (0.016666)

You can use mouse picking to grab objects. When holding the ALT or CONTROL key, you have Maya style camera mouse controls. Press F1 to create a series of screenshots. Hit ESCAPE to exit the demo app.

Check out the docs folder and the Bullet physics forums for further information.