ARKit 911 — A full list of AR classes
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!