<!--
{
  "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/scene(options:statusHandler:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "SceneKit"
    ],
    "preciseIdentifier" : "c:objc(cs)SCNSceneSource(im)sceneWithOptions:statusHandler:"
  },
  "title" : "scene(options:statusHandler:)"
}
-->

# scene(options:statusHandler:)

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

```
func scene(options: [SCNSceneSource.LoadingOption : Any]? = nil, statusHandler: SCNSceneSourceStatusHandler? = nil) -> SCNScene?
```

## Parameters

`options`

A dictionary containing options that affect scene loading. See `Scene Loading Options` for available keys and values. Pass `nil` to use default options.

`statusHandler`

An [`SCNSceneSourceStatusHandler`](/documentation/SceneKit/SCNSceneSourceStatusHandler) block. SceneKit calls this block periodically to report progress while loading the scene.

## Return Value

An [`SCNScene`](/documentation/SceneKit/SCNScene) object containing the entire scene graph from the scene source, or `nil` if loading was not successful.

## Discussion

Use this method if you need to monitor progress while loading a scene from the scene source. For simpler scene loading, use the [`scene(options:)`](/documentation/SceneKit/SCNSceneSource/scene(options:)) method or the [`SCNScene`](/documentation/SceneKit/SCNScene) method [`init(url:options:)`](/documentation/SceneKit/SCNScene/init(url:options:)-7ugvv).

A scene source can contain objects that are not part of its scene graph. To obtain these objects, you must load them individually with the the [`entryWithIdentifier:withClass:`](/documentation/SceneKit/SCNSceneSource/entryWithIdentifier:withClass:) or [`entries(passingTest:)`](/documentation/SceneKit/SCNSceneSource/entries(passingTest:)) method. For example, a scene file containing a game character could include several animations for the character geometry (such as running, jumping, and standing idle). Because you typically do not apply multiple animations at once, the scene file contains these animations without their being attached to the character geometry.

---

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)