---
description: Generate random and turbulent motion
---

# Noise

{% embed url="https://youtu.be/HjydJ9KISIs" %}

Noise can add randomness to object movement, rotation, or generate data to combine with other behaviors using [Channel Link](../../../user-guide/timeflow-view/channel-link).&#x20;

{% hint style="success" %}
To add Noise, right-click an object in the Timeflow View and select:

**Add Automation > Noise**
{% endhint %}

Noise has a single read-only channel which outputs the randomly generated data, either in vector or float format, depending on the output type selected.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2F4By8NQj0JSpeMwmIbEaY%2Fimage.png?alt=media&#x26;token=4696d581-cc40-4fa9-bcde-d0efee73ffe1" alt=""><figcaption></figcaption></figure>

## **Noise Editor**

Select the object to view its settings in the Inspector.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FSV5akv7EA9khLV2MKLZX%2Fimage.png?alt=media&#x26;token=9838aaf9-0586-438a-a663-e8a4f92850ff" alt=""><figcaption></figcaption></figure>

For common features, please refer to [Menu Bar](../../../user-guide/timeflow-editor/menu-bar) and [Update Settings](../../../user-guide/timeflow-editor/update-settings).

## Apply Mode

Use the drop-down menu to select how the random data is applied.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2F6IS5q23D4xINyJwLw2Yb%2Fimage.png?alt=media&#x26;token=a0e0af42-67f3-463c-b449-7713fb7fafda" alt=""><figcaption></figcaption></figure>

* **Position:** Applies the generated values to the specified transform's position.&#x20;
* **Rotation:** Applies to the transform's rotation (Euler angles).
* **Data Only:** Generates random values but does not apply it to the transform.

{% hint style="info" %}
The transform position and rotation are only modified if the apply mode is either of those options. When generating Data Only, random values are calculated only.
{% endhint %}

### Apply to Transform

The target transform which the data is applied to. The current object transform is used by default though may be assigned to any other object in the scene by dragging and dropping it from the Hierarchy view into the field.

{% hint style="warning" %}
**Beware of Confusing Setups**

Since it is possible to target any transform in the scene, make sure the relationships are documented or clearly shown in the scene. Otherwise, an object may be under the influence of a behavior that can be hard to track down.&#x20;
{% endhint %}

### &#x20;Axis

Select whether to generate random values for all axes (XYZ), or for an individual axis.&#x20;

{% hint style="info" %}
Several of the fields below switch between single float and vector input depending on the Axis mode selected. &#x20;
{% endhint %}

## Input Position

Sets the initial position of the transform and also acts as the center point for the noise calculation.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FwxnRNIG7et19EWNxaigu%2Fimage.png?alt=media&#x26;token=12d81b2d-a23b-420f-a3c9-dec27c6934f7" alt=""><figcaption></figcaption></figure>

### Use Transform

When enabled, the current object transform is used to provide the input position. This is primarily used to add noise to an existing object animation or when applying noise to a child or other object separate from the current one.&#x20;

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2F5H9Woamk4v1RfrU4HC6j%2Fimage.png?alt=media&#x26;token=65b5f4ea-b98b-4d73-94a9-1024dc146907" alt=""><figcaption><p>Input Position is controlled by the transform component when Use Transform is enabled</p></figcaption></figure>

{% hint style="danger" %}
**Apply to Position <=> Input Position**\
When applying to Position and Use Transform is enabled, if the target transform is the same object a warning is displayed. This configuration causes a circular loop where Noise generates the transform position which is then used for input on the next frame calculated. This is not prohibited and will still function, however the transform movement is sporadic and unpredictable since it doesn't have a fixed position to anchor the noise. This results in runaway objects and is likely not the desired result.\
\
See [Parenting and Channel Order](#parenting-and-channel-order) below for more advanced setup to resolve this.
{% endhint %}

## Time Interval

Instead of generating random values each frame, noise can optionally be generated using intervals of time, interpolating between each random point. This is more noticeable when using the Random noise type but works also with Perlin noise.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2Fkt7sxNfojQJuDAuhkLC0%2Fimage.png?alt=media&#x26;token=c6247111-eb34-4a8f-910d-a6a39d372c11" alt=""><figcaption></figcaption></figure>

Time Interval determines the frequency (in seconds) new random numbers are generated over time. Use the +/- value to vary the time interval further. The interpolation mode drop-down selects the type of [interpolation ](../../../glossary#interpolation-modes)to apply between time intervals. Spatially the object interpolates linearly to each new random location.

{% hint style="info" %}
When Time Interval is 0 (+-0), the noise is generated every frame and indicated by 'Continuous Update'.
{% endhint %}

## Hold Time

To make the object stop at each random position, enter a hold time in seconds with optional variability.&#x20;

{% hint style="success" %}
Use Time Interval and Hold Time to create a variety of autonomous movements. This could be used to simulate insect-like behavior, flying vehicles, or to add periodic randomness to any animation or behavior.&#x20;
{% endhint %}

## Random Noise

Uses built-in [Random](https://docs.unity3d.com/ScriptReference/Random.html) function to generate a new random value each frame (or [Time Interval](#time-interval)). &#x20;

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FnqT3xpIGMWqDU3BlaD6w%2Fimage.png?alt=media&#x26;token=21e17e7c-4f20-49a5-bb1f-8b01fc2745b4" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Use Random mode for extra random or chaotic movement.
{% endhint %}

### Random Seed

Determines the starting seed for the random value generator. Change this or click the Randomize button for a new random variation.

### Perlin Noise

Uses built-in [Perlin noise function](https://docs.unity3d.com/ScriptReference/Mathf.PerlinNoise.html) to generate smooth interpolating random values.&#x20;

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FhOz4jxtSp5Ogvd7H5qTo%2Fimage.png?alt=media&#x26;token=f19c5e20-e5c1-42ff-88df-db63fcd1299b" alt=""><figcaption></figcaption></figure>

Perlin noise can be thought of as a field of random zones that blend into one another, creating an effect like turbulence.&#x20;

{% hint style="success" %}
Use Perlin for organic smoother movement. It's easiest to imagine Perlin noise as a 3-dimensional cloud which an object can move through.
{% endhint %}

### Offset

Shifts the input position of Perlin noise.

{% hint style="success" %}
Use Offset to change the randomness of the Perlin field. This can be helpful when working at 0,0,0 coordinates where noise generation may sometimes appear symmetrical or not random enough.
{% endhint %}

### Speed

Offsets the input position of Perlin noise over time, in units per second. This adds to the Input Position and Offset causing the Perlin noise to drift over time.&#x20;

{% hint style="success" %}
Use Speed to simulate wind and other effects.&#x20;
{% endhint %}

### Scale

Sets the scale factor of the noise. This works with both Perlin and Random noise. Adjust the scale to control the overall intensity. If outputting a vector value ([XYZ](#axis)) then the scale on each axis may be set independently.

## Multiply Scale

Scales the final noise output, multiplied uniformly with Scale.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FMC1z4HooUHPyGnO1xtfd%2Fimage.png?alt=media&#x26;token=d0082c73-fed8-4941-96f0-b4f26e582282" alt=""><figcaption></figcaption></figure>

## Multiply Speed

Controls the overall speed of the Noise behavior.&#x20;

{% hint style="warning" %}
This also scales the [Time Interval](#time-interval) and [Hold Time](#hold-time) accordingly. To increase noise speed separately without affecting the time interval, the [Speed](#speed) may be set with Perlin noise.
{% endhint %}

## Amount

Use this slider to reduce the overall intensity of the noise output.&#x20;

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FSrf3Miyl8wXUClro7OGW%2Fimage.png?alt=media&#x26;token=08d85bbb-0f40-478f-af78-20622a83ccbf" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Use Amount to make the noise effects more subtle or to animate it on and off.
{% endhint %}

## Override Output

Each of the component values (XYZW) of the final noise output may be set to a fixed value. This is useful, for example, to set the alpha value (W) when using noise to generate a color.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FFQDw5BVm31MH67JTJc6J%2Fimage.png?alt=media&#x26;token=ce287d13-65af-43a1-be69-a11b62651e67" alt=""><figcaption></figcaption></figure>

## Options

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FpHRVnj1XmbW9RY1uIBib%2Fimage.png?alt=media&#x26;token=c14b3367-79dd-479f-9a3c-a58555ee4761" alt=""><figcaption></figcaption></figure>

### World Space

Enable this to work with world space coordinates, otherwise local space is used.

### Center

When enabled, noise is centered on the input position in all directions around it. Otherwise if Center is unchecked, noise adds to the input position generating positive values only.&#x20;

### Invert

Flips the direction of the noise.&#x20;

## Additional Notes

### Use Parenting to Contain Noise

It is often helpful to apply Noise on a separate object to isolate it from the target transform. In the example shown below, the target is a child of the Noise object. Creating a parent-child relationship in this way makes it easier to work with since only the child transform is affected.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2F9h6tKquPMUdiNSbkxg7F%2Fimage.png?alt=media&#x26;token=47629257-ab8d-4b62-8949-e857d2c7284c" alt=""><figcaption></figcaption></figure>

### Layering Noise with Channel Order

In the example shown below, the object has a [Motion Path](../animation/motion-path) (Path Position) with Noise applied on top of it. The motion path provides the input position for the noise.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FlZ0G4zWF62z6CEzjDwDP%2Fimage.png?alt=media&#x26;token=9b446558-59a2-42c2-a4d9-72a54eb71447" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The channel order depends on the preferences setting [Reverse Channel Order](../../../../user-guide/menus-and-shortcuts/preferences#reverse-channel-order). In the example above, reverse order is enabled to clearly show which channel is on top.
{% endhint %}

In the inspector, this setup shows a warning by [Use Transform](#use-transform) since it is applying to the position of the same object providing it, however in this case the warning can be ignored since the motion path channel is processing first to set the object position.&#x20;

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FYo4yrElGPMv42asy1Wck%2Fimage.png?alt=media&#x26;token=dc4f0944-f54e-4657-b6d2-9fb7c0ab1940" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
When any property value, such as the transform position in the example above, is written to multiple times on the same frame, it all occurs within a single Update call. The final value is determined by the last channel processed, based on the order listed.&#x20;
{% endhint %}

### Predetermination

Random values are not entirely random and to a degree predeterminate. Noise attempts to generate the same results each time played by seeding the random number generator with the same value every frame. This results in repeating more-or-less the same movement each time the animation is played without caching the data, however there is some variability as illustrated in the [graphs](../tools/graph) captured below.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FtEveGrnrpln3VB5LdGXK%2Fimage.png?alt=media&#x26;token=d340d81a-7339-4b48-825d-8ef953cab98c" alt=""><figcaption><p>Demonstrates Perlin noise with data captured over several playbacks. </p></figcaption></figure>

During each playback there is some variability in range, however mostly noise behaves the same.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FFu4h4AYgOrwxeGgcrpkP%2Fimage.png?alt=media&#x26;token=0ad0c591-df55-4ae0-8200-0315e1bb9a73" alt=""><figcaption><p>This shows data captured from Random mode with multiple playbacks showing that the randomness is similar each time. </p></figcaption></figure>

{% hint style="info" %}
The [Graph](../tools/graph) behavior is used in these example to capture the data generated from Noise using [Channel Link](../../../user-guide/timeflow-view/channel-link).&#x20;
{% endhint %}
