SceneKit is a high-level 3D scene-graph framework for rendering, animating, and physically simulating 3D geometry, cameras, lights, and materials across iOS, macOS, tvOS, watchOS, and visionOS. You assemble a scene from geometry built with SCNGeometry, SCNGeometrySource, and SCNGeometryElement, then view it through an SCNCamera positioned with an SCNCameraController. Content is animated through SCNAction and the SCNAnimation and SCNAnimationPlayer types, while constraints such as SCNLookAtConstraint, SCNBillboardConstraint, SCNIKConstraint, and SCNDistanceConstraint govern how nodes track and respond to one another. SceneKit also supports spatial audio through SCNAudioSource and SCNAudioPlayer, hit testing via SCNHitTestResult, and detail management with SCNLevelOfDetail.
Scenes and Rendering 13
Build, load, and display the 3D scene graph and render it into a view or off-screen surface.
- ClSCNScene@class SCNScene
- ClSCNSceneSource@class SCNSceneSource
- ClSCNView@class SCNView
- ClSCNRenderer@class SCNRenderer
- ClSCNLayer@class SCNLayer
- ClSCNNode@class SCNNode
- ClSCNReferenceNodemacOS 10.11+@class SCNReferenceNode
- PrSCNSceneRenderer@protocol SCNSceneRenderer
- PrSCNSceneRendererDelegate@protocol SCNSceneRendererDelegate
- PrSCNSceneExportDelegatemacOS 10.9+A protocol for supplying image data when exporting a scene to a file.
- PrSCNNodeRendererDelegate@category NSObject (SCNNodeRendererDelegate)
- EnSCNReferenceLoadingPolicymacOS 10.11+@enum SCNReferenceLoadingPolicy
- EnSCNSceneSourceStatus@enum SCNSceneSourceStatus
Geometry and Shapes 21
Define custom geometry and use the built-in parametric primitive shapes that compose a scene.
- ClSCNGeometry@class SCNGeometry
- ClSCNGeometrySource@class SCNGeometrySource
- ClSCNGeometryElement@class SCNGeometryElement
- ClSCNGeometryTessellatormacOS 10.13+@class SCNGeometryTessellator
- ClSCNPlane@class SCNPlane
- ClSCNBox@class SCNBox
- ClSCNPyramid@class SCNPyramid
- ClSCNSphere@class SCNSphere
- ClSCNCylinder@class SCNCylinder
- ClSCNCone@class SCNCone
- ClSCNTube@class SCNTube
- ClSCNCapsule@class SCNCapsule
- ClSCNTorus@class SCNTorus
- ClSCNFloor@class SCNFloor
- ClSCNText@class SCNText
- ClSCNShapemacOS 10.9+@class SCNShape
- ClSCNLevelOfDetailmacOS 10.9+@class SCNLevelOfDetail
- PrSCNBoundingVolume@protocol SCNBoundingVolume
- EnSCNGeometryPrimitiveTypeConstants that specify how a geometry element's vertices are connected into primitives.
- EnSCNTessellationSmoothingModemacOS 10.13+Constants that specify the smoothing algorithm a tessellator applies to geometry.
- EnSCNChamferModemacOS 10.9+Constants that specify which edges of an extruded geometry are chamfered.
Materials and Shading 17
Control surface appearance, lighting response, and custom GPU shading of geometry.
- ClSCNMaterial@class SCNMaterial
- ClSCNMaterialProperty@class SCNMaterialProperty
- ClSCNProgram@class SCNProgram
- PrSCNProgramDelegate@protocol SCNProgramDelegate
- ClSCNTechniquemacOS 10.10+@class SCNTechnique
- PrSCNTechniqueSupport@protocol SCNTechniqueSupport
- PrSCNShadable@protocol SCNShadable
- PrSCNBufferStreamA protocol that gives shaders access to a writable Metal buffer.
- StSCNShaderModifierEntryPointConstants that identify the rendering stages at which a shader modifier can run.
- EnSCNFillModemacOS 10.13+Constants that specify whether geometry is rendered filled or as a wireframe.
- EnSCNCullModeConstants that specify which faces of a geometry are culled during rendering.
- EnSCNTransparencyModeConstants that specify how a material's transparency is computed.
- EnSCNBlendModemacOS 10.11+@enum SCNBlendMode
- EnSCNFilterModemacOS 10.9+@enum SCNFilterMode
- EnSCNWrapModemacOS 10.9+@enum SCNWrapeMode
- StSCNColorMaskmacOS 10.13+@enum SCNColorComponent
- EnSCNBufferFrequencymacOS 10.11+@enum SCNBufferFrequency
Cameras and Lighting 11
Position and control viewpoints and configure the lights that illuminate the scene.
- ClSCNCamera@class SCNCamera
- ClSCNCameraControllermacOS 10.13+An object that manipulates a camera to navigate and frame the scene.
- PrSCNCameraControllerDelegatemacOS 10.13+A protocol for responding to a camera controller's interactive navigation events.
- PrSCNCameraControlConfigurationmacOS 10.13+A protocol that exposes configuration options for built-in camera controls.
- ClSCNLight@class SCNLight
- EnSCNCameraProjectionDirectionmacOS 10.13+Constants that specify the direction in which an orthographic camera projects.
- EnSCNInteractionModemacOS 10.13+Constants that specify the gesture-to-camera-movement mapping of a camera controller.
- EnSCNShadowModemacOS 10.10+@enum SCNShadowMode
- EnSCNLightProbeTypemacOS 10.15+Constants that specify the kind of lighting information a light probe captures.
- EnSCNLightProbeUpdateTypemacOS 10.15+Constants that specify how a light probe updates its captured lighting.
- EnSCNLightAreaTypemacOS 10.15+Constants that specify the shape of an area light's emitting surface.
Animation 10
Animate node and scene properties over time with actions, keyframe animations, and transactions.
- ClSCNActionmacOS 10.10+An object that performs a reusable, time-based change to a node, such as moving, rotating, or fading it.
- PrSCNActionableA protocol for objects, such as nodes, that can run actions.
- ClSCNAnimationmacOS 10.13+SCNAnimation represents an animation that targets a specific key path.
- ClSCNAnimationPlayermacOS 10.13+SCNAnimationPlayer let you control when and how to play and blend an animation
- PrSCNAnimationProtocolA protocol that defines the interface for SceneKit animation objects.
- PrSCNAnimatable@protocol SCNAnimatable
- ClSCNAnimationEventmacOS 10.9+SCNAnimationEvent encapsulates a block to trigger at a specific time.
- ClSCNTimingFunctionmacOS 10.13+An object that defines the pacing curve of an animation over its duration.
- ClSCNTransactionA mechanism for grouping and animating changes to scene-graph properties.
- EnSCNActionTimingModemacOS 10.10+@enum SCNActionTimingMode
Constraints 12
Apply rules that automatically adjust node transforms in response to other nodes and the scene.
- ClSCNConstraintmacOS 10.9+@class SCNConstraint
- ClSCNLookAtConstraintmacOS 10.9+@class SCNLookAtConstraint
- ClSCNBillboardConstraintmacOS 10.11+A constraint that orients a node to always face the current point of view.
- ClSCNTransformConstraintmacOS 10.9+@class SCNTransformConstraint
- ClSCNIKConstraintmacOS 10.10+@class SCNIKConstraint
- ClSCNDistanceConstraintmacOS 10.13+@class SCNDistanceConstraint
- ClSCNReplicatorConstraintmacOS 10.13+@class SCNReplicatorConstraint
- ClSCNAccelerationConstraintmacOS 10.13+@class SCNAccelerationConstraint
- ClSCNSliderConstraintmacOS 10.13+@class SCNSliderConstraint
- ClSCNAvoidOccluderConstraintmacOS 10.13+@class SCNAvoidOccluderConstraint
- PrSCNAvoidOccluderConstraintDelegatemacOS 10.13+A protocol for responding to occlusion events from an avoid-occluder constraint.
- StSCNBillboardAxisConstants that specify the axes about which a billboard constraint rotates a node.
Physics Simulation 16
Add rigid-body dynamics, joints, vehicles, and force fields to drive realistic motion.
- ClSCNPhysicsWorldmacOS 10.10+@class SCNPhysicsWorld
- ClSCNPhysicsBodymacOS 10.10+@class SCNPhysicsBody
- ClSCNPhysicsShapemacOS 10.10+@class SCNPhysicsShape
- ClSCNPhysicsContactmacOS 10.10+@class SCNPhysicsContact
- PrSCNPhysicsContactDelegatemacOS 10.10+@protocol SCNPhysicsContactDelegate
- ClSCNPhysicsFieldmacOS 10.10+@class SCNPhysicsField
- ClSCNPhysicsBehaviormacOS 10.10+@class SCNPhysicsBehavior
- ClSCNPhysicsHingeJointmacOS 10.10+@class SCNPhysicsHingeJoint
- ClSCNPhysicsBallSocketJointmacOS 10.10+@class SCNPhysicsBallSocketJoint
- ClSCNPhysicsSliderJointmacOS 10.10+@class SCNPhysicsSliderJoint
- ClSCNPhysicsConeTwistJointmacOS 10.13+@class SCNPhysicsConeTwistJoint
- ClSCNPhysicsVehiclemacOS 10.10+@class SCNPhysicsVehicle
- ClSCNPhysicsVehicleWheelmacOS 10.10+@class SCNPhysicsVehicleWheel
- EnSCNPhysicsBodyTypemacOS 10.10+Constants that specify whether a physics body is static, dynamic, or kinematic.
- EnSCNPhysicsFieldScopemacOS 10.10+@enum SCNPhysicsFieldScope
- StSCNPhysicsCollisionCategorymacOS 10.10+A bit-mask structure that groups physics bodies for collision and contact testing.
Particle Systems 11
Create and control emitters that simulate effects such as smoke, fire, and sparks.
- ClSCNParticleSystemmacOS 10.10+@class SCNParticleSystem
- ClSCNParticlePropertyControllermacOS 10.10+@class SCNParticlePropertyController
- EnSCNParticleSortingModemacOS 10.10+Constants that specify the order in which a particle system draws its particles.
- EnSCNParticleBlendModemacOS 10.10+Constants that specify how a particle system blends particles with the scene.
- EnSCNParticleOrientationModemacOS 10.10+Constants that specify how particles are oriented relative to the camera or scene.
- EnSCNParticleBirthLocationmacOS 10.10+Constants that specify where on an emitter shape new particles are created.
- EnSCNParticleBirthDirectionmacOS 10.10+Constants that specify the initial direction in which new particles travel.
- EnSCNParticleImageSequenceAnimationModemacOS 10.10+Constants that specify how a particle's image sequence is animated.
- EnSCNParticleInputModemacOS 10.10+Constants that specify the input that drives a particle property controller's animation.
- EnSCNParticleModifierStagemacOS 10.10+Constants that identify the simulation stage at which a particle modifier runs.
- EnSCNParticleEventmacOS 10.10+Constants that identify events in a particle's lifetime that can trigger handlers.
Skeletal Animation and Morphing 3
Deform geometry through skeletal skinning and blend-shape morphing.
- ClSCNSkinnermacOS 10.9+@class SCNSkinner
- ClSCNMorphermacOS 10.9+@class SCNMorpher
- EnSCNMorpherCalculationModeConstants that specify how a morpher combines its blend-shape targets.
Audio 2
Attach spatialized sound sources and players to nodes in the scene.
- ClSCNAudioSourcemacOS 10.11+@class SCNAudioSource
- ClSCNAudioPlayermacOS 10.11+An object that manages playback of an audio source attached to a node.
Hit Testing 3
Find the scene contents located at a screen point or along a ray.
- ClSCNHitTestResult@class SCNHitTestResult
- StSCNHitTestOption@group Hit-test options
- EnSCNHitTestSearchModemacOS 10.13+@enum SCNHitTestSearchMode
Geometric Types and Options 7
Vector types, rendering options, and configuration constants used throughout the framework.
- StSCNVector3A representation of a three-component vector used for positions, scales, and directions.
- StSCNVector4A representation of a four-component vector used for rotations and homogeneous coordinates.
- StSCNDebugOptionsmacOS 10.11+@enum SCNDebugOptions
- EnSCNMovabilityHintmacOS 10.12+@enum SCNMovabilityHint
- EnSCNNodeFocusBehaviormacOS 10.13+@enum SCNNodeFocusBehavior
- EnSCNAntialiasingModemacOS 10.10+@enum SCNAntialiasingMode
- EnSCNRenderingAPImacOS 10.11+@enum SCNRenderingAPI
Structures 1
- StSceneViewiOS 14.0+The view to present your SCNScene nodes in.
Type Aliases 14
- TySCNActionTimingFunctionA custom timing function for SCNActions. Input time will be between 0.0 and 1.0
- TySCNAnimationDidStartBlock
- TySCNAnimationDidStopBlock
- TySCNAnimationEventBlockSignature for the block executed when the animation event is triggered.
- TySCNParticleEventBlock@typedef SCNParticleEventBlock
- TySCNParticleModifierBlock@typedef SCNParticleModifierBlock
- TySCNFieldForceEvaluator
- TySCNSceneExportProgressHandler@typedef SCNSceneSourceStatusHandler
- TySCNSceneSourceStatusHandler
- TySCNBufferBindingBlock@typedef SCNBufferBindingBlock
- TySCNBindingBlock@typedef SCNBindingBlock
- TySCNQuaternion
- TySCNMatrix4
- TySCNFloat