<!--
{
  "availability" : [
    "iOS: 17.0.0 -",
    "iPadOS: 17.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "RealityKit",
  "identifier" : "/documentation/RealityKit/ObjectCaptureSession",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "RealityKit",
      "SwiftUI"
    ],
    "preciseIdentifier" : "s:19_RealityKit_SwiftUI20ObjectCaptureSessionC"
  },
  "title" : "ObjectCaptureSession"
}
-->

# ObjectCaptureSession

A session object that monitors and controls image capture for photogrammetry.

```
@MainActor class ObjectCaptureSession
```

## Overview

An [`ObjectCaptureSession`](/documentation/RealityKit/ObjectCaptureSession) is used together with an [`ObjectCaptureView`](/documentation/RealityKit/ObjectCaptureView) to
present a view that assists in capturing images of an object for reconstruction of a 3D model by using
a [`PhotogrammetrySession`](/documentation/RealityKit/PhotogrammetrySession).

A capture session contains functions for starting and advancing the capture session through a state machine that
controls the image capture process. Your app can also observe several properties of the capture session to determine
the current state of the capture process.

Once a session enters the `.completed` state, your app can transfer the images to a Mac or use them
locally on the iOS device for use in object reconstruction using [`PhotogrammetrySession`](/documentation/RealityKit/PhotogrammetrySession).
Model reconstruction is a separate phase which this session does not directly monitor or control.

## Topics

### Creating a session

[`init()`](/documentation/RealityKit/ObjectCaptureSession/init())

Creates a new object capture session.

### Checking availability

[`isSupported`](/documentation/RealityKit/ObjectCaptureSession/isSupported)

A Boolean that indicates whether the current device supports object capture sessions.

### Configuring a session

[`feedback`](/documentation/RealityKit/ObjectCaptureSession/feedback-swift.property)

The current set of active `Feedback` states.

[`Feedback`](/documentation/RealityKit/ObjectCaptureSession/Feedback-swift.enum)

Provides information about possible problems with the capture session.

[`isPaused`](/documentation/RealityKit/ObjectCaptureSession/isPaused)

A Boolean value that indicates if the capture session is paused.

[`state`](/documentation/RealityKit/ObjectCaptureSession/state)

The current state of the capture session.

[`cameraTracking`](/documentation/RealityKit/ObjectCaptureSession/cameraTracking)

The current state of ARKit camera tracking.

[`Tracking`](/documentation/RealityKit/ObjectCaptureSession/Tracking)

A data structure that describes the current tracking state for the camera.

### Monitoring the session

[`CaptureState`](/documentation/RealityKit/ObjectCaptureSession/CaptureState)

State of the capture session.

[`Error`](/documentation/RealityKit/ObjectCaptureSession/Error)

Errors associated with the top-level computation of this class.

### Controlling the session

[`cancel()`](/documentation/RealityKit/ObjectCaptureSession/cancel())

Requests that the capture session be canceled.

[`finish()`](/documentation/RealityKit/ObjectCaptureSession/finish())

Requests that the capture session be stopped and all data saved.

[`pause()`](/documentation/RealityKit/ObjectCaptureSession/pause())

Pauses the automatic capture and other resource-intense algorithms.

[`requestImageCapture()`](/documentation/RealityKit/ObjectCaptureSession/requestImageCapture())

Requests a manual image capture.

[`resume()`](/documentation/RealityKit/ObjectCaptureSession/resume())

Resumes object tracking algorithms after [`pause()`](/documentation/RealityKit/ObjectCaptureSession/pause()) is called.

[`startCapturing()`](/documentation/RealityKit/ObjectCaptureSession/startCapturing())

Begins taking images for object capture.

## Relationships

### Conforms To

[`Sendable`](/documentation/Swift/Sendable)

[`Identifiable`](/documentation/Swift/Identifiable)

[`Observable`](/documentation/Observation/Observable)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`Escapable`](/documentation/Swift/Escapable)

[`Copyable`](/documentation/Swift/Copyable)

---

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)