I have an App idea that will use augmented reality. First thing is to find a decent SDK that will give great tracking and not try to tie me into some sort of subscription or cloud service.
A partial list of Augmented Reality SDKs available as of 26th September 2016
|OpenCV||Mobile, Desktop||C, C++||–||Free, BSD License||Open Source BSD, tracking looks slow. Need to prototype on iPhone 7|
|Kudan||Mobile, Unity3D||SLAM||£1000 per app per year subscription.||High upfront price. Requires constant subscription to keep apps alive. Impressive tracking.|
|CraftAR||Mobile, Unity3D||–||1990 euros||Cloud based?|
|ARToolkit||Desktop, Mobile, Unity3D||C, C# if using Unity, Java, Matlab||–||Open Source (LGPL v3)||Open Source (LGPL v3). Looks good. Can be used with OpenCV to improve camera for higher quality tracking.|
|VuForia||Mobile, Unity3D||Objective-C, C++, C#||SLAM||$499 one off||Great tracking. Can use environment tracking (SLAM) too.
This is looking the best route for Unity3D and a possible route if going native Objective-C/Swift.
|Unreal4AR||Cross platform, mobile||Blueprint, C||GPLv3, Unreal royalty fee||Powered by ARToolkit. If I need more advanced 3D in my AR this is a possible alternative to Unity3D.|
From the above table and reviewing many Youtube videos, I will probably look at going with VuForia and their $499 one off option. My app will use just one marker and doesn’t need cloud recognition or hundreds of markers (e.g. if I was to have one unique marker per product, like a QR code).
My app needs rock solid tracking, it can not slip, slide or jitter the tracked 3D elements so this is of the highest priority for me. Vuforia has environment tracking to aid in standard marker tracking. This is a big positive. Next I need to consider if I need to use a 3D engine or not.
Use a 3rd party 3D Engine or go native?
I have not done any SceneKit development as of yet so using a ready made engine like Unity3D or Unreal will reduce some of my development time, Unity3D also has a lot of plugin support for AR.
I need to lay out what a third party 3D engine can bring to my AR app instead of trying to stay native with Objective-C / Swift + SceneKit and spending a couple of weeks reading one of Ray Wenderlich books on the matter. Actually, that book sounds rather good! Anyway….
Pros for using an engine
- Cross platform delivery, if my app sells (which it will!) then porting to say Android and others should be much faster.
- Advanced 3D features: lighting, animation, effects, HMD inclusion, normal mapping etc
- WYSIWYG 3D, less code to get the basics done in OpenGL / SceneKit
Cons for using an engine
- Bloats the install size, slower launch time.
- Reliant on another 3rd party product, additional cost, bugs, complexity.
- Could slow down tracking speed due to overhead.
If my new app idea turns out to be a winner then I would quickly need to port it to other platforms and add additional features. The use of a cross platform 3D engine would significantly speed that up. So I will go with Unity3D + VuForia and target iOS.
My research does not stop here. I now have to read every article on VuForia (especially their licensing terms) and get a good list of resources to help plan out my specification. My other app Bookmark Reminder Pro will help collate all the websites, articles and forum posts together during this phase.