Bullet (software)

Last updated
Bullet Physics Library
Developer(s) Erwin Coumans, et al. [1] [2]
Stable release
3.2.4 [3] / April 25, 2022;11 months ago (2022-04-25)
Repository
Written in C, C++
Operating system Microsoft Windows, macOS, Linux, iOS, Android, PlayStation 3, Xbox 360, Wii, Xbox One, PlayStation 4, Nintendo Switch, Xbox Series X/S, PlayStation 5
Type Physics engine
License zlib License
Website pybullet.org   OOjs UI icon edit-ltr-progressive.svg

Bullet is a physics engine which simulates collision detection as well as soft and rigid body dynamics. It has been used in video games and for visual effects in movies. Erwin Coumans, its main author, won a Scientific and Technical Academy Award [4] for his work on Bullet. He worked for Sony Computer Entertainment US R&D from 2003 until 2010, for AMD until 2014, for Google until 2022 and he now works for Nvidia.

Contents

The Bullet physics library is free and open-source software subject to the terms of the zlib License. The source code is hosted on GitHub; before 2014 it was hosted on Google Code. [5]

Features

The Bullet website also hosts a Physics Forum [7] for general discussion around physics simulation for games and animation.

At AMD Developer Summit (APU) in November 2013 Erwin Coumans presented the Bullet 3 OpenCL Rigid Body Simulation. [8] [9]

Related Research Articles

Collision detection is the computational problem of detecting the intersection of two or more objects. Collision detection is a classic issue of computational geometry and has applications in various computing fields, primarily in computer graphics, computer games, computer simulations, robotics and computational physics. Collision detection algorithms can be divided into operating on 2D and 3D objects.

In plasma physics, the particle-in-cell (PIC) method refers to a technique used to solve a certain class of partial differential equations. In this method, individual particles in a Lagrangian frame are tracked in continuous phase space, whereas moments of the distribution such as densities and currents are computed simultaneously on Eulerian (stationary) mesh points.

<span class="mw-page-title-main">Havok (software)</span> Video game middleware

Havok is a middleware software suite developed by the Irish company Havok. Havok provides a physics engine component and related functions to video games.

<span class="mw-page-title-main">Physics engine</span> Software for approximate simulation of physical systems

A physics engine is computer software that provides an approximate simulation of certain physical systems, such as rigid body dynamics, soft body dynamics, and fluid dynamics, of use in the domains of computer graphics, video games and film (CGI). Their main uses are in video games, in which case the simulations are in real-time. The term is sometimes used more generally to describe any software system for simulating physical phenomena, such as high-performance scientific simulation.

A physics processing unit (PPU) is a dedicated microprocessor designed to handle the calculations of physics, especially in the physics engine of video games. It is an example of hardware acceleration.

<span class="mw-page-title-main">Blender Game Engine</span>

The Blender Game Engine was a free and open-source 3D production suite used for making real-time interactive content. It was previously embedded within Blender, but support for it was dropped in 2019, with the release of Blender 2.8. The game engine was written from scratch in C++ as a mostly independent component, and includes support for features such as Python scripting and OpenAL 3D sound.

Computer animation physics or game physics are laws of physics as they are defined within a simulation or video game, and the programming logic used to implement these laws. Game physics vary greatly in their degree of similarity to real-world physics. Sometimes, the physics of a game may be designed to mimic the physics of the real world as accurately as is feasible, in order to appear realistic to the player or observer. In other cases, games may intentionally deviate from actual physics for gameplay purposes. Common examples in platform games include the ability to start moving horizontally or change direction in mid-air and the double jump ability found in some games. Setting the values of physical parameters, such as the amount of gravity present, is also a part of defining the game physics of a particular game.

<span class="mw-page-title-main">Soft-body dynamics</span> Computer graphics simulation of deformable objects

Soft-body dynamics is a field of computer graphics that focuses on visually realistic physical simulations of the motion and properties of deformable objects. The applications are mostly in video games and films. Unlike in simulation of rigid bodies, the shape of soft bodies can change, meaning that the relative distance of two points on the object is not fixed. While the relative distances of points are not fixed, the body is expected to retain its shape to some degree. The scope of soft body dynamics is quite broad, including simulation of soft organic materials such as muscle, fat, hair and vegetation, as well as other deformable materials such as clothing and fabric. Generally, these methods only provide visually plausible emulations rather than accurate scientific/engineering simulations, though there is some crossover with scientific methods, particularly in the case of finite element simulations. Several physics engines currently provide software for soft-body simulation.

<span class="mw-page-title-main">Python-Ogre</span>

Python-Ogre is a Python binding for the OGRE 3D engine, designed to provide the functionality and performance of OGRE with the accessibility and ease of use of Python to facilitate the rapid development of 3D games and to make the OGRE engine more accessible to the beginner, who might otherwise be daunted by the technicalities of writing in the native C++. The performance of the engine is decreased in comparison to the original C++ demos, however the original OGRE engine provides such high performance that the performance of Python-Ogre is still more than acceptable for all but the most graphics-intensive games.

<span class="mw-page-title-main">Robotics simulator</span>

A robotics simulator is a simulator used to create an application for a physical robot without depending on the physical machine, thus saving cost and time. In some case, such applications can be transferred onto a physical robot without modification.

<span class="mw-page-title-main">Box2D</span>

Box2D is a free open source 2-dimensional physics simulator engine written in C++ by Erin Catto and published under the MIT license. It has been used in Crayon Physics Deluxe, Limbo, Rolando, Incredibots, Angry Birds, Tiny Wings, Shovel Knight, Transformice, Happy Wheels, and many online Flash games, as well as iPhone, iPad and Android games using the Cocos2d or Moscrif game engine and Corona framework.

<span class="mw-page-title-main">OpenCL</span> Open standard for programming heterogenous computing systems, such as CPUs or GPUs

OpenCL is a framework for writing programs that execute across heterogeneous platforms consisting of central processing units (CPUs), graphics processing units (GPUs), digital signal processors (DSPs), field-programmable gate arrays (FPGAs) and other processors or hardware accelerators. OpenCL specifies programming languages for programming these devices and application programming interfaces (APIs) to control the platform and execute programs on the compute devices. OpenCL provides a standard interface for parallel computing using task- and data-based parallelism.

Chipmunk2D is a 2-dimensional real-time rigid body physics engine written by Scott Lembcke that is designed to be portable, lightweight, fast, and easy to use. Prior to version 7, two main versions of the library existed. Chipmunk2D Free was written purely in C99, and freely available under the terms of the MIT License. Chipmunk2D Pro was a proprietary upgrade designed for development on mobile devices. It included several high-level subroutines in Objective-C, and floating-point optimizations for the ARM processor. However, after version 7 the project was fully open-sourced.

Physically based animation is an area of interest within computer graphics concerned with the simulation of physically plausible behaviors at interactive rates. Advances in physically based animation are often motivated by the need to include complex, physically inspired behaviors in video games, interactive simulations, and movies. Although off-line simulation methods exist to solve most all of the problems studied in physically-based animation, these methods are intended for applications that necessitate physical accuracy and slow, detailed computations. In contrast to methods common in offline simulation, techniques in physically based animation are concerned with physical plausibility, numerical stability, and visual appeal over physical accuracy. Physically based animation is often limited to loose approximations of physical behaviors because of the strict time constraints imposed by interactive applications. The target frame rate for interactive applications such as games and simulations is often 25-60 hertz, with only a small fraction of the time allotted to an individual frame remaining for physical simulation. Simplified models of physical behaviors are generally preferred if they are more efficient, easier to accelerate, or satisfy desirable mathematical properties. Fine details are not important when the overriding goal of a visualization is aesthetic appeal or the maintenance of player immersion since these details are often difficult for humans to notice or are otherwise impossible to distinguish at human scales.

CodeXL was an open-source software development tool suite which included a GPU debugger, a GPU profiler, a CPU profiler, Graphics frame analyzer and a static shader/kernel analyzer.

<span class="mw-page-title-main">ORX</span> Game Engine

Orx is an open-source, portable, lightweight, plug-in-based, data-driven and easy to use 2D-oriented game engine written in C.

Project Chrono is a physics engine developed by University of Wisconsin-Madison and University of Parma and members of its open source community. It supports simulating rigid and soft body dynamics, collision detection, vehicle dynamics, fluid-solid interaction, deformable terrain, and granular dynamics, among other physical systems. The latest developments are in the area of sensor simulation, robotics simulation, human-autonomous agent interaction, and autonomous vehicle simulation, where the emphasis is on off-road scenarios. Parts of the code run on the GPU, multi-core CPUs, and distributed memory architectures via MPI. It is used at tens of universities, in industry, and federal research labs.

Cannon.js is an open source JavaScript 3D physics engine created by Stefan "schteppe" Hedman. Unlike physics engine libraries ported from C++ to JavaScript, cannon.js is written in JavaScript from the start and can take advantage of its features. In a 2013 comparison with Ammo.js, cannon.js was found to be "more compact, more comprehensible, more powerful with regard to its performance and also easier to understand", but did not have as many features.

<span class="mw-page-title-main">Asynchronous multi-body framework</span> Robotic simulator

Asynchronous multi-body framework (AMBF) is an open-source 3D versatile simulator for robots developed in April 2019. This multi-body framework provides a real-time dynamic simulation of multi-bodies such as robots, free bodies, and multi-link puzzles, paired with real-time haptic interaction with various input devices. The framework integrates a real surgeon master console, haptic or not, to control simulated robots in real-time. This feature results in the simulator being used in real-time training applications for surgical and non-surgical tasks. It offers the possibility to interact with soft bodies to simulate surgical tasks where tissues are subject to deformations. It also provides a Python Client to interact easily with the simulated bodies and train neural networks on real-time data with in-loop simulation. It includes a wide range of robots, grippers, sensors, puzzles, and soft bodies. Each simulated object is represented as an afObject; likewise, the simulation world is represented as an afWorld. Both utilize two communication interfaces: state and command. Through the State command, the object can send data outside the simulation environment, while the Command allows to apply commands to the underlying afObject.

References

  1. "GitHub: Bullet Physics". GitHub .
  2. "Google Code: Bullet Physics".
  3. "GitHub: bulletphysics/bullet3 releases". GitHub .
  4. cgchannel:Bullet and Naiad creators win Academy Awards (January 14th, 2015)
  5. Bullet moves to github and Erwin Coumans joins Google! (May 16th, 2014)
  6. "GPU physics: OpenCL separate branch".
  7. "Real-Time Physics Simulation Forum". pybullet.org.
  8. "Bullet 3 OpenCL Rigid Body Simulation". 2013-11-21.
  9. "bullet3 on GitHub". GitHub .