29 September 2007

Open Source Physics Engines

Computer games make use of physics engines to represent realistically a 2D/3D environment and thus make the player more immersed into the environment. Some of the most popular open-source physics engines are listed below:

AGEIA is dedicated to delivering dynamic interactive realism to the ever demanding complexity of next generation games. Its flagship solution, AGEIA PhysX, is the world's first dedicated physics engine and physics processor to bridge the gap between static virtual worlds and responsive unscripted physical reality. AGEIA PhysX allows developers to use active physics-based environments for a truly realistic entertainment experience.

Bullet is a 3D Collision Detection and Rigid Body Dynamics Library for games and animation. Free for commercial use, including PlayStation 3, Open Source multiplatform C++ under the ZLib License. Discrete and continuous collision detection, integrated into Blender 3D and COLLADA 1.4 Physics tools support. Bullet features collision shapes include: Sphere, box, cylinder, cone, convex hull, and triangle mesh. It implements GJK convex collision detection and swept collision test. It also supports continuous Collision Detection and constraints.

Chrono::Engine is a multi-body dynamics engine, aimed at providing high-performance simulation features in C++ projects. CHRONO::ENGINE can perform dynamical, kinematics and static analyses for virtual mechanisms built of parts such as actuators, motors, constraints between parts, spring, dampers, etc. Applications will be able to simulate a wide set of mechanisms: cars, robots, trucks, trains, car suspensions, earth-moving machines, motorscrapers, backhoe loaders, human skeletons, aereospatial devices, landing gears, robotic manipulators, engines, torque converters, prosthetic devices, artificial arms, miniaturized mechanisms for tape recorders, camcorders, etc.

DynaMechs is a cross-platform, object-oriented, C++ class library that supports dynamic simulation of a large class of articulated mechanisms. From simple serial chains to tree-structured articulated mechanisms (including the simpler star topologies) to systems with closed loops. Code to compute approximate hydrodynamic forces are also available to simulate underwater robotic systems of this class including submarines (ROVs, AUVs, etc.) with one or more robotic manipulators. Joint types supported include the standard revolute and prismatic classes, as well as efficient implementations (using Euler angles or quaternions) for ball joints.

DynaMo is a software library providing classes that takes care of the calculation of the motions of geometries moving under the influence of forces and torques and impulses. In addition, the library can also compute forces for you through the mechanism of constraints. These allow you to easily connect geometries to each other in various ways. A constraint only has to be specified once, and the Dynamo library will continually enforce it from that moment on by applying the required reaction forces. The Dynamo library is released under the terms of the GNU Library General Public License.

FastCar library was designed by people with great experience in multi-body dynamics. The authors previously built a fast, versatile and very elaborate multi-body dynamics package that was used for many applications including games and vehicles. However, experience showed that a complex general purpose physics package and a versatile and efficient vehicle simulator for games are two very different things; so the decision was taken to build a separate small package for simulation of vehicles having speed and simplicity in mind.

Newton is an integrated solution for real time simulation of physics environments. The API provides scene management, collision detection, dynamic behavior and yet it is small, fast, stable and easy to use. Newton implements a deterministic solver, which is not based on traditional LCP or iterative methods, but possesses the stability and speed of both respectively. This feature makes Newton a tool not only for games, but also for any real-time physics simulation.

ODE is an open source, high performance library for simulating rigid body dynamics. It is fully featured, stable, mature and platform independent with an easy to use C/C++ API. It has advanced joint types and integrated collision detection with friction. ODE is useful for simulating vehicles, objects in virtual reality environments and virtual creatures. It is currently used in many computer games, 3D authoring tools and simulation tools.

OpenTissue provides generic algorithms and data structures for rapid development of interactive modelling and simulation. OpenTissue works as a foundation for research and student projects in physics-based animation at the Department of Computer Science, University of Copenhagen (commonly known as DIKU). OpenTissue is free for commercial use, open source under the ZLib License.

PAL (physics abstraction layer) provides a unified interface to a number of different physics engines. This enables the use of multiple physics engines within one application. It is not just a simple physics wrapper, but provides an extensible plug-in architecture for the physics system, as well as extended functionality for common simulation components. PAL does not restrict you to one particular physics engine. Finally, PAL has an extensive set of common features such as simulating different devices or loading physics configurations from XML or COLLADA files.

Physsim is a C++ rigid-body dynamics simulation library. It has been developed for two purposes: (a) to provide a stable, flexible platform for research into rigid body simulation and (b) to supply roboticists with state-of-the-art tools in robotic simulation. Rigid body simulators can be measured in three ways: speed, accuracy, and stability. Speed is important so that complex environments can be simulated in real-time. Accuracy implies that the simulator reflects the physical phenomena of the real world. Stability (or instability) is an artefact of the numerous approximations made in rigid body simulation. Rigid body simulators currently must balance these three factors.

Pulsk investigates novel methods for simulation of rigid bodies that integrate well with stacking situations. This work focuses on impulse-based simulation techniques with physical interactions such as collision, contact and friction in relatively complex scenes: large number of stacked objects, sliding objects, highly dynamical scenes with non-convex bodies. Pulsk aims the work to be applicable to real-time applications such as games, therefore some small approximations in the algorithms are allowed.

SPE (Simple Physics Engine) is a lightweight but still powerful physics engine for games and virtual reality programs. SPE includes the following features: Uniform Tri-Mesh collision detection algorithm; Collision data analysis; Stable solver; Joint; Breakable RigidBody; High Parallel Computation and an easy to use interface.

Tokamak Game Physics SDK is a high performance real-time physics library designed specially for games. It has a high-level, simple to use programming interface. Tokamak features a unique iterative method for solving constraint. This allows developers to make the trade-off between accuracy and speed, as well as providing more predictable processor and memory usage. Currently, Tokamak provides collision detection for primitives (box, sphere, capsule), combination of primitives, and arbitrary static triangle mesh as well as convex to convex collision detection.

True Axis Physics SDK is a fast and solid real world physics simulation system designed for demanding games and virtual interactive environments. The SDK aims in avoiding common issues present in most physics and collision implementations and give developers the control they need over the way objects behave. The SDK features swept collision detection, allowing it to handle rapidly changing environments far more effectively than other, non-swept based, physics systems. True Axis will seamlessly handle collisions between many high velocity entities, such as speedy vehicles or missiles, with out letting them become intersected.