A view for displaying AR experiences that augment the camera view with 3D SceneKit content.


class ARSCNView : SCNView


The ARSCNView class provides the easiest way to create augmented reality experiences that blend virtual 3D content with a device camera view of the real world. When you run the view's provided ARSession object:

  • The view automatically renders the live video feed from the device camera as the scene background.

  • The world coordinate system of the view's SceneKit scene directly responds to the AR world coordinate system established by the session configuration.

  • The view automatically moves its SceneKit camera to match the real-world movement of the device.

Because ARKit automatically matches SceneKit space to the real world, placing a virtual object such that it appears to maintain a real-world position requires only setting that object's SceneKit position appropriately. (See Providing 3D Virtual Content with SceneKit.)

You don't necessarily need to use the ARAnchor class to track positions of objects you add to the scene, but by implementing ARSCNViewDelegate methods, you can add SceneKit content to any anchors that are automatically detected by ARKit.


First Steps

Providing 3D Virtual Content with SceneKit

Use SceneKit to add realistic three-dimensional objects to your AR experience.

var session: ARSession

The AR session that manages motion tracking and camera image processing for the view's contents.

var scene: SCNScene

The SceneKit scene to be displayed in the view.

Responding to AR Updates

var delegate: ARSCNViewDelegate?

An object you provide to mediate synchronization of the view's AR scene information with SceneKit content.

protocol ARSCNViewDelegate

Methods you can implement to mediate the automatic synchronization of SceneKit content with an AR session.

Hit Testing for Real-World Surfaces

func hitTest(CGPoint, types: ARHitTestResult.ResultType) -> [ARHitTestResult]

Searches for real-world objects or AR anchors in the captured camera image corresponding to a point in the SceneKit view.

Mapping Content to Real-World Positions

func anchor(for: SCNNode) -> ARAnchor?

Returns the AR anchor associated with the specified SceneKit node, if any.

func node(for: ARAnchor) -> SCNNode?

Returns the SceneKit node associated with the specified AR anchor, if any.

func unprojectPoint(CGPoint, ontoPlane: simd_float4x4) -> simd_float3?

Returns the projection of a point from 2D view onto a plane in the 3D world space detected by ARKit.

Managing Scene Lighting

var automaticallyUpdatesLighting: Bool

A Boolean value that specifies whether ARKit creates and updates SceneKit lights in the view's scene.

Debugging AR Display

typealias ARSCNDebugOptions

Options for drawing overlay content to aid debugging of AR tracking in a SceneKit view.

See Also


class ARSKView

A view for displaying AR experiences that augment the camera view with 2D SpriteKit content.

Displaying an AR Experience with Metal

Build a custom AR view by rendering camera images and using position-tracking information to display overlay content.