How to Create an AR App – Augmented Reality Tutorial

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.

Girl at computer with AR-like overlay

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).

Example of plane detection in AR

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.

AR retail furniture app

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.

Screenshot of a space shooter AR game

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

AR Foundation

ARCore

ARKit

EasyAR

AR.js

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.

Did you come across any errors in this tutorial? Please let us know by completing this form and we’ll look into it!

FREE COURSES
Python Blog Image

FINAL DAYS: Unlock coding courses in Unity, Godot, Unreal, Python and more.