# Animation in a Third Person Template

The standard BP\_ThirdPersonCharacter is not ready to play user-generated emotes yet. To do so, we will need to modify its Blueprint and its AnimBlueprint.

#### The Skeletal Meshes&#x20;

1. Open the _BP\_ThirdPersonCharacter_

<figure><img src="https://content.gitbook.com/content/WC1o0OgVXXEEVQ7SIZ9F/blobs/jorSdYNFxYE7PxJqbXxI/image.png" alt=""><figcaption></figcaption></figure>

2. Inside the new opened window, add a _SkeletalMesh_ and call it "_SkeletalMeshTarget_".&#x20;

<figure><img src="https://content.gitbook.com/content/WC1o0OgVXXEEVQ7SIZ9F/blobs/FNWpm8Z31cWAfisZlLy3/image.png" alt=""><figcaption></figcaption></figure>

3. Attach it to the inherited "_Mesh (CharacterMesh0)_"
4. Due to the fact that "_Mesh (CharacterMesh0)_" is inherited from Character class, we need to copy its values (except the transform ones) into the newly added "_SkeletalMeshTarget_"&#x20;

<figure><img src="https://content.gitbook.com/content/WC1o0OgVXXEEVQ7SIZ9F/blobs/oTRSvmNNAJUCpyaYA7zj/image.png" alt=""><figcaption><p>SkeletalMeshTarget values</p></figcaption></figure>

5. Replace the values of "_Mesh (CharacterMesh0)_" with&#x20;

<figure><img src="https://685620950-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWC1o0OgVXXEEVQ7SIZ9F%2Fuploads%2FOqWSm3iqos7KpaZeAoUc%2Fimage.png?alt=media&#x26;token=ac62892c-e5bb-41b6-b6f3-9b1a46e8060f" alt=""><figcaption></figcaption></figure>

<figure><img src="https://685620950-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWC1o0OgVXXEEVQ7SIZ9F%2Fuploads%2FYbDENpWMYH8NnGixUQZH%2Fimage.png?alt=media&#x26;token=de8308c5-8494-4fbd-a45b-eaa2bf95972e" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/WC1o0OgVXXEEVQ7SIZ9F/blobs/aOSWSkd3OQ8wSAktEW34/image.png" alt=""><figcaption><p>Uncheck Visible's checkbox</p></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/WC1o0OgVXXEEVQ7SIZ9F/blobs/Oqctk5TdDJcfQReoIIvy/image.png" alt=""><figcaption></figcaption></figure>

6. Add a "_KinetixCharacterComponent_" and a "_AnimSequenceSamplerComponent_" to the _ThirdPersonTemplate_ in **Components > Add**.
7. Open the Animation Blueprint "_ABP\_Manny_" in **Content Drawer > Animations**.

<figure><img src="https://content.gitbook.com/content/WC1o0OgVXXEEVQ7SIZ9F/blobs/iNMD6WeJa7jUB0UpTaFm/image.png" alt=""><figcaption></figcaption></figure>

8. Click on "**Class Settings**"

<figure><img src="https://content.gitbook.com/content/WC1o0OgVXXEEVQ7SIZ9F/blobs/TQ4E5ZNXh0h6GVnfMjFF/image.png" alt=""><figcaption></figcaption></figure>

9. Inside the "**Interfaces**" section. Add the "_KinetixAnimationInterface_" to it.

<figure><img src="https://content.gitbook.com/content/WC1o0OgVXXEEVQ7SIZ9F/blobs/FfAHaS9TyfAS4LNviKuo/image.png" alt=""><figcaption></figcaption></figure>

10. With this interface comes 1 function and 1 event, implement them by double clicking on each one.

<figure><img src="https://content.gitbook.com/content/WC1o0OgVXXEEVQ7SIZ9F/blobs/VqVjfrGriWGKaity7maD/image.png" alt=""><figcaption></figcaption></figure>

11. Keep the result of the event "_SetKinetixAnimationPlaying_" in a variable:

<figure><img src="https://content.gitbook.com/content/WC1o0OgVXXEEVQ7SIZ9F/blobs/5G00Rtv8Hedt9C812ho4/image.png" alt=""><figcaption></figcaption></figure>

12. In "_IsKinetixAnimationPlaying_", return the "_PlayingEmote_" variable:

<figure><img src="https://content.gitbook.com/content/WC1o0OgVXXEEVQ7SIZ9F/blobs/0zjm47nIkdWryZi9AyIo/image.png" alt=""><figcaption></figcaption></figure>

13. In the "_AnimGraph_", add a _CachePose_ (we called it here "_GameplayPose_") after the _ControlRig_ Anim Node:

<figure><img src="https://content.gitbook.com/content/WC1o0OgVXXEEVQ7SIZ9F/blobs/X9eYN1EjthspN3NqI94G/image.png" alt=""><figcaption></figcaption></figure>

14. Add a "_Blend Poses By bool_" node, connect the "_PlayingEmote_" boolean value to its "**Active Value**". Add a "_Retarget Pose From Mesh_" node, connect it to its "**True Pose**". Add a "Use cached pose "_GameplayPose_" node and connect it to its "**False Pose**". Finally, connect the output of the "_Blend Poses by bool_" to the global "**Output Pose**" node:

<figure><img src="https://content.gitbook.com/content/WC1o0OgVXXEEVQ7SIZ9F/blobs/xAwm1uQVNHEnYkk1aXJd/image.png" alt=""><figcaption></figcaption></figure>

15. Click on the "_Retarget Pose From Mesh_" node and set the "**IK\_Retargeter Asset**" value to "**RTG\_SamRokoko\_To\_Manny**":

<figure><img src="https://685620950-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWC1o0OgVXXEEVQ7SIZ9F%2Fuploads%2Fr128xjcASSbwsj09QoD7%2Fimage.png?alt=media&#x26;token=f9e5ee02-af6e-4fcb-b82c-b27849dcac93" alt=""><figcaption></figcaption></figure>

16. Finally, you can now use this circuit to register your local pawn as the local player avatar:

<figure><img src="https://content.gitbook.com/content/WC1o0OgVXXEEVQ7SIZ9F/blobs/n6SglzgUqvzpzgsXw89h/RegisterLocalPlayer.png" alt=""><figcaption></figcaption></figure>

The _BP\_ThirdPersonCharacter_ is ready to play Kinetix Emotes!
