How do I get started in AR development?
So you've seen all the cool things you can do with AR:
- Measure anything using only your phone's camera.
- Preview furniture in your room before buying.
- Play a game where you're shooting zombies from a helicopter.
- Or take care of a pet dragon.
And you want to start developing AR apps for yourself. Problem is, how do you get started?
Maybe you're new to programming, and you've been told a bunch of things:
"Learn Python."
"Wait no, learn Unity and C#."
"If you have a Mac, try AR Kit!"
"Maybe Web AR and JavaScript is up your alley."
Or maybe you know how to program, but you want to get a sense of the AR landscape. You want to make an informed choice about what to learn, but there are so many darn choices:
"Am I making the right choice? Should I learn something else?"
And even more importantly, once you make a choice:
"What's the best online course that'll give me a solid foundation using this technology?"
The fix?
My answer to those 2 questions is to:
- Decide on the platform that you'd like to build augmented reality experiences for.
- Decide on the deliverable that you'd like to build on that platform.
Let me explain.
Platform
As of May 2021, AR content is generally split between 4 platforms:
- Native mobile apps
- Social media filters
- Mobile web apps
- Wearables (such as AR glasses)
Choose a platform, and the standard technology within that platform will be the thing you should study.
1. Native mobile apps
If you're starting out, use Unity, C# (Unity's scripting language), and AR Foundation (Unity's AR-specific package).
Unity allows you to build cross-platform apps for iOS and Android, while AR Foundation delegates the actual augmented reality behavior to AR Kit (for iOS) and AR Core (for Android). So you're actually using Apple's and Google's tech under the hood.
To learn AR Foundation, Unity doesn't seem to have an official set of tutorials. Rather, they provide arfoundation-samples
and arfoundation-demos
for examples of how to use the software.
However, if you're new to coding, it may help to go through a Unity course on Udemy until you're comfortable figuring things out on your own.
2. Social media filters
If you know you want to create AR filters for social media, then choose either Spark AR for Facebook/Instagram, or Lens Studio for Snapchat.
3. Mobile web apps
If you want to build mobile websites that have AR content, start with A-Frame.
A-Frame provides a framework for your knowledge to hang onto, and from there, you can explore the ecosystem of related technologies (Three.js, AR.js, Mediapipe, WebXR) as you need them.
On the other hand, if all you need is an AR model viewer for your e-commerce store or website, then look into Google's model-viewer
.
4. Wearables
Frankly, I don't know the best technology to learn for wearables, since AR glasses are really expensive. 😅
For example, a HoloLens 2 is a whopping $3500. If you're a beginner, it might be best to start with a cheaper platform (like native mobile apps) until you know that you actually like this stuff.
Edit: Reddit user /u/jallakim makes apps for HoloLens 2, and uses Unity with C# and MRTK. So that would be the recommended path.
5. Other
If none of the options above work for you (or if you're curious), you can also check out my GitHub readme, which describes other technologies.
Deliverable
Once you've selected your platform, the next thing is to decide on a project that you want to build.
Remember: augmented reality is about augmenting and improving the physical world. Don't limit yourself to 2D screens – they're just a temporary vehicle for AR until we have mass-produced AR glasses.
What experiences could you imagine in 3D space?
Try to have a firm idea of your desired end result. The firmer your idea, the easier it'll be to focus on the "how" of bringing the idea to life.
For example – what if you could place a pool table on the ground, and play pool virtually? A pool table in your pocket.
That feels concrete enough for you to start researching how to build it with your selected technology. And it's way more interesting than following a tutorial, and building something you don't care about.
Conclusion
So that's my advice to you. Choose a platform; choose a deliverable; figure out how to make it happen.
And hey, maybe I'll take up that AR Pool Table idea...