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

# ARObjectScanningConfiguration

A configuration that recognizes objects and collects high-fidelity data about specific objects using the rear-facing camera.

```
class ARObjectScanningConfiguration
```

## Overview

To create an app that recognizes objects in the physical environment, first you scan them during development using `ARObjectScanningConfiguration`. After you’ve scanned an object, call [`createReferenceObject(transform:center:extent:completionHandler:)`](/documentation/ARKit/ARSession/createReferenceObject(transform:center:extent:completionHandler:)) to turn it into an [`ARReferenceObject`](/documentation/ARKit/ARReferenceObject) that you can use to detect it again at run-time. When users run your app, you ask ARKit to look for your scanned obects by running a world tracking configuration and assigning reference objects to its [`detectionObjects`](/documentation/ARKit/ARWorldTrackingConfiguration/detectionObjects) property.

> Important:
> `ARObjectScanningConfiguration` is for use only in development scenarios. Because the high-fidelity spatial mapping required by object scanning has a high performance and energy cost, many ARKit features are disabled that aren’t required for object scanning.

## Topics

### Creating a Configuration

[`init()`](/documentation/ARKit/ARObjectScanningConfiguration/init())

Initializes a new object scanning configuration.

[`new`](/documentation/ARKit/ARObjectScanningConfiguration/new)

Creates a new object scanning configuration.

### Enabling Plane Detection

[`planeDetection`](/documentation/ARKit/ARObjectScanningConfiguration/planeDetection)

A value specifying whether and how the session attempts to automatically detect flat surfaces in the camera-captured image.

[`ARWorldTrackingConfiguration.PlaneDetection`](/documentation/ARKit/ARWorldTrackingConfiguration/PlaneDetection-swift.struct)

Options for whether and how the framework detects flat surfaces in captured images.

### Managing Device Camera Behavior

[`isAutoFocusEnabled`](/documentation/ARKit/ARObjectScanningConfiguration/isAutoFocusEnabled)

A Boolean value that determines whether the device camera uses fixed focus or autofocus behavior.



---

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)