Skip to content
/ yarrar Public

A cross-platform Augmented Reality library written in C++11

License

Notifications You must be signed in to change notification settings

ndob/yarrar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

libyarrar Build Status

A cross-platform Augmented Reality library written in C++11.

Strongly WIP, so don't expect to use this for anything real at the moment. :)

Overview

Current features

  • Supported platforms:
    • Linux
    • Windows
    • Android
    • iOS
    • Unity3D-plugin (Windows, Linux and Android). Unity 5.3 required.
  • Extendable pipeline architechture (see Architechture)
  • Marker tracking: multiple markers
  • OpenGL-rendering: only simple 3D-shapes supported for the moment
  • Support for sensor data:
    • Android: gyroscope, rotation vector (virtual sensor)

Roadmap

  • Support for more trackers
    • SLAM
    • Edge-based
    • Face
  • Platform support for OSX (native and Unity3D-plugin)
  • Platform support for iOS-Unity3D-plugin
  • Improved marker detection / different marker data-fields
  • Support for a proper rendering-library (Ogre3D or OpenSceneGraph)

Architechture

Yarrar is modeled as a pipeline, which consists of four stages. Each stage has one or more stage-handlers, which process the data from previous stage and pass it forward to next stage. Pipeline configuration is done with JSON-based configuration file (see Pipeline Configuration for details). Pipeline stages are:

  1. Dataprovider: Sensor data handling (ie. RGB-camera, depth-camera, accelerometer, gyroscope)
  2. Tracker: Pose tracking (ie. using markers, SLAM)
  3. SensorFusion: Pose accuracy improvement
  4. Render: Rendering the 3D-models on top of camera image

Image of Pipeline

Limitations in current implementation:

  • Only one dataprovider with RGB_CAMERA_FLAG set is supported
  • SensorFusion-stage is WIP

Dependencies

Yarrar depends heavily on C++11-features, so a fairly recent compiler is needed.

Library dependencies per compilation target:

Platform OpenCV 3.0 json11 eigen GLEW GLFW
Linux X X X X X
Windows X X X X X
Android X X X
iOS X X X
Unity3D (Windows) X X *
Unity3D (Android) X X *

* Currently not needed (doesn't support sensor fusion), but will become a dependency in the future.

Compiling and running tests

See Compiling for detailed instructions

Quickstart

Compile and run tests on Linux:

mkdir build
cd build
cmake ..
make
make test ARGS="-V"

Compiling examples

Android

  1. Build AAR (see Compiling).
  2. If you built it with build_aar.sh-script, .aar gets automatically copied to example/android/app/libs.
  3. Open and build example/android with gradle or Android studio.

iOS

  1. Build Yarrar.framework (see Compiling).
  2. Copy Yarrar.framework to example/ios-directory.
  3. Open and build example/ios/yarrarexample.xcodeproj with Xcode.

Windows/Linux

  1. See Quickstart. It will also compile example/desktop_webcam-example by default.

Unity

  1. Compile yarrar.unitypackage (see Compiling).
  2. Open up example/unity in Unity Editor. Basic structure should be set up.
Known issues (Unity)
  • When importing yarrar.unitypackage to Unity on Linux following error might appear:

Multiple plugins with the same name 'libyarrar' (found at 'Assets/yarrar/Plugins/x86_64/libyarrar.so' and 'Assets/yarrar/Plugins/Android/libyarrar.so'). That means one or more plugins are set to be compatible with Editor. Only one plugin at the time can be used by Editor.*

Fix this by deleting yarryar/Plugins/x86_64 if you wish to deploy to Android or yarryar/Plugins/Android if you wish to deploy to Linux.

  • Deploying to Android might fail, if you don't set correct architecture for .so-library. This can be done by selecting libyarrar.so-file from Project-view and setting CPU to ARMv7 from Inspector-window.

About

A cross-platform Augmented Reality library written in C++11

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published