> For the complete documentation index, see [llms.txt](https://kinemation.gitbook.io/scriptable-animation-system/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kinemation.gitbook.io/scriptable-animation-system/fundamentals/animator-layer.md).

# 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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
