Libbulletjme
JVM bindings for Bullet Physics and V-HACD
The [Libbulletjme Project][libbulletjme] adds JNI "glue code" to portions of [Bullet Physics][bullet] and [Khaled Mamou's V-HACD Library][vhacd], enabling 3-D physics simulation from [Java] applications. The project is written primarily in C++, distributed under the Other license, first published in 2018. Key topics include: android-library, bullet-physics, bullet-physics-engine, collision-detection, collision-shape.
The Libbulletjme Project adds JNI "glue code"
to portions of Bullet Physics
and Khaled Mamou's V-HACD Library,
enabling 3-D physics simulation from Java applications.
Complete source code (in C++ and Java) is provided under
a mixed open-source license.
Pre-built Maven artifacts are also provided.
The project supports the 3 major desktop operating systems on x86_64 architecture:
Windows, Linux, and macOS.
It also supports Linux on ARM (both armhf and aarch64),
macOS on ARM, Windows on ARM,
and 4 Android ABIs (armeabi-v7a, arm64-v8a, x86, and x86_64),
making a total of 11 platforms.
For each desktop platform, 4 native libraries are provided:
- a release build using single-precision arithmetic (the default library)
- a release build using double-precision arithmetic
- a debug build using single-precision arithmetic
- a debug build using double-precision arithmetic
In addition, multithreaded native libraries
are provided for 64-bit architectures running Windows or Linux.
Libbulletjme is used in
the DynamX Physics Mod for Minecraft.
Libbulletjme's native libraries are used in Minie,
which integrates Libbulletjme into the jMonkeyEngine game engine.
<a name="toc"></a>
Contents of this document
- How to add Libbulletjme to an existing project
- Example applications
- How to build Libbulletjme from source
- Lexicon of class/enum/struct names
- What's missing
- External links
- History
- Acknowledgments
<a name="add"></a>
How to add Libbulletjme to an existing project
How to add Libbulletjme to an existing project
<a name="examples"></a>
Example applications
-
HelloLibbulletjme:
drop a dynamic sphere onto a horizontal surface -
HelloVehicle0:
drive a vehicle on a horizontal surface
<a name="build"></a>
How to build Libbulletjme from source
How to build Libbulletjme from source
<a name="lexicon"></a>
Lexicon of class/enum/struct names
Lexicon of class/enum/struct names
<a name="todo"></a>
What's missing
<a name="links"></a>
External links
- The Bullet Physics SDK Manual
- The Bullet source-code repository at GitHub
- The LbjExamples project at GitHub
- The Minie project
- The V-HACD project at GitHub
- The SPORT project at GitHub
- The V-Sport project at GitHub
- The physics section of the jMonkeyEngine Wiki
- The Bullet Forum
- The Bullet home page
- JBullet, a known alternative to Libbulletjme
- Alan Chou's game-physics tutorials
- "Real-time Vehicle Simulation for Video Games Using the Bullet Physics Library" by Hammad Mazhar
- "Vehicle Simulation With Bullet" by Kester Maddock
<a name="history"></a>
History
The evolution of this project is chronicled in
its release log.
The C++ glue code for Bullet was originally copied from jme3-bullet-native,
a library of jMonkeyEngine.
The soft-body portion was added in 2018,
and is based on the work of Jules (aka "dokthar").
The Java code is based partly jMonkeyEngine,
partly on Riccardo's V-hacd-java-bindings,
and partly on Minie.
Minie is, in turn, based on jme3-bullet, another jMonkeyEngine library.
<a name="acks"></a>
Acknowledgments
The Libbulletjme Project is derived from open-source software:
- the Bullet physics simulation kit
- the jMonkeyEngine game engine
- Dokthar's fork of jMonkeyEngine
- Khaled Mamou's V-HACD Library for approximate convex decomposition
- Riccardo Balbo's vhacdBindings
- Stephen Gold's Heart library
- Paul Speed's SimMath library
This project also made use of the following software tools:
- the Android Studio, IntelliJ IDEA, and NetBeans
integrated development environments - the Antora static website generator
- the Checkstyle tool
- the FindBugs source-code analyzer
- the GNU Compiler Collection and Project Debugger
- the Git revision-control system and GitK commit viewer
- the Firefox and Google Chrome web browsers
- the GitKraken client
- the Gradle build tool
- the Java compiler, standard doclet, and runtime environment
- jMonkeyEngine and the jME3 Software Development Kit
- the Linux Mint operating system
- the LLVM Compiler Infrastructure
- the Markdown document-conversion tool
- the Meld visual merge tool
- Microsoft Windows and Visual Studio
I am grateful to Riccardo Balbo (aka "riccardo") for bringing
V-HACD to my attention.
I am grateful to "dustContributor"
for optimizing the cleaner thread.
I am grateful to "elmfrain" for authoring the GearJoint class.
I am grateful to GitHub, Sonatype, AppVeyor,
Travis, MacStadium, JFrog, and Imgur
for providing free hosting for this project
and many other open-source projects.
I am grateful to ndebruyn for helping me test the Android native libraries.
I am grateful to Pavly Gerges for helping me test the armhf native library.
I am grateful to Yanis Boudiaf and "qwq" for many helpful suggestions.
I'm also grateful to my dear Holly, for keeping me sane.
If I've misattributed anything or left anyone out, please let me know, so I can
correct the situation: sgold@sonic.net
Contributors
Showing top 5 contributors by commit count.
