The amazingness of something new...
I think everyone had this kind of feeling at some point.
When I started to learn programming about 6 years ago I started with the front-end stuff - just plain HTML and CSS. The first thing I created was a crazy web page full of rounded images and :hover opacity effects. Today when I read it it sounds quite dumb but that time it felt really awesome. In few years, the same feeling and a combination of random decisions led me to where I’m now.
Here I’m going to share a few words about the evolution of Augmented Reality as I observed it over the last years. This post is intended for beginners.
The Hype Cycle.
The hype cycle is a graphical representation of the life cycle stages a technology goes through from conception to maturity and widespread adoption.
Here we see that AR is currently shown at the bottom in the Trough of Disillusionment
“Interest wanes as experiments and implementations fail to deliver. Producers of the technology shake out or fail. Investment continues only if the surviving providers improve their products to the satisfaction of early adopters.”
Really, a popular app called Pokemon Go has blown up our minds on July 6, 2016 but for me, personally, it failed in long term.
For me it was interesting to look at how world accepts AR, because, at that moment, I have been already trying to do something in this ARea.
The first time I've seen opencv AR in action was a simple python script that was overlaying an image on a book cover.
After some research I decided to make the same thing on Android, so I setup NDK and rewrote everything in C++.
OpenCV is very powerful yet general tool, it gives you onDrawFrame() method and it's up to you to process each single frame.
So I tried to apply different algorithms like SURF, SIFT, ORB, KAZE, AKAZE and others to help me find a match between a target image and a frame bitmap.
And of course you have to write OpenGL code to make a single polygon show up on screen 🙃.
For some reason the same library on Android and on PC had different performance. It was much slower on a mobile device.
After struggling with OpenCV for some time I discovered mobile AR SDKs such as Vuforia, ARToolkit, Wikitude, etc.
There are many articles comparing all these SDKs, so I'm not going to go into details with it.
I tried Vuforia first, it was drastically better in tracking and performance, but it also had some limitations, it didn’t work without Internet connection and didn’t allow creating ImageTargets at runtime. And again, you had to render everything in pure OpenGL.
So I looked for alternatives and tried EasyAR first and then switched to Kudan. It was much more developer friendly than Vuforia and offered a simple rendering engine that suited my needs. I considered Wikitude which has a lot of features, but it didn’t offer a good pricing plan for an independent developer at that time.
It was iOS first, they managed to roll out ARKit, Apple’s AR platform.
Later ARCore was introduced.
They both offer plane detection, lighting and some 2d image tracking.
They both have a high level content rendering frameworks, SceneKit and SceneForm.
( And that's great cause you don't need to draw everything manually in opengl).
Another cool feature is GLTF support.
ArCore still falls behind ARKit in some aspects. (image tracking for example)
ArCore still supports not a big number of devices, while ArKit runs on pretty much every recent mobile device from Apple.
What is happening to all those other companies that have their own mobile AR SDKs? I think the only way here is not to compete but to integrate. I saw few of them (Vuforia and Wikitude) using ArKit / ArCore if it’s supported by the device and their own implementations if isn’t. This is how they can bring their features while not losing the game.
So wrapping up, now we as developers have the most powerful AR tools and it's easier than ever to get started and bring your ideas to life.
Thanks for reading! 😉
Feel free to share:
How you come to AR development?
What do you think of future of this technology?
Did you like reading such kind of post?