# Character Rig

## Wizard Setup

The **FPS Animation Framework** automates the setup process. Add your character to the scene, right-click on it, and select <mark style="color:purple;">**FPS ANIMATOR Wizard**</mark><mark style="color:purple;">:</mark>

<figure><img src="https://784345943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxcUmJ78NSw1bSUlSO9oP%2Fuploads%2FDgv53epv1sbghskaMn3S%2Fimage.png?alt=media&#x26;token=da52db1b-b771-4c23-8e30-05b77d90871f" alt="" width="469"><figcaption><p>Wizard Tool Window.</p></figcaption></figure>

{% hint style="success" %}
**Note:** this tool will automatically find and assign all the important bones. It is recommended to double-check the references, as sometimes real bones can be confused with other game objects.
{% endhint %}

After that, we need to assign an **Animator Controller** - you can either use yours or the one from the demo project.

Next, we need to assign **Input Config** - a crucial data asset the entire system depends on.

## About Input Config

You can select one from the FPS Animation Framework package:

<figure><img src="https://784345943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxcUmJ78NSw1bSUlSO9oP%2Fuploads%2FWDGd4P0kM01FZqPYmWtM%2Fimage.png?alt=media&#x26;token=57255abf-79ca-4c64-ba28-9ecd79ff320a" alt="" width="269"><figcaption><p>Input Config asset.</p></figcaption></figure>

**Input Config** contains runtime properties, which will be used in our system. It is essential for communication between the FPS Animation Framework entities and your custom code. It is very similar to the [Animator Controller parameters](https://docs.unity3d.com/Manual/AnimationParameters.html) but with way more customization features:

<figure><img src="https://784345943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxcUmJ78NSw1bSUlSO9oP%2Fuploads%2FLM1ZYRnO4WNzlGinr78s%2Fimage.png?alt=media&#x26;token=474dc36c-20b0-441e-b5de-ed679fb934d2" alt="" width="401"><figcaption><p>Input Config.</p></figcaption></figure>

{% hint style="success" %}
**Tip**: instead of hardcoding the user inputs in a class or a struct, this dynamic approach gives you more flexibility.
{% endhint %}

To create a **UserInputConfig** manuall&#x79;**,** right-click in any folder and go to <mark style="background-color:purple;">**Create/KINEMATION/Input Config**</mark>:

{% hint style="danger" %}
**Note:** even though you can manually create an Input Config, it is recommended to use an example asset from <mark style="background-color:purple;">**KINEMATION/FPS Animation Framework/Assets**</mark> folder. You can find out more here: [input-system](https://kinemation.gitbook.io/scriptable-animation-system/fundamentals/input-system "mention")
{% endhint %}

Once the **Input Config** is created or/and assigned, let's find out what the **Rig Asset** is.

## About Rig Asset

{% hint style="success" %}
**Tip:** One of the groundbreaking features implemented in the FPS Animation Framework is the new way of storing information about the character skeleton - **Rig Assets**. They contain all the crucial information about the character, and they are used to dynamically select *Rig Elements*, *Rig Chains,* and *Curves* in the Editor.
{% endhint %}

You do not have to manually create a **Rig Asset** - it will be automatically created when you press the *Setup Character* button:

<figure><img src="https://784345943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxcUmJ78NSw1bSUlSO9oP%2Fuploads%2FoCadtI9CuPNftrl2u6Cu%2Fimage.png?alt=media&#x26;token=dd2fcab8-4fb8-4a7a-900f-be36f27112df" alt="" width="391"><figcaption><p>Press this button.</p></figcaption></figure>

<details>

<summary>How to create a Rig Asset manually</summary>

Right-click in any folder and go to <mark style="background-color:purple;">**Create/KINEMATION/Rig.**</mark>

</details>

Once you have created and/or assigned a **Rig Asset**, make sure to press the *Setup Character* button. This will create a subfolder in the current directory with the rig asset in it. Now let's see what this Scriptable Object contains:

<figure><img src="https://784345943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxcUmJ78NSw1bSUlSO9oP%2Fuploads%2FwRRrDpDNycKAC4afBm9u%2Fimage.png?alt=media&#x26;token=9cc914f7-b18c-486b-87af-c58e1ed4ad02" alt="" width="397"><figcaption><p>Rig Asset.</p></figcaption></figure>

The **Rig Asset** contains all the information about your character skeleton, including:

* ***Hierarchy*** - actual hierarchy of your character.
* ***Element Chains*** - an alternative to Avatar Masks.
* ***Curves*** - Playable curves for dynamic animations (e.g. reloading, grenade throw, etc.)

***

The character skeleton is now ready, in the next section we will learn more about the framework components.
