<!--
{
  "availability" : [
    "iOS: 11.0.0 - 26.0.0",
    "iPadOS: 11.0.0 - 26.0.0",
    "macCatalyst: 13.1.0 - 26.0.0",
    "visionOS: 1.0.0 - 1.0.0"
  ],
  "documentType" : "symbol",
  "framework" : "ARKit",
  "identifier" : "/documentation/ARKit/ARSCNView",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "ARKit"
    ],
    "preciseIdentifier" : "c:objc(cs)ARSCNView"
  },
  "title" : "ARSCNView"
}
-->

# ARSCNView

A view that blends virtual 3D content from SceneKit into your augmented reality experience.

```
class ARSCNView
```

## Overview> Important: SceneKit is deprecated, use <doc://com.apple.documentation/documentation/RealityKit> instead.
> For more information, see WWDC25 session 288: [Bring your SceneKit projects to RealityKit](https://developer.apple.com/videos/play/wwdc2025/288/).

The [`ARSCNView`](/documentation/ARKit/ARSCNView) class provides an easy 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`](/documentation/ARKit/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.

ARKit automatically matches SceneKit’s coordinate space to the real world, so after you place your app’s virtual content, it maintains the illusion of resting in the real-world as the user moves the device. See [Providing 3D Virtual Content with SceneKit](/documentation/ARKit/providing-3d-virtual-content-with-scenekit).

You don’t necessarily need to use the [`ARAnchor`](/documentation/ARKit/ARAnchor) class to track positions of objects you add to the scene, but by implementing [`ARSCNViewDelegate`](/documentation/ARKit/ARSCNViewDelegate) methods, you can add SceneKit content to any anchors that are automatically detected by ARKit.

Because ARKit requires Metal, use only Metal features of SceneKit. For example:

- This class supports only <doc://com.apple.documentation/documentation/SceneKit/SCNProgram> instances with Metal Shading Language code.
- If you set the <doc://com.apple.documentation/documentation/SceneKit/SCNView/Option/preferredRenderingAPI> property to <doc://com.apple.documentation/documentation/SceneKit/SCNRenderingAPI/openGLES2>, the framework reverts the value to  <doc://com.apple.documentation/documentation/SceneKit/SCNRenderingAPI/metal>.

## Topics

### Essentials

[Providing 3D Virtual Content with SceneKit](/documentation/ARKit/providing-3d-virtual-content-with-scenekit)

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

[`session`](/documentation/ARKit/ARSCNView/session)

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

[`scene`](/documentation/ARKit/ARSCNView/scene)

The SceneKit scene to be displayed in the view.

### Responding to AR Updates

[`delegate`](/documentation/ARKit/ARSCNView/delegate)

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

[`ARSCNViewDelegate`](/documentation/ARKit/ARSCNViewDelegate)

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

### Finding Real-World Surfaces

[`hitTest(_:types:)`](/documentation/ARKit/ARSCNView/hitTest(_:types:))

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

[`raycastQuery(from:allowing:alignment:)`](/documentation/ARKit/ARSCNView/raycastQuery(from:allowing:alignment:))

Creates a raycast query that originates from a point on the view, aligned with the center of the camera’s field of view.

### Mapping Content to Real-World Positions

[`anchor(for:)`](/documentation/ARKit/ARSCNView/anchor(for:))

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

[`node(for:)`](/documentation/ARKit/ARSCNView/node(for:))

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

[`unprojectPoint(_:ontoPlane:)`](/documentation/ARKit/ARSCNView/unprojectPoint(_:ontoPlane:))

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

[`unprojectPoint:ontoPlaneWithTransform:`](/documentation/ARKit/ARSCNView/unprojectPoint:ontoPlaneWithTransform:)

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

### Managing Lighting

[`automaticallyUpdatesLighting`](/documentation/ARKit/ARSCNView/automaticallyUpdatesLighting)

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

### Debugging AR Display

[`ARSCNDebugOptions`](/documentation/ARKit/ARSCNDebugOptions)

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

### Managing Rendering Effects

[`rendersMotionBlur`](/documentation/ARKit/ARSCNView/rendersMotionBlur)

Determines whether the view renders motion blur.

[`rendersCameraGrain`](/documentation/ARKit/ARSCNView/rendersCameraGrain)

A flag that determines whether SceneKit applies image noise characteristics to your app’s virtual content.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)