Jump to content

SceneKit

From VR & AR Wiki
SceneKit
Information
Type 3D graphics framework
Industry Computer graphics
Developer Apple Inc.
Written In Objective-C
Operating System iOS, iPadOS, macOS, tvOS, watchOS, visionOS
License Proprietary
Release Date 2012 (macOS), 2014 (iOS)
Website https://developer.apple.com/documentation/scenekit/

SceneKit is a high-level 3D graphics framework developed by Apple Inc. for building games and adding 3D content to applications on its operating systems. It provides a scene-graph API that describes a 3D scene as a hierarchy of nodes holding geometry, cameras, lights, and other attributes, and it handles rendering, animation, physics simulation, and particle effects on the developer's behalf. SceneKit sits above the low-level rendering APIs Metal and OpenGL, so an application supplies a description of its scene and the actions it wants performed rather than implementing the rendering pipeline directly.[1]

Apple first released SceneKit for the Mac with OS X 10.8 Mountain Lion in 2012 and extended it to iOS with iOS 8 in 2014.[2] It became one of the rendering options for augmented reality on iPhone and iPad after the 2017 launch of ARKit, through a dedicated view class that draws SceneKit content over the camera feed. At WWDC 2025 Apple deprecated SceneKit across all of its platforms and directed new development to RealityKit.[3]

Overview and architecture

SceneKit organizes a scene as a tree of nodes (the scene graph). The root is an SCNScene, and each SCNNode in the tree carries a position, rotation, and scale relative to its parent, plus optional attachments such as geometry, a camera, a light, or a particle system. Combining a high-performance rendering engine with this descriptive API lets developers import, manipulate, and render 3D assets without writing the rendering algorithms by hand, which is what separates it from lower-level APIs such as Metal and OpenGL.[1]

The framework bundles several subsystems alongside rendering. It includes a physics engine for collision detection and rigid-body dynamics, a particle system for effects such as smoke and fire, and an animation system tied to Core Animation. SceneKit is written in Objective-C and exposes both Objective-C and Swift interfaces, and it is proprietary software distributed as part of Apple's SDKs.[2] It is designed to interoperate with other Apple frameworks, including SpriteKit for 2D content, GameplayKit for game logic, and Model I/O for asset import and material handling.[1]

Rendering and assets

Originally built on OpenGL, SceneKit was later layered on top of Metal, Apple's low-level graphics API, which became its rendering backend on supported hardware. At WWDC 2016 Apple added a physically based rendering (PBR) path to SceneKit, introduced with iOS 10 and also available on macOS and tvOS. The PBR work covered physically based materials, physically based lights, and high-dynamic-range effects, with related improvements routed through Model I/O.[4]

For assets, SceneKit can import and export scenes in the COLLADA format (files with the .dae extension) and stores scenes in its own archive format using the .scn extension.[2] The .scn format is proprietary to SceneKit, a point Apple later contrasted with RealityKit's use of the open Universal Scene Description (USD) standard.[3]

Supported platforms

SceneKit is available across Apple's operating systems.[2] The table below lists the platforms and the year each gained the framework where a specific date is documented.

Platform Notes
macOS (originally OS X) First platform, introduced with OS X 10.8 Mountain Lion in 2012
iOS Added with iOS 8 in 2014
iPadOS Available
tvOS Available
watchOS Available
visionOS Available

Role in augmented and virtual reality

SceneKit became one of the rendering engines used for augmented reality on Apple devices when ARKit shipped in 2017. The bridge between the two is ARSCNView, a view class in ARKit that blends virtual 3D content from SceneKit into an AR experience.[5] When an application runs the view's ARSession, the view draws the live camera feed as the scene background and renders SceneKit nodes on top of it. ARKit's 3D coordinate system matches SceneKit's, so the view automatically moves its SceneKit camera to track the device's real-world motion, which places virtual objects so they appear anchored in the physical environment without extra code to map tracking events to the renderer.[5][6]

In Apple's developer tooling, the augmented reality app template in Xcode lets a developer choose between RealityKit and SceneKit as the rendering engine for an AR project written in Swift.[5] Through ARSCNView, ARKit features such as world tracking and plane detection feed into a SceneKit scene, letting virtual content interact with detected real-world surfaces such as floors and tables. This made SceneKit a common path for early iOS AR applications, since developers already familiar with SceneKit could add ARKit tracking without adopting a new renderer.[6]

SceneKit predates Apple's headset hardware and is not the framework Apple promotes for the Apple Vision Pro; spatial experiences on visionOS are built primarily with RealityKit. SceneKit remains usable as a 3D renderer on visionOS, but it does not provide the spatial and shared-scene capabilities that RealityKit was designed around.[3][1]

Deprecation and successor

At WWDC 2025 Apple announced that it was deprecating SceneKit across all platforms.[3] In the session "Bring your SceneKit project to RealityKit," Apple described this as a soft deprecation: existing applications that use SceneKit continue to work, but the framework has entered maintenance mode in which Apple will fix only critical bugs and ship no new features or optimizations. Apple stated that there is no plan to hard-deprecate SceneKit and that developers would be given notice if that changed, while advising that SceneKit is not recommended for a new app or a significant update.[3][7]

Apple positioned RealityKit as the replacement, a 3D engine supported on visionOS, iOS, iPadOS, macOS, and (added in 2025) tvOS.[3][7] The two frameworks differ in design. SceneKit is node-based, where each object is a node with predefined properties for geometry, animation, audio, physics, and lights. RealityKit uses an entity component system, where each object is an entity whose behavior is changed by attaching components such as transform, physics, particles, and gestures. SceneKit stores assets in proprietary .scn files, whereas RealityKit uses the open USD format originated by Pixar.[3][7]

Version history

Year Development
2012 Released on the Mac with OS X 10.8 Mountain Lion[2]
2014 Added to iOS with iOS 8[2]
2016 Physically based rendering added (iOS 10, macOS, tvOS), presented at WWDC 2016[4]
2017 Usable for augmented reality through ARKit's ARSCNView[5]
2025 Deprecated across all platforms at WWDC 2025; RealityKit recommended for new work[3]

References