Do you want to make apps like Pokémon Go or Google Lens?
Augmented reality may be the new technology kid on the block, but it is already making huge waves in the development industry. From games to informational apps to job training, AR is being used across a variety of industries to enhance how we interact with the real world.
In this article, we’re going to explore just how you can make your own AR application. We’ll explore not only what AR is, but get you started with expanding your development skills and technical know-how for this technology.
Let’s dive in and explore the world of augmented reality.
Understanding Augmented Reality
Before learning the development and coding parts of augmented reality, let’s talk a bit about what augmented reality is.
In short, augmented reality is a technology that allows us to place virtual objects in the real world, and subsequently view these objects with a device’s camera in real-time.
Due to the simplicity of just needing a camera, AR can be used with a number of devices, including smartphones (as mentioned earlier). This allows for a variety of applications, such as placing virtual furniture in a room, displaying textual information about a recognized object, letting you try on new hairstyles virtually, and beyond.
This being said, there are a few important concepts to understand in regards to how this technology works and actually “sees” things in the real world. There are different methods of detecting real-world objects, and each has specific nuances in terms of how you develop your application.
Image Targets
Image targets are one of the earliest forms by which augmented reality worked. Through this method, you manually connect a specific image in the program with a specific virtual object. While these days these images can be about anything (within reason of complexity), you’ll most often see black & white images that resemble something akin to QR codes.
In the real world, then, you print out these images and place them in front of the camera. From here, the camera is able to detect things like size, position, and orientation of the image. The app then uses this information of the image target to render the virtual object, even to the point that it can track when you move the paper your image target is printed on.
Plane Detection
The next step up from image targets is plane detection. With this form of detection, there is no need to print any real-world images to use.
Instead, the technology relies on scanning your environment for feature points with your camera. These feature points usually are relying on a high contrast between objects in the space and the surrounding planes. Through this, the app is able to calculate flat surfaces such as floors, tables, walls, and similar.
In addition, all these feature points are saved to memory in your device (temporarily at least). This allows you to move the camera around an area, face away from your feature points, and return back to your feature points with rendered virtual objects still in place.
Depth Sensor
The final way real objects can be detected is with depth sensors. Unlike the previous methods, this one does actually require a pretty high-end smartphone, as the technology here is a lot newer.
In this case, the technology simply uses newer cameras’ built-in depth sensor technology to see how far away objects are from each other. This allows flat surfaces to be detected almost instantly. Additionally, this technology can also better detect when a virtual object would render behind a real-world object (a concept known as occlusion).
AR Development SDKs
We have a decent understanding of AR now, so the next step is to obviously figure out how to actually create an AR application.
Fortunately, despite augmented reality being a newer technology, there are already helpful tools that will enable us to quickly gain access to all the things we need to use AR technology.
ARKit
If you’re creating AR apps just for iOS, ARKit is generally the first go-to in terms of development. ARKit is Apple’s AR SDK made specifically to work with their devices. The kit offers a ton of abilities and features, such as object recognition, motion tracking, environmental lighting, plane detection, and more.
ARCore
Whereas ARKit is Apple’s solution, ARCore is unsurprisingly Android’s AR SDK solution. Besides being suited to creating AR apps for Android devices, ARCore offers features including plane detection, image tracking, motion tracking, light estimation, and other usual standard features found in other SDKs.
EasyAR
Another AR solution to consider is EasyAR. EasyAR is its own, standalone SDK that works both for Android and for the Cloud. While EasyAR comes with many standard features, its main strength is in its spatial mapping features and its image recognition features. Due to its specific features, it’s often a choice for lower-end phones where other SDKs might not be compatible.
AR.js
If you’re considering making AR apps that are meant to be put on the web, AR.js is a top choice to check out. AR.js is a library based on JavaScript that allows you to access a device’s camera through the web. While its features are limited to keep it lightweight for the web, it is capable of image and marker tracking, as well as any location-based tracking.
Unity & AR Foundation
The last option we want to discuss is Unity & its AR Foundation solution.
For those who don’t know, Unity is a popular game engine that offers tons of features useful to creating video games. Unity is able to handle aspects like physics, collision detection, rendering, and more automatically – meaning you can focus on the important parts of your project.
Because of its feature, Unity has also become one of the top tools used to create augmented reality apps in general, including the ever-popular Pokémon GO.
When it comes to augmented reality, Unity created its own API: AR Foundation. AR Foundation is a package you can add to any project. With this package’s API, you can develop for ARKit and ARCore at the same time. While there are a few limitations in terms of features, this does mean you can develop for both iOS and Android devices at the same time. This means you only ever need one project for your app to be cross-platform.
How to Make an AR App
Finally, let’s talk about how to create an AR app and get you settled with some tutorials.
Which Development Environment to use for AR?
Now, it is in our humble opinion that learning to develop AR apps with Unity is the best way to start. Not only does Unity come with powerful features you’ll need, but every SDK mentioned has compatible package plugins that allow you to develop with that SDK in Unity. As such, you aren’t just limited to AR Foundation if you’d rather develop for something like ARCore.
With this in mind, we’ll be providing tutorials mostly for Unity in this case, but showcasing each different SDK so you can choose which you want to learn.
Of course, you will need some experience using Unity and the C# programming language (which is the language that Unity uses). There are a large number of resources to learn this online, but we have included some bonus tutorials for this aspect as well.
Device Compatibility
Before jumping into tutorials, you should also consider your own device’s compatibility. While AR.js generally doesn’t require anything special since it is rendered through the web, ARCore, ARKit, and AR Foundation, by association, do require specific devices for testing. We recommend checking out the supported device lists below to make sure your mobile device is compatible.
Additionally, we do want to note that a Mac is required to fully build an iOS AR app that can be distributed. As such, if you’re a PC user, you’re going to have to settle for just building to Android.
Tutorials
Finally, let’s jump into the tutorials below where you can start learning Unity and, in our opinion, the best resources for developing AR apps.
Unity
- Unity Game Development Mini-Degree by Zenva
- Unity 101 by Zenva
- How to Make a Game – Unity Beginner Tutorial by Jason Weimann
- How to program in C# by Brackeys
AR Foundation
- AR Foundation Documentation
- Augmented Reality Mini-Degree by Zenva
- Augmented Reality 101 by Zenva
- Beginners guide to UNITY AR Foundation by Mohd Hamza
- Getting Started With ARFoundation in Unity (ARKit, ARCore) – by The Unity Workbench
ARCore
- ARCore Documentation
- Intro to ARCore by Zenva
- Unity & ARCore by Dinesh Punni
- ARCore Tutorials – Practical Augmented Reality Course by Augmented Startups
- Build AR apps in Android Studio using Sceneform SDK by Hey! Let’s Code
ARKit
- ARKit Documentation
- Intro to ARKit by Zenva
- Create Your First AR App using RealityKit by Reality School
- ARKit Unity Tutorial – Build a Realistic Construction Site by Parth Anand
- ARKit Tutorial – Create an AR Shopping Experience with ConfigWise by Rebeloper – Rebel Developer
EasyAR
- EasyAR Documentation
- Marker-Based AR Apps for Beginners with EasyAR by Zenva
- Easy AR Tutorials by Render Island
- AR Tutorial: Image Tracking with EasyAR by Third Aurora
- How To Markerless Augmented Reality With Unity 3D And EasyAR by Denys Gamers Tutorial
AR.js
- AR.js Documentation
- Marker-Based Games with AR.js by Zenva
- Location Based Augmented Reality Using ARjs by AllInReality
- Tutorial: augmented reality web app using AR.js & A-Frame by Alvin Tang
Parting Words
Although building an augmented reality app is a bit intimidating, it is extremely possible to learn. While we wouldn’t recommend it for someone who has never coded before, it can be a beginner-friendly experience if you keep your application simple enough.
However, taking the time to learn AR can only be a benefit. More and more industries are adopting it every day for day-to-day business practices. Thus, the demand for AR skills and apps is only going to grow. Plus, with new AR technology coming out every year, there is a lot of unexplored territory when it comes to AR.
Whatever your goals, we hope you feel ready to start building AR apps of your very own.
BUILD GAMES
FINAL DAYS: Unlock 250+ coding courses, guided learning paths, help from expert mentors, and more.