<!--
{
  "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/SCNParticlePropertyController",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "SceneKit"
    ],
    "preciseIdentifier" : "c:objc(cs)SCNParticlePropertyController"
  },
  "title" : "SCNParticlePropertyController"
}
-->

# SCNParticlePropertyController

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

```
class SCNParticlePropertyController
```

## Overview

Use particle property controllers to change the properties of individual particles in an [`SCNParticleSystem`](/documentation/SceneKit/SCNParticleSystem) object over time, with Core Animation semantics. For example, by associating a keyframe animation with a particle system’s [`color`](/documentation/SceneKit/SCNParticleSystem/ParticleProperty/color) property, you can create a flame effect with particles that change from blue to white to orange as they rise.

A particle property controller animates a property of individual particles rendered by the particle system. By comparison, implicitly or explicitly animating properties of a [`SCNParticleSystem`](/documentation/SceneKit/SCNParticleSystem) object affects the system as a whole. Consider the keyframe animation of colors described above—if you apply this animation directly to a particle system instead of using a property controller, all particles rendered by the system change color together instead of each one changing color as it rises.

Core Animation animations in SceneKit typically animate a change to a property as a function of time. By default, property controllers animate a particle property this way. However, by changing the [`inputMode`](/documentation/SceneKit/SCNParticlePropertyController/inputMode) property you can also create animations that animate a particle property as a function of distance from a specified node or of the value of another particle property. For example, you can use this option to make particles change color as they speed up and slow down.

For more details about particle systems and particle properties, see [`SCNParticleSystem`](/documentation/SceneKit/SCNParticleSystem).

## Topics

### Creating a Property Controller

[`+  controllerWithAnimation:`](/documentation/SceneKit/SCNParticlePropertyController/init(animation:))

Creates a particle property controller with the specified Core Animation animation.

### Managing the Controller’s Animation

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

The Core Animation object defining the behavior of the property animation.

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

The mode that determines input values for the property controller’s animation.

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

An offset to add to the input value of the controller’s animation.

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

A factor for multiplying the input value of the controller’s animation.

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

A node whose distance to each particle provides input values for the controller’s animation.

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

A particle property that provides input values for this property controller’s animation.

### Constants

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

Options for the input value of the property controller’s animation, used by the [`inputMode`](/documentation/SceneKit/SCNParticlePropertyController/inputMode) property.

## Relationships

### Conforms To

[`NSCopying`](/documentation/Foundation/NSCopying)

[`NSSecureCoding`](/documentation/Foundation/NSSecureCoding)

[`CVarArg`](/documentation/Swift/CVarArg)

[`NSCoding`](/documentation/Foundation/NSCoding)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`Hashable`](/documentation/Swift/Hashable)

[`Equatable`](/documentation/Swift/Equatable)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

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)