<!--
{
  "availability" : [
    "iOS: 8.0.0 - 26.0.0",
    "iPadOS: 8.0.0 - 26.0.0",
    "macCatalyst: 13.1.0 - 26.0.0",
    "macOS: 10.8.0 - 26.0.0",
    "tvOS: 9.0.0 - 26.0.0",
    "visionOS: 1.0.0 - 26.0.0",
    "watchOS: 3.0.0 - 26.0.0"
  ],
  "documentType" : "symbol",
  "framework" : "SceneKit",
  "identifier" : "/documentation/SceneKit/SCNSceneSource",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "SceneKit"
    ],
    "preciseIdentifier" : "c:objc(cs)SCNSceneSource"
  },
  "title" : "SCNSceneSource"
}
-->

# SCNSceneSource

An object that manages the data-reading tasks associated with loading scene contents from a file or data.

```
class SCNSceneSource
```

## Overview

You can also use a scene source to examine the contents of a scene file or to selectively extract certain elements of a scene without keeping the entire scene and all the assets it contains.

SceneKit can read scene contents from a file in a supported format, or from an <doc://com.apple.documentation/documentation/Foundation/NSData> object holding the contents of such a file. Supported formats include the following:

|Format                   |Filename Extension|Supported in                                       |
|-------------------------|------------------|---------------------------------------------------|
|Digital Asset Exchange   |`.dae`            |macOS 10.8 and later                               |
|Alembic                  |`.abc`            |macOS 10.10 and later                              |
|SceneKit compressed scene|`.dae` or `.abc`  |macOS 10.10 and later ![](spacer) iOS 8.0 and later|
|SceneKit archive         |`.scn`            |macOS 10.10 and later ![](spacer) iOS 8.0 and later|

When you include a scene file in DAE or Alembic format in your Xcode project, Xcode automatically converts the file to SceneKit’s compressed scene format for use in the built app. The compressed file retains its original `.dae` or `.abc` extension.

The [`SCNSceneSource`](/documentation/SceneKit/SCNSceneSource) class can also load SceneKit archive files, which you create in the Xcode scene editor or programmatically by using the <doc://com.apple.documentation/documentation/Foundation/NSKeyedArchiver> class to serialize an [`SCNScene`](/documentation/SceneKit/SCNScene) object and the scene graph it contains.

> Note:
> For best results, place scene files that ship in your app bundle in a folder with the `.scnassets` extension, and place image files referenced as textures from those scenes in an Asset Catalog. Xcode then optimizes the scene and texture resources for best performance on each target device, and prepares your texture resources for delivery features such as App Thinning and On-Demand Resources.

## Topics

### Creating a Scene Source

[`sceneSourceWithURL:options:`](/documentation/SceneKit/SCNSceneSource/sceneSourceWithURL:options:)

Creates a scene source that reads the scene graph from a specified file.

[`sceneSourceWithData:options:`](/documentation/SceneKit/SCNSceneSource/sceneSourceWithData:options:)

Creates a scene source that reads the scene graph contained in an `NSData` object.

[`init(url:options:)`](/documentation/SceneKit/SCNSceneSource/init(url:options:)-rw0y)

Initializes a scene source for reading the scene graph from a specified file.

[`init(data:options:)`](/documentation/SceneKit/SCNSceneSource/init(data:options:))

Initializes a scene source for reading the scene graph contained in an `NSData` object.

### Loading a Complete Scene

[`scene(options:statusHandler:)`](/documentation/SceneKit/SCNSceneSource/scene(options:statusHandler:))

Loads the entire scene graph from the scene source and calls the specified block to provide progress information.

[`scene(options:)`](/documentation/SceneKit/SCNSceneSource/scene(options:))

Instantiates a scene from the scene source with the specified options.

### Loading and Inspecting Scene Elements

[`identifiersOfEntries(withClass:)`](/documentation/SceneKit/SCNSceneSource/identifiersOfEntries(withClass:))

Returns the identifiers for all objects in the scene source of the specified class.

[`entryWithIdentifier(_:withClass:)`](/documentation/SceneKit/SCNSceneSource/entryWithIdentifier(_:withClass:))

Loads and returns a specific object in the scene source.

[`entryWithIdentifier:withClass:`](/documentation/SceneKit/SCNSceneSource/entryWithIdentifier:withClass:)

Loads and returns a specific object in the scene source.

[`entries(passingTest:)`](/documentation/SceneKit/SCNSceneSource/entries(passingTest:))

Loads and returns all objects in the scene source that pass the test in a given block.

### Getting Information about the Scene

[`url`](/documentation/SceneKit/SCNSceneSource/url)

The URL identifying the file from which the scene source was created.

[`data`](/documentation/SceneKit/SCNSceneSource/data)

The data object from which the scene source loads scene content.

[`property(forKey:)`](/documentation/SceneKit/SCNSceneSource/property(forKey:))

Returns metadata about the scene.

### Constants

[`SCNSceneSource.LoadingOption`](/documentation/SceneKit/SCNSceneSource/LoadingOption)

Options for creating scene sources and loading the scenes they contain.

[Scene Source Properties](/documentation/SceneKit/scene-source-properties)

The metadata properties associated with a scene file, used by the [`property(forKey:)`](/documentation/SceneKit/SCNSceneSource/property(forKey:)) method.

[Contributor Keys](/documentation/SceneKit/contributor-keys)

Metadata identifying the user and authoring tool that created a scene file, used with the [`SCNSceneSourceAssetContributorsKey`](/documentation/SceneKit/SCNSceneSourceAssetContributorsKey) key.

[Unit Dictionary Keys](/documentation/SceneKit/unit-dictionary-keys)

Metadata describing the unit of measurement used in a scene file, used with the [`SCNSceneSourceAssetUnitKey`](/documentation/SceneKit/SCNSceneSourceAssetUnitKey) key.

[Scene Loading Error Keys](/documentation/SceneKit/scene-loading-error-keys)

[Scene File Consistency Error Keys](/documentation/SceneKit/scene-file-consistency-error-keys)

Keys identifying errors found during a scene-file-format consistency check.

[Scene File Consistency Check Error Codes](/documentation/SceneKit/1573761-scene-file-consistency-check-err)

Error codes that identify errors found during a scene-file-format consistency check.

[`SCNSceneSourceStatusHandler`](/documentation/SceneKit/SCNSceneSourceStatusHandler)

The signature for the block that SceneKit calls periodically to report progress while loading a scene.

[`SCNSceneSourceStatus`](/documentation/SceneKit/SCNSceneSourceStatus)

Constants identifying phases of SceneKit’s scene loading process, used in a [`SCNSceneSourceStatusHandler`](/documentation/SceneKit/SCNSceneSourceStatusHandler) block.



---

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)