Skip to content

the3deer/android-3D-model-viewer

Repository files navigation

Android 3D Model Viewer

travis-ci badge

This is a demo of OpenGL ES 2.0. It is basically an android application with a 3D engine that can load Wavefront OBJ, STL, DAE & GLTF files. The purpose of this application is to learn and share how to draw using OpenGL language.

News (22/10/2024)

  • Gltf Animations :D
  • Android view using Fragments
  • Android Preferences for Settings
  • Android SDK and dependencies updated
  • Loader: Integrated Khronos repository

Demo

Checkout this to see the features of the application: https://www.youtube.com/watch?v=PV92DKohXXk

Android Market

Get in on F-Droid

Notice

  • Collada support is limited. Collada renderer currently supports a maximum of 60 bones.
  • In order to see models in 3D virtual reality, you need red-cyan and/or VR glasses
  • If you have any issue in general,please open an issue and attach model if possible, specifying Android version and Device model.

About

Load 3D models and see how to do it with this open source code application.

The main purpose of this app is to show how to draw in android using the OpenGL 2.0 by sharing the source code. So please, don't expect this application to be much richer or nicer than the ones already published in the app store, but at least it's opened to anyone who wants to contribute or don't want to start a similar project from scratch.

As this is my first android app and Im still learning the OpenGL 2.0 language, it is highly probable that there are bugs; but I will try to continue improving the app and adding more features. So please send me your comments, suggestions or complains by opening an issue.

The app comes with some included 3D models that have different licenses.

Whats next

  • Improve support for glTF standard format
  • VR without glasses (on hold)
  • Augmented reality

Features

  • Supports >= Android 4.1 (Ice Cream Sandwich) - Min API Level 16 -> Target API Level 31
  • OpenGL ES 2.0 API
  • Multiple Formats:
    • OBJ (wavefront)
    • STL (STereoLithography)
    • DAE (Collada-BETA)
    • GLTF (GL Transmission Format)
  • Vertex Normals support
  • Transformation support: scaling, rotation, translation, orientation
  • Colors support
  • Textures support
  • Lighting support
  • Multiple Rendering Modes
    • triangles
    • wireframe
    • point cloud
    • skeleton
  • camera support
    • perspective
    • orthographic
    • isometric views
    • free
  • skeletal animations (collada dae, gltf)
  • ray collision detection
  • stereoscopic 3D: anaglyph + cardboard
  • other:
    • Polygon with holes
    • Smoothing
    • Bounding box
    • Skybox
    • Object picking
    • file explorer
    • repository explorer
    • lightweight: only 8 Megabyte (3d models excluded)

Try it

You can install the application in either of these ways:

Compilation

Script to build an apk package and run in your device.

  • Git 1.6.5 or later is required
  • Android Gradle plugin requires Java 17 to run
    git clone --recursive https://github.com/the3deer/android-3D-model-viewer.git
    cd android-3D-model-viewer
    export ANDROID_HOME=/home/$USER/Android/Sdk
    ./gradlew assembleDebug
    adb install -r app/build/outputs/apk/app-debug.apk
    adb shell am start -n org.andresoviedo.dddmodel2/org.the3deer.app.model3D.MainActivity

Open the application. You should see a menu. From there you can load models Once the model is rendered, pinch and rotate to see the 3D scene from another perspective.

Screenshots

Screenshot1 Screenshot2 Screenshot3 Screenshot4 Screenshot5 Screenshot6 cowboy.gif stormtrooper.gif Screenshot6

Emulator

You can run application in an emulator

// install some file provider (i.e. es file explorer)
adb devices -l
adb -s emulator-5554 install .\com.estrongs.android.pop_4.0.3.4-250_minAPI8(armeabi,x86)(nodpi).apk
// push some files to test file loading
adb -s emulator-5554 push .\app\src\main\assets\models /sdcard/download

Glasses

You may need one of this glasses to view models in 3D virtual reality.

Dependencies

In order to compile the application you must include this git submodule

git submodule add https://github.com/the3deer/android-3D-engine.git engine

Documentation

Working on it...

Acknowledgement

Licenses

The following copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

MIT License - Copyright (c) 2022 The 3Deer - https://github.com/the3deer
GNU LGPL v2.1 Copyright (c) 2001, 2002 Dipl. Ing. P. Szawlowski - STL Parser
MIT License - https://github.com/javagl/JglTF - GLTF Parser    
ISC License - Earcut - https://github.com/the3deer/earcut

Assets