A lightweight, modular OpenGL ES 2.0/3.0 engine for Android. This library provides a component-based architecture to load and render 3D models with support for animations, lighting, and various file formats.
Version 2.0.1 *
- Source split. Now the parsers are plugins that can be included or not.
- Compatibility: Android 7.0+ (API 24+), targeting API 35.
- Graphics API: OpenGL ES 2.0 and 3.0.
- Modular Architecture: The engine is decoupled from specific file formats. You only compile and include the parsers you actually use.
- Supported Formats (Optional Plugins):
- OBJ (Wavefront)
- STL (Stereolithography)
- DAE (Collada) - Support for skinning and animations.
- GLTF (GL Transmission Format) - PBR-ready structures, skinning, and animations.
- FBX (Filmbox) - High-performance native parsing via
ufbx.
- Core Capabilities:
- Skeletal and Property Animations.
- Directional and Point Lighting.
- Normal Mapping.
- Skybox support.
- Collision Detection (Ray-casting & Octree optimized).
- Stereoscopic/VR Rendering (Anaglyph & Side-by-Side).
To keep your APK small and build times fast, you can enable only the loaders you need in your gradle.properties file:
# Enable specific 3D format plugins
org.the3deer.android.engine.includeObj=true
org.the3deer.android.engine.includeStl=true
org.the3deer.android.engine.includeGltf=true
org.the3deer.android.engine.includeDae=true
org.the3deer.android.engine.includeFbx=false # Set to false to exclude FBX and its native C++ codeDetailed technical documentation regarding the engine's architecture, Scene Graph, and API can be found here: doc/README.md
git submodule add https://github.com/the3deer/android-3D-engine.git engineAdd the module to your settings.gradle:
include ':engine'And add the dependency to your app/build.gradle:
dependencies {
implementation project(':engine')
}In your application initialization (e.g., MainActivity or Application class), register the plugins you want to use:
// Register only the formats your game uses
LoaderRegistry.register("obj") { uri, listener -> WavefrontLoaderTask(uri, listener) }
LoaderRegistry.register("gltf") { uri, listener -> GltfLoaderTask(uri, listener) }
LoaderRegistry.register("glb") { uri, listener -> GltfLoaderTask(uri, listener) }Detailed technical documentation regarding the engine's architecture, Scene Graph, and API can be found here: doc/README.md
- The3Deer: MIT License
- STL Parser: GNU LGPL v2.1 (Dipl. Ing. P. Szawlowski)
- GLTF Parser: MIT License (javagl/JglTF)
- EarCut: ISC License (Mapbox)
Developed with assistance from Gemini AI.