<!--
{
  "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",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "SceneKit"
    ],
    "preciseIdentifier" : "SceneKit"
  },
  "title" : "SceneKit"
}
-->

# SceneKit

Create 3D games and add 3D content to apps using high-level scene descriptions, and easily add animations, physics simulation, particle effects, and realistic physically based rendering.

## Overview

SceneKit combines a high-performance rendering engine with a descriptive API for import, manipulation, and rendering of 3D assets. Unlike lower-level APIs such as Metal and OpenGL that require you to implement in precise detail the rendering algorithms that display a scene, SceneKit requires only descriptions of your scene’s contents and the actions or animations you want it to perform.

> Note:
> In visionOS, you can display SceneKit content only in 2D views and textures. For information about how to create immersive 3D content, see <doc://com.apple.documentation/documentation/visionOS/creating-fully-immersive-experiences>.

## Topics

### Essentials

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

A container for the node hierarchy and global properties that together form a displayable 3D scene.

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

A view for displaying 3D SceneKit content.

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

A SwiftUI view for displaying 3D SceneKit content.

### Scene Structure

[Organizing a Scene with Nodes](/documentation/SceneKit/organizing-a-scene-with-nodes)

Use nodes to define the structure of a scene.

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

A structural element of a scene graph, representing a position and transform in a 3D coordinate space, to which you can attach geometry, lights, cameras, or other displayable content.

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

A scene graph node that serves as a placeholder for content to be loaded from a separate scene file.

### Display and Interactivity

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

Methods and properties common to the [`SCNView`](/documentation/SceneKit/SCNView), [`SCNLayer`](/documentation/SceneKit/SCNLayer), and [`SCNRenderer`](/documentation/SceneKit/SCNRenderer) classes.

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

Methods your app can implement to participate in SceneKit’s animation loop or perform additional rendering.

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

A Core Animation layer that renders a SceneKit scene as its content.

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

A renderer for displaying a SceneKit scene in an existing Metal workflow or OpenGL context.

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

Information about the result of a scene-space or view-space search for scene elements.

### Lighting, Cameras, and Shading

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

A light source that can be attached to a node to illuminate the scene.

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

A set of camera attributes that can be attached to a node to provide a point of view for displaying the scene.

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

A set of shading attributes that define the appearance of a geometry’s surface when rendered.

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

A container for the color or texture of one of a material’s visual properties.

### Geometry

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

A three-dimensional shape (also called a model or mesh) that can be displayed in a scene, with attached materials that define its appearance.

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

A container for vertex data forming part of the definition for a three-dimensional object, or geometry.

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

A container for index data describing how vertices connect to define a three-dimensional object, or geometry.

[Built-in Geometry Types](/documentation/SceneKit/built-in-geometry-types)

Basic shapes—such as spheres, boxes, and planes—and features for generating 3D objects from 2D text and Bézier curves.

### Animation and Constraints

[Animation](/documentation/SceneKit/animation)

Create declarative animations that move elements of a scene in predetermined ways, or manage animations imported with external authoring tools.

[Constraints](/documentation/SceneKit/constraints)

Automatically adjust the position or orientation of a node based on specified rules.

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

An object that manages the relationship between skeletal animations and the nodes and geometries they animate.

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

An object that manages smooth transitions between a node’s base geometry and one or more target geometries.

### Physics

[Physics Simulation](/documentation/SceneKit/physics-simulation)

Add dynamic behaviors to scene elements; detect contacts and collisions; simulate realistic effects like gravity, springs, and vehicles.

### Particle Systems

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

An object that animates and renders a system of small image sprites using a high-level simulation whose general behavior you specify.

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

An animation for a single property of the individual particles rendered by a particle system.

### Audio

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

A simple, reusable audio source—music or sound effects loaded from a file—for use in positional audio playback.

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

A controller for playback of a positional audio source in a SceneKit scene.

### Renderer Customization

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

Methods for customizing SceneKit’s rendering of geometry and materials using Metal or OpenGL shader programs.

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

A complete Metal or OpenGL shader program that replaces SceneKit’s rendering of a geometry or material.

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

An object that manages a Metal buffer used by a custom shader program.

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

A specification for augmenting or postprocessing SceneKit’s rendering of a scene using additional drawing passes with custom Metal or OpenGL shaders.

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

The common interface for SceneKit objects that support multipass rendering using [`SCNTechnique`](/documentation/SceneKit/SCNTechnique) objects.

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

Methods you can implement to use your own custom Metal or OpenGL drawing code to render content for a node.

[Postprocessing a Scene With Custom Symbols](/documentation/SceneKit/postprocessing-a-scene-with-custom-symbols)

Create visual effects in a scene by defining a rendering technique with custom symbols.

### Scene Asset Import

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

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

### JavaScript

[`SCNExportJavaScriptModule(_:)`](/documentation/SceneKit/SCNExportJavaScriptModule(_:))

Makes SceneKit classes and global constants available to the specified JavaScript context.

### SceneKit Data Types

[SceneKit 3D Data Types](/documentation/SceneKit/scenekit-3d-data-types)

SceneKit-specific vectors, matrices, and related functions and operations.

### Macros

[Macros](/documentation/SceneKit/SceneKit-macros)

### Reference

[SceneKit Enumerations](/documentation/SceneKit/scenekit-enumerations)

[SceneKit Constants](/documentation/SceneKit/scenekit-constants)

Constants used throughout the SceneKit framework.



---

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)
