|Project Name||Stars||Downloads||Repos Using This||Packages Using This||Most Recent Commit||Total Releases||Latest Release||Open Issues||License||Language|
|Nxogre||54||9 years ago||mit||C++|
|NxOgre is a physics connector library between the NVIDIA PhysX physics library and Ogre or any other 2D/3D rendering system.|
|Source Sdk Bullet Physics||14||2 years ago||1||mit||C++|
|Bullet Physics Injection for Source SDK 2013|
|Starling Nape||9||11 years ago||ActionScript|
|Adobe Flash: provides an example of using the Nape physics engine and the Starling 2D game framework.|
|The Pursuit Demo||9||6 years ago||mit||GLSL|
|3D racing with physics powered by Marmalade SDK and Bullet Physics|
|Lime Tutorials||7||9 years ago||Lua|
|Lime Tutorials from http://lime.outlawgametools.com/tutorials-3/ but updated to work with the latest lime and corona SDK|
|Boost Python Bullet||6||9 years ago||7||mit||C++|
|Thin boost based python wrapper for bullet physics sdk|
|Selerio Arkit Basics||5||4 years ago||lgpl-3.0||Swift|
|A sample app using the Selerio SDK for AR|
|Draggin Framework||5||6 years ago||mit||Lua|
|A framework for use with the MOAI SDK.|
|Constellation||2||12 years ago||1||Lua|
|A Corona SDK application that lets Corona developers scratch out coordinate sets for polygonal physics bodies|
|Isaac3d||2||8 years ago||1||C#|
|A Google Cardboard app using Unity that visualises concepts in physics.|
This is a thin boost wrapper on top of Bullet Physics SDK (http://bulletphysics.org) - Note that I am not the owner of Bullet Physics SDK, nor am I affiliated with them. Bullet Physics SDK is under a separate license. See ./bullet_cpp/BulletLicense.txt for reference. There are some minor alterations in the source, specifically anonymous enums in classes are named so that they can be wrapped in a constructive way.
Feel free to contribute pull requests or post issues for discussion. Issues asking for ETAs on components will be closed without answers.
Unittests are mandatory for all pull requests. See the provided tests for reference. If you want to use a different test framework, it must be supported by nose. Unittests for the Bullet SDK itself are outside the scope of the project.
Also note the differences from reference in Bullet (see below), and calling conventions for pass-by-reference methods with primitive parameters (str, int, float, etc).
Also note that some constructors that take pointer parameters are implemented using factory methods, e.g. btDiscreteDynamicsWorld.
Serialization structures (e.g. btCompoundShapeData) are not wrapped. Serialization of these objects is beyond the scope of the project as it stands.
I strongly recommend developing using virtualenv
yum install python.pip and
pip install virtualenv (use sudo)
This library requires the boost libraries to be installed and the headers and shared libraries accessible. Version 1.35 and up should be supported (Boost.Python 2). It also requires the Python headers to be installed obviously.
It is recommended that you run the library from a virtualenv but a local installation should also work just fine.
The library has been built and tested on Linux (Ubuntu 12.04, 13.04, CentOS 5.1, 6.0). Windows and OSX builds should not be terribly problematic, but I won't ever support them myself.
You can run
pip install -e [email protected]:Klumhru/boost-python-bullet.git#egg=boost-python-bullet
You can also download the current branch
git clone [email protected]:Klumhru/boost-python-bullet.git and install by running
python setup.py install.
The library is fully unit tested using python unittest. You can install nose and run nosetests in the root directory and nose should sniff out the tests in the various test folders.
You can use the bullet physics manual for reference but
Member methods have been renamed to conform to python convention:
setRotation -> set_rotation setValue -> set_value
Some methods have been changed to properties, as in btVector3.length
By default "m_" style prefixes for public data members have been removed. In most cases "get_" prefixes have also been removed, with the exception of those that take arguments.
int btCompoundShape::getNumChildShapes() const
a.num_child_shapes # :int
On the other hand:
Some methods have twins that have more descriptive names: btVector3.length_sqr exists along with btVector3.length2 which is a property instead of a method as in C++
Const return values are avoided where possible. Where methods have both implementations in CPP only the reference returning method is wrapped. This is intentional to avoid stack dumps that will occur when dealing with const ref instances in python if they are modified in python space.
The best way to study the use cases of the library is to read the (extensive) unittests.
Where primitives are passed by reference as pseudo return values they are returned instead. This is because primitives are immutable in python. If more than one value is passed by reference they are returned as a tuple to maintain pythonity (new word, yay me).
Only a limited subset of the bullet library is wrapped so far. Work is ongoing.
Current classes that are fully wrapped (and tested):
Internals used for data transfer and internal logic are not exposed except where neccesary, and then without property implementations, and only limited constructors (or none at all). btDbvtNode and btDbvt are examples of this.
Common collection implementations of btAlignedObjectArray will be implemented for the exposed classes where applicable, e.g. btVector3, but not btDynamicsWorld. I you need something from the internals of Bullet, feel free to submit a pull request. Note that only requests with full tests will be merged.