Get started with ARKit
Welcome to the absolute guide to ARKit! No matter what prior knowledge about 3D programming, Swift coding or iOS platform wisdom you have - this collection of lections will get you started!
The whole guide is structured in a couple of sections from which you can choose to dive into the topic of augmented reality coding. You can either start from the beginning and go till the end of just jump in where you feed comfortable with your knowledge. The following list shall show you the principle path through the guide if you want to do it all :)
This playground consists of a four sections which guide you through the very basics of the language. It will teach you what variables are, how you calculate, how you structure your code, how you can bundle values in collections and give you a rough idea what inheritance is and why you need to know about it - at least need to have heard about it. Do all the exercises in the "My Level..." pages and if you get stuck take a sneak peek into the "Level ..." pages where all the solutions are placed for you.
This section will give you a first overview of the iOS platform and how it works internally. It teaches you the most important things you need to know in the context of using iOS for coding with ARKit. So don't expect a full blown iOS tutorial here. It's really a crash course on what an UIViewController is, what UINavigationControllers are for, how you manage the navigation stack and how to deal with the basic UI controls like buttons, labels and textviews. You will even get a basic introduction into handling constraints - yey :D
Before getting into augmented reality coding we will first have a look at 3D coding itself. ARKit can be used with 2D and 3D content, but we will focus on dealing with 3D stuff through this whole guide. The three lessons in this section will show you how to deal with the SceneEditor, locate elements, use particle systems and deal with element hierarchies. Additionally you will have the chance to do everything you created in the SceneEditor in code also. This is important to see how you can create 3D elements and behaviour in code which is quite convenient for a lot of use cases.
Now it's time to get augmented :D This section covers four lessons from initialising an ARSession, placing 3D models on touch interaction, getting and using light information and dealing with errors the session might throw. As a nice round up we will create our own little AR measuring feature where we place two points (aka spheres) in the room and measure the distance between the two of them.
As we are fit for more AR we will dive deeper and use specific features from ARKit like horizontal and vertical plane detection. And as everything looks nicer and more realistic with cast shadows we will play around with them also. To get an idea of what occlusion means in terms of ARKit we will build our own hole in the floor and additionally reconstruct the Game of Thrones "Moon Door" - yes, we will! And after we managed holes we will do a portal - in form of the Tardis. In the very end of this section we will have a look at 3D text and how to place it properly in our augmented world.
The last missing bit is - Physics! In this section we will deal with gravity and a lot of things which are related to it like cleaning up forever falling boxes. We will implement a way to interact with already placed 3D elements in the scene, play sounds and let stuff roll around in our worlds.
Sure the new and hot stuff needs to be in here also :) Since the WWDC18 there are a couple of new features available in ARKit (currently just with Xcode10 and iOS 12 Beta). We will detect and track images and pin our own 3D models to it. It's even possible to save an augmented scene and load it again at a later point in time - just wow! And we will have a look at how we can combine tracking images and using videos as textures in the environment. A lot of real fun is waiting for you here - final boss style!
When you reached the end of this guide you should be able to do a lof of awesome things with ARKit on iOS. But be aware - this is just the start of a long journey :) Have a lot of fun with it!