Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/stephengold/libbulletjme

A JNI interface to Bullet Physics and V-HACD
https://github.com/stephengold/libbulletjme

android-library bullet-physics bullet-physics-engine collision-detection collision-shape java java-bindings jni jvm-library library open-source physics physics-3d physics-simulation rigid-bodies rigid-body-dynamics soft-bodies soft-body-simulation vhacd vhacd-library

Last synced: 5 days ago
JSON representation

A JNI interface to Bullet Physics and V-HACD

Awesome Lists containing this project

README

        

Libbulletjme Project logo

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.

Complete source code (in C++ and Java) is provided under
[a mixed open-source license][license].

The project supports the 3 major desktop operating systems:
Windows, Linux, and macOS. Both the x86 and x86-64 architectures
are supported for each operating system.
It also supports Linux on ARM (armel, armhf, and aarch64) and macOS on ARM
and provides native libraries for the 4 supported Android ABIs
(armeabi-v7a, arm64-v8a, x86, and x86_64),
making a total of 14 platforms.

For each desktop platform, 4 native libraries are distributed:
+ 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 x86_64 architectures running Windows or Linux.

Libbulletjme is used in
[the DynamX Physics Mod for Minecraft][dynamx].

Libbulletjme's native libraries are used in [Minie],
which integrates Libbulletjme into [the jMonkeyEngine game engine][jme].
For applications that don't use jMonkeyEngine,
standalone Maven artifacts are provided.

## Contents of this document

+ [How to add Libbulletjme to an existing project](#add)
+ [Example applications](#examples)
+ [How to build Libbulletjme from source](#build)
+ [Lexicon of class/enum/struct names](#lexicon)
+ [What's missing](#todo)
+ [External links](#links)
+ [History](#history)
+ [Acknowledgments](#acks)

## How to add Libbulletjme to an existing project

[How to add Libbulletjme to an existing project](https://stephengold.github.io/Libbulletjme/lbj-en/add.html)

[Jump to the table of contents](#toc)

## Example applications

+ [HelloLibbulletjme](https://github.com/stephengold/LbjExamples/blob/master/apps/src/main/java/com/github/stephengold/lbjexamples/apps/console/HelloLibbulletjme.java):
drop a dynamic sphere onto a horizontal surface

+ [HelloVehicle0](https://github.com/stephengold/LbjExamples/blob/master/apps/src/main/java/com/github/stephengold/lbjexamples/apps/console/HelloVehicle0.java):
drive a vehicle on a horizontal surface

[Jump to the table of contents](#toc)

## How to build Libbulletjme from source

[How to build Libbulletjme from source](https://stephengold.github.io/Libbulletjme/lbj-en/English/build.html)

[Jump to the table of contents](#toc)

## Lexicon of class/enum/struct names

[Lexicon of class/enum/struct names](https://stephengold.github.io/Libbulletjme/lbj-en/English/lexicon.html)

[Jump to the table of contents](#toc)

## What's missing

[What's missing](https://stephengold.github.io/Libbulletjme/lbj-en/English/overview.html#_whats_missing)

[Jump to the table of contents](#toc)

## External links

+ [The Bullet Physics SDK Manual](https://github.com/bulletphysics/bullet3/blob/master/docs/Bullet_User_Manual.pdf)
+ [The Bullet source-code repository](https://github.com/bulletphysics/bullet3) at [GitHub]
+ [The LbjExamples project][examples] at [GitHub]
+ [The Minie project][minie]
+ [The V-HACD project][vhacd] at [GitHub]
+ [The SPORT project][sport] at [GitHub]
+ [The V-Sport project][vsport] at [GitHub]
+ [The physics section of the jMonkeyEngine Wiki](https://wiki.jmonkeyengine.org/docs/3.4/physics/physics.html)
+ [The Bullet Forum](https://pybullet.org/Bullet/phpBB3)
+ [The Bullet home page][bullet]
+ [JBullet], a known alternative to Libbulletjme
+ [Alan Chou's game-physics tutorials](https://allenchou.net/game-physics-series/)
+ ["Real-time Vehicle Simulation for Video Games Using the Bullet Physics Library" by Hammad Mazhar](https://sbel.wisc.edu/wp-content/uploads/sites/569/2018/05/Real-time-Vehicle-Simulation-for-Video-Games-Using-the-Bullet-Physics-Library.pdf)
+ ["Vehicle Simulation With Bullet" by Kester Maddock](https://docs.google.com/document/d/18edpOwtGgCwNyvakS78jxMajCuezotCU_0iezcwiFQc)

[Jump to the table of contents](#toc)

## History

The evolution of this project is chronicled in
[its release log][log].

The C++ glue code for Bullet was originally copied from `jme3-bullet-native`,
a library of [jMonkeyEngine][jme].
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][vhacdBindings],
and partly on [Minie].
Minie is, in turn, based on `jme3-bullet`, another jMonkeyEngine library.

[Jump to the table of contents](#toc)

## Acknowledgments

The Libbulletjme Project is derived from open-source software:

+ the [Bullet] physics simulation kit
+ the [jMonkeyEngine][jme] game engine
+ [Dokthar's fork of jMonkeyEngine](https://github.com/dokthar/jmonkeyengine)
+ [Khaled Mamou's V-HACD Library][vhacd] 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 [Antora] static website generator
+ the [Checkstyle] tool
+ the [FindBugs] source-code analyzer
+ the [GNU Compiler Collection][gcc] and [Project Debugger][gdb]
+ the [Git] revision-control system and GitK commit viewer
+ the [Firefox] and [Google Chrome][chrome] web browsers
+ the [GitKraken] client
+ the [Gradle] build tool
+ the [IntelliJ IDEA][idea] and [NetBeans] integrated development environments
+ the [Java] compiler, standard doclet, and runtime environment
+ [jMonkeyEngine][jme] and the jME3 Software Development Kit
+ the [Linux Mint][mint] operating system
+ the [LLVM Compiler Infrastructure][llvm]
+ 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"](https://github.com/dustContributor)
for [optimizing the cleaner thread](https://github.com/stephengold/Libbulletjme/pull/13).

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.


Powered By MacStadium logo

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: [email protected]

[Jump to the table of contents](#toc)

[antora]: https://antora.org/ "Antora Project"
[appveyor]: https://www.appveyor.com "AppVeyor Continuous Integration"
[bullet]: https://pybullet.org/wordpress "Bullet Real-Time Physics Simulation"
[checkstyle]: https://checkstyle.org "Checkstyle"
[chrome]: https://www.google.com/chrome "Chrome"
[dynamx]: https://dynamx.fr "DynamX Project"
[examples]: https://github.com/stephengold/LbjExamples "LbjExamples Project"
[findbugs]: https://findbugs.sourceforge.net/ "FindBugs Project"
[firefox]: https://www.mozilla.org/en-US/firefox "Firefox"
[gcc]: https://gcc.gnu.org "GNU Compiler Collection"
[gdb]: https://www.gnu.org/software/gdb/ "GNU Project Debugger"
[git]: https://git-scm.com "Git"
[github]: https://github.com "GitHub"
[gitkraken]: https://www.gitkraken.com "GitKraken client"
[gradle]: https://gradle.org "Gradle Project"
[heart]: https://github.com/stephengold/Heart "Heart Project"
[idea]: https://www.jetbrains.com/idea/ "IntelliJ IDEA"
[imgur]: https://imgur.com/ "Imgur"
[java]: https://en.wikipedia.org/wiki/Java_(programming_language) "Java programming language"
[jbullet]: http://jbullet.advel.cz "JBullet"
[jfrog]: https://www.jfrog.com "JFrog"
[jme]: https://jmonkeyengine.org "jMonkeyEngine Project"
[libbulletjme]: https://stephengold.github.io/Libbulletjme "Libbulletjme Project"
[license]: https://github.com/stephengold/Libbulletjme/blob/master/LICENSE "Libbulletjme license"
[llvm]: https://www.llvm.org "LLVM Compiler"
[log]: https://github.com/stephengold/Libbulletjme/blob/master/release-notes.md "release log"
[macstadium]: https://www.macstadium.com/ "MacStadium"
[markdown]: https://daringfireball.net/projects/markdown "Markdown Project"
[meld]: https://meldmerge.org "Meld merge tool"
[minie]: https://stephengold.github.io/Minie "Minie Project"
[mint]: https://linuxmint.com "Linux Mint Project"
[netbeans]: https://netbeans.org "NetBeans Project"
[simmath]: https://github.com/Simsilica/SimMath "SimMath Library"
[sonatype]: https://www.sonatype.com "Sonatype"
[sport]: https://github.com/stephengold/sport "SPORT Project"
[travis]: https://travis-ci.com "Travis CI"
[vhacd]: https://github.com/kmammou/v-hacd "V-HACD Library"
[vhacdBindings]: https://github.com/riccardobl/v-hacd-java-bindings "Riccardo's V-hacd-java-bindings Project"
[vsport]: https://github.com/stephengold/V-Sport "V-Sport Project"