# Animator Layer

## Overview

An **Animator Layer** is a procedural animation feature, which modifies your character pose in realtime.

{% hint style="success" %}
**Tip:** usually animator layers reside in the **Animator Profile**. The only exception is the **IK Motion Laye**r - this layer counts as an "animation", so you can dynamically link it using:

{% code lineNumbers="true" %}

```
_fpsAnimator.LinkAnimatorLayer(yourLayerHere)
```

{% endcode %}

You can find out more in this section:
{% endhint %}

All layers in the framework has a similar structure, let's take a look at it:

<figure><img src="/files/S7VHXL77LVz9amCaZVze" alt="" width="418"><figcaption><p>AttachHandLayer Example.</p></figcaption></figure>

The red highlighted area represents general settings for all animator layers. Let's break them down:

* **Alpha**: controls the influence of the layer; if set to 1 - the layer will be fully applied, and if set to 0 - it will be disabled.
* **Link Dynamically** - defines if this layer will need to be cached when a new profile is linked. If set to true, there will be no smooth blending, but instead the settings will be updated.

## Curve Blending

**Curve Blending** is a crucial part of controlling animation features in realtime. You can select a parameter which will control the layer, so far the system supports these parameter types:

* Animator Controller float parameters.
* Playables curves.
* Input Config variables.

You can also specify the **Blend** parameter, which can be either **Mask** or **Direct**:

<figure><img src="/files/GxNRBRZErUM57UgtI8s3" alt=""><figcaption><p>Mode options.</p></figcaption></figure>

* **Mask** means that the value will be applied in reversed mode, computed via: **result = 1f - value.** For example, if the parameter value is 1, the final value will be 0.
* **Direct** mode is going to use the parameter value as is. If the value is 1, the final result will be 1.

It is possible to specify multiple **Curve Blends** in the list, where the top index item will overrides previous ones. **For example**:

<figure><img src="/files/XvdrGjTFMpfu5Wb5f8V6" alt="" width="377"><figcaption></figcaption></figure>

If the *FullBodyWeight* value will be 1, the final weight will be 0. However, if P*roneWeight* is 0, the final result will be 0 as well.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kinemation.gitbook.io/scriptable-animation-system/fundamentals/animator-layer.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
