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

# scene(options:)

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

```
func scene(options: [SCNSceneSource.LoadingOption : Any]? = nil) throws -> 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.

## 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

Calling this method is equivalent to calling [`scene(options:statusHandler:)`](/documentation/SceneKit/SCNSceneSource/scene(options:statusHandler:)) with a block that checks its `error` parameter to see whether the status is [`SCNSceneSourceStatus.error`](/documentation/SceneKit/SCNSceneSourceStatus/error). To load a scene without creating a scene source object, use 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.

> Handling Errors in Swift:
> In Swift, this method returns a nonoptional result and is marked with the `throws` keyword to indicate that it throws an error in cases of failure.
> 
> You call this method in a `try` expression and handle any errors in the `catch` clauses of a `do` statement, as described in [Error Handling](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html) in [The Swift Programming Language](https://docs.swift.org/swift-book/) and `About Imported Cocoa Error Parameters`.

---

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)