Learning to code for Augmented Reality

brick
brick
Jul 25, 2017 · 4 min read

In my late thirties I presented myself with a challenge: learn to code. Not to become a programmer per se, but to better understand the relationship between human/computer interaction and the language that controls it. Along the way I have developed a niche expertise in 3D programming. It turns out knowledge of 3D is incredibly relevant for augmented reality! I am a visual tactile tangible learner. I like props and the ability to hold some representation of a concept in my hand. I think there are many people like me who learn best when we can see, hold, touch, feel and interact. Coding presents a unique challenge to us because it is largely linear, sequential, and text driven. As coding environments mature, they become better at incorporating visual representations of code. I am an educator and filmmaker and my expertise lies in how to teach and using media to support that learning. Part of my motivation in learning to code is learning how to teach coding. I believe augmented reality and 3D presents a great learning landscape for design focused visual/spatial/tactile learners.

I have been enrolled in an iOS certificate course at University of Washington for the past 6 months. I am in my third and final module. The course has been a great foundation for modern app architecture using Apple’s new Swift (Now in 4.0 and getting more stable with each release) Many in the course have a computer science background and years of experience coding. They are topping off where I am filling up my tank. Learning Swift has been like learning Italian. Both made me feel stupid and unable to articulate complex ideas initially. To extend the metaphor, building my first To-do list app that used Core Data was the equivalent of ordering cheese in a supermarket in Italy. That’s confusing.

Early on in my journey, I was drawn to the lines of code that produced 3D visuals on screen. It used a camera based metaphor that was accessible to me with my filmmaking background. I became fascinated by adding interaction to the elements I created on screen. The UW course was focused on the building blocks of Apple’s Swift language and use of Xcode. I have gained a fluency in reading code and, crucially, learning between good and bad (lazy) practice and how to debug more effectively. There are many paths up the mountain to creating a piece of software and much of what’s out there offers a dubious trail.

I was very excited when Apple announced ARkit, their Augmented Reality API. I was amazed to learn that it was built on the 3D framework called SceneKit I had been teaching myself! The result is that I could port existing projects into XCode 9 beta and start running my iOS 11 apps in an AR environment on my phone in minutes. I am fascinated by the potential that AR holds and it is early days with a lot of examples that showing the novelty of AR versus the utility of AR. I am confident that novelty will give way to utility and we will adopt it quickly.

ARkit for Apple feels like a massive multiyear on boarding effort with 1 billion iOS users. Only a fraction of this user base will be able to use AR when it launches in the fall, but a fraction of billion is still hundreds of millions of people who can evangelize the technology. It will give the platform time to mature as developers work to figure out the best and most effective uses of AR.

In these nascent days of augmented reality development, it has been exciting for me to follow and contribute my projects. I have a particular interest in how to manipulate and interact with 3D objects in an AR environment. To this end I have been developing a simple example that allows me to demonstrate my efforts. Currently I have an app that allows me to place 3D objects in space and then move them around in X,Y,Z space with both position and rotation.

The example below shows the latest version of what I am working on. This example is really a testament to the tools Apple has created to help me develop. They are stable, intuitive and just work. My development and learning as a programmer has really accelerated in the past couple months and I am excited to share it with you.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade