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


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.


First Steps

class SCNScene

A scene graph—a hierarchy of nodes with attached geometries, lights, cameras and other attributes that together form a displayable 3D scene.

class SCNView

A view for displaying 3D SceneKit content.

Scene Structure

Organizing a Scene with Nodes

Use nodes to define the structure of a scene.

class 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.

class SCNReferenceNode

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

Basic 3D Data Types

Vectors, matrices, and related functions and operations.

Display and Interactivity

protocol SCNSceneRenderer

Methods and properties common to the SCNView, SCNLayer and SCNRenderer classes.

protocol SCNSceneRendererDelegate

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

class SCNLayer

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

class SCNRenderer

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

class SCNHitTestResult

Detailed information about a result from searching for elements of a scene located at a specified point, or along a specified line segment (or ray).


class SCNCamera

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

Lighting and Shading

class SCNLight

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

class SCNMaterial

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

class SCNMaterialProperty

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


class 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.

class SCNGeometrySource

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

class SCNGeometryElement

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

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


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


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

class SCNSkinner

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

class SCNMorpher

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


Physics Simulation

Add dynamic behaviors to objects in a scene; detect collisions and respond to contacts between objects; simulate realistic physical effects like gravity, springs, and vehicles.

Particle Systems

class SCNParticleSystem

Manages the animation and rendering of a system of small image sprites, or particles, using a high-level simulation whose general behavior you specify.

class SCNParticlePropertyController

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


class SCNAudioSource

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

class SCNAudioPlayer

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

Renderer Customization

protocol SCNShadable

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

class SCNProgram

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

protocol SCNBufferStream

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

class SCNTechnique

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

protocol SCNTechniqueSupport

The common interface for SceneKit objects that support multipass rendering using SCNTechnique objects.

protocol SCNNodeRendererDelegate

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

Scene Asset Import

class SCNSceneSource

Manages the data-reading tasks associated with loading scene contents from a file or data.


func SCNExportJavaScriptModule(JSContext)

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

Beta Software

This documentation contains preliminary information about an API or technology in development. This information is subject to change, and software implemented according to this documentation should be tested with final operating system software.

Learn more about using Apple's beta software