GithubHelp home page GithubHelp logo

pokey909 / yarrar Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ndob/yarrar

0.0 0.0 0.0 6.61 MB

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

License: MIT License

CMake 6.63% PowerShell 2.56% Java 6.42% C++ 65.82% Objective-C 2.04% C# 9.79% Shell 3.65% Objective-C++ 2.83% Batchfile 0.24%

yarrar's Introduction

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.

yarrar's People

Contributors

ndob avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.