ARKit 911 — A full list of AR classes

Andy Jazz
Mac O’Clock
Published in
4 min readJul 26, 2020

This short story demonstrates you a full list of classes, structs, enums and protocols that can be found in ARKit 5.0. All classes written in bold are parent classes inheriting from general NSObject class. Child classes are marked with bullets and indented by four spaces. All structures and enumerations nested in classes are written in italic here and indented by four spaces too. Parent classes have links to developer documentation.

A representation of inheritance looks like this here:

⦿ class Parent
⦿ class Child

Nested structs and enums are depicted like this:

⦿ class ForNestedContent
struct Nested01
enum Nested02

And protocols are represented this way:

❂ Protocol

List of classes, structs and enums in ARKit 5.0

⦿ class ARAnchor    ⦿ class ARAppClipCodeAnchor
var radius
var url
var urlDecodingState
⦿ class ARBodyAnchor
var estimatedScaleFactor
var isTracked
var skeleton
⦿ class AREnvironmentProbeAnchor
var environmentTexture
var extent
⦿ class ARFaceAnchor
var blendShapes
var geometry
var isTracked
var leftEyeTransform
var lookAtPoint
var rightEyeTransform
⧉ struct BlendShapeLocation
static let browDownLeft
static let browDownRight
static let browInnerUp
static let browOuterUpLeft
static let browOuterUpRight
static let cheekPuff
static let cheekSquintLeft
static let cheekSquintRight
static let eyeBlinkLeft
static let eyeBlinkRight
static let eyeLookDownLeft
static let eyeLookDownRight
static let eyeLookInLeft
static let eyeLookInRight
static let eyeLookOutLeft
static let eyeLookOutRight
static let eyeLookUpLeft
static let eyeLookUpRight
static let eyeSquintLeft
static let eyeSquintRight
static let eyeWideLeft
static let eyeWideRight
static let jawForward
static let jawLeft
static let jawOpen
static let jawRight
static let mouthClose
static let mouthDimpleLeft
static let mouthDimpleRight
static let mouthFrownLeft
static let mouthFrownRight
static let mouthFunnel
static let mouthLeft
static let mouthLowerDownLeft
static let mouthLowerDownRight
static let mouthPressLeft
static let mouthPressRight
static let mouthPucker
static let mouthRight
static let mouthRollLower
static let mouthRollUpper
static let mouthShrugLower
static let mouthShrugUpper
static let mouthSmileLeft
static let mouthSmileRight
static let mouthStretchLeft
static let mouthStretchRight
static let mouthUpperUpLeft
static let mouthUpperUpRight
static let noseSneerLeft
static let noseSneerRight
static let tongueOut
⦿ class ARGeoAnchor
@nonobjc var altitude
var altitudeSource
var coordinate
var isTracked
enum AltitudeSource
case coarse
case precise
case unknown
case userDefined
⦿ class ARImageAnchor
var estimatedScaleFactor
var isTracked
var referenceImage
var name
var physicalSize
var resourceGroupName
⦿ class ARMeshAnchor
var geometry
var classification
var faces
var normals
var vertices
⦿ class ARObjectAnchor
var referenceObject
var center
var extent
var name
var rawFeaturePoints
var resourceGroupName
var scale
⦿ class ARParticipantAnchor
var sessionIdentifier
var transform
⦿ class ARPlaneAnchor
var alignment
var center
var classification
var extent
var geometry
⨳ enum Alignment
case horizontal
case vertical
enum Classification
case ceiling
case door
case floor
case none(ARPlaneAnchor.Classification.Status)
case seat
case table
case wall
case window
enum Status
case notAvailable
case undetermined
case unknown
⦿ class ARBody2D⦿ class ARCamera
@frozen enum TrackingState
enum Reason
⦿ class ARCoachingOverlayView
enum Goal
enum ARConfidenceLevel⦿ class ARConfiguration
⦿
class ARBodyTrackingConfiguration
⦿ class ARFaceTrackingConfiguration
⦿ class ARGeoTrackingConfiguration
⦿ class ARImageTrackingConfiguration
⦿ class ARObjectScanningConfiguration
⦿ class AROrientationTrackingConfiguration
⦿ class ARPositionalTrackingConfiguration
⦿ class ARWorldTrackingConfiguration
enum EnvironmentTexturing
⧉ struct FrameSemantics
⧉ struct PlaneDetection
⧉ struct SceneReconstruction
⦿ class VideoFormat
enum WorldAlignment
⦿ class ARDepthData⧉ struct ARError
enum Code
case unsupportedConfiguration = 100

case sensorUnavailable = 101
case sensorFailed = 102
case cameraUnauthorized = 103
case microphoneUnauthorized = 104
case locationUnauthorized = 105
case worldTrackingFailed = 200
case geoTrackingNotAvailableAtLocation = 201
case geoTrackingFailed = 202
case invalidReferenceImage = 300
case invalidReferenceObject = 301
case invalidWorldMap = 302
case invalidConfiguration = 303
case collaborationDataUnavailable = 304
// Deprecated
case insufficientFeatures = 400
case objectMergeFailed = 401
case fileIOFailed = 500
case requestFailed = 501
public static var invalidCollaborationData
// iOS 13.2
⦿ class ARFaceGeometry⦿ class ARFrame
enum SegmentationClass
enum WorldMappingStatus
⦿ class ARGeometryElement enum ARGeometryPrimitiveType⦿ class ARGeometrySource⦿ class ARGeoTrackingStatus
enum Accuracy
enum State
enum StateReason
⦿ class ARHitTestResult // Must be deprecated in iOS 14,
// but still working in iOS 15
⦿ class ARLightEstimate
⦿
class ARDirectionalLightEstimate
⦿ class ARMatteGenerator
enum Resolution
enum ARMeshClassification⦿ class ARMeshGeometry⦿ class ARPlaneGeometry⦿ class ARPointCloud⦿ class ARQuickLookPreviewItem⦿ class ARRaycastQuery
enum Target
enum TargetAlignment
⦿ class ARRaycastResult⦿ class ARReferenceImage⦿ class ARReferenceObject⦿ class ARSession
⦿ class CollaborationData
⧉ struct RunOptions
⦿ class ARSkeleton
⦿
class ARSkeleton2D
⧉ struct JointName
⦿ class ARSkeleton3D
⧉ struct JointName
⦿ class ARSkeletonDefinition typealias ARSCNDebugOptions⦿ class ARSCNFaceGeometry⦿ class ARSCNPlaneGeometry⦿ class ARSCNView // SceneKit view⦿ class ARSKView // SpriteKit view⦿ class ARTrackedRaycast⦿ class ARView // RealityKit view
⦿ class ARViewBase
struct Environment
⧉ struct Background
⧉ struct SceneUnderstanding
⧉ struct ImageBasedLight
enum Reverb
enum CameraMode
⧉ struct DebugOptions
⦿
class Scene
⦿
class ARSession
⧉ struct RenderOptions
⦿ class ARWorldMap

To check all the available classes, structs and enums in Apple ARKit use the following path on macOS with Xcode installed:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ARKit.framework/Headers

List of ARKit 5.0 protocols

It would be sad if ARKit didn’t have protocols. There are not so many protocols in this module, but those that exist are real workhorses.

❂ protocol ARAnchorCopying❂ protocol ARCoachingOverlayViewDelegate❂ protocol ARSCNViewDelegate❂ protocol ARSessionDelegate❂ protocol ARSessionObserver❂ protocol ARSessionProviding❂ protocol ARSKViewDelegate❂ protocol ARTrackable

As an example, I want to show you how ARTrackable protocol is used. Five anchor types inherit from ARAnchor parent class but also conform to ARTrackable protocol. We need this protocol when ARKit tracks changes to position and orientation for moving real-world objects.

public protocol ARTrackable: NSObjectProtocol {
var isTracked: Bool { get }
}
open class ARAppClipCodeAnchor: ARAnchor, ARTrackable { ... }
open class
ARBodyAnchor: ARAnchor, ARTrackable { ... }
open class ARFaceAnchor: ARAnchor, ARTrackable { ... }
open class ARGeoAnchor: ARAnchor, ARTrackable { ... }
open class ARImageAnchor: ARAnchor, ARTrackable { ... }

That’s all for now.

If this post is useful for you, please press the Clap button and hold it.

¡Hasta la vista!

--

--