> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kinemation.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Animation setup

> Retarget Sci-Fi FPS Pack animations to a custom Unreal Engine character and apply them through an animation override.

export const AnimationOverride = ({productName, intro, targetMeshName, overrideAssetName, createOverrideImageCaption, createOverrideImage, targetConfigName, targetConfigImageCaption, targetConfigImage, retargetActionImageCaption, retargetActionImage, ikRetargeterName, retargetAssetSummary, retargeterImageCaption, retargeterImage, resultFolderName, resultFolderImageCaption, resultFolderImage, characterBlueprintName, finalMeshImageCaption, finalMeshImage, finalStateImageCaption, finalStateImage, expectedResult}) => <>
    <p>{intro}</p>
    <Steps><Step title="Create the override asset"><p>In the Content Browser, select <code>{targetMeshName}</code>. Right-click it and choose <strong>Scripted Asset Actions &gt; Create Animation Override</strong>. Unreal creates <code>{overrideAssetName}</code> as a data asset.</p>
    <Frame caption={createOverrideImageCaption}>{createOverrideImage}</Frame></Step><Step title="Assign the target configuration"><p>Select <code>{overrideAssetName}</code>. Set <strong>Config</strong> to <code>{targetConfigName}</code> and confirm that <strong>Character Mesh</strong> references <code>{targetMeshName}</code>.</p>
    <Frame caption={targetConfigImageCaption}>{targetConfigImage}</Frame></Step><Step title="Open the retarget window"><p>Right-click <code>{overrideAssetName}</code> and choose <strong>Scripted Asset Actions &gt; Retarget Animations</strong>.</p>
    <Frame caption={retargetActionImageCaption}>{retargetActionImage}</Frame></Step><Step title="Configure and run the retarget"><p>In the <strong>Retargeting</strong> section, set <strong>IKRetargeter</strong> to <code>{ikRetargeterName}</code>. Confirm that <strong>Source Mesh</strong> and <strong>Target Mesh</strong> resolve to the intended skeletons. Review {retargetAssetSummary} under <strong>Animations</strong> and <strong>Anim Blueprints</strong>, then click <strong>Retarget</strong>.</p>
    <Frame caption={retargeterImageCaption}>{retargeterImage}</Frame></Step><Step title="Choose the result folder"><p>Choose the project-owned <code>{resultFolderName}</code> folder when the retarget window asks where to store the generated assets. Keep generated files outside the imported pack content.</p>
    <Frame caption={resultFolderImageCaption}>{resultFolderImage}</Frame><p>After retargeting completes, select <code>{overrideAssetName}</code> again and run <strong>Scripted Asset Actions &gt; Update Override</strong>. This refreshes the <strong>Animation Overrides</strong> and <strong>Anim Blueprint Overrides</strong> maps with the generated replacements.</p>
    </Step><Step title="Apply the override to the character Blueprint"><p>Open <code>{characterBlueprintName}</code>. Select its <strong>Mesh</strong> component and set <strong>Skeletal Mesh Asset</strong> to <code>{targetMeshName}</code>.</p>
    <Frame caption={finalMeshImageCaption}>{finalMeshImage}</Frame><p>Then select the <strong>Gameplay Animation</strong> component (<code>AC_GameplayAnimation</code>) and add <code>{overrideAssetName}</code> under <strong>Overrides</strong>. Save the Blueprint. The override list should contain the new asset as shown in the final state.</p>
    <Frame caption={finalStateImageCaption}>{finalStateImage}</Frame></Step></Steps>
    <Check>{expectedResult}</Check>
  </>;

export const VirtualBones = ({skeletonAssetName, bones}) => <>
    <p>Prepare {skeletonAssetName} before retargeting. The procedural animation uses these virtual bones to position the hands and weapon, track elbow targets, and read camera motion.</p>
    <p>Open the Skeleton and find the parent bone in the <strong>Skeleton Tree</strong>. Right-click it, choose <strong>Add Virtual Bone</strong>, and select the target bone. Rename the new entry to match the table, including Unreal's <code>VB</code> prefix.</p>
    <p>Add the bones in this order so <code>VB ik_hand_gun</code> exists before you create its children. The parent provides the reference space; the target is the bone the virtual bone follows.</p>
    <table>
      <thead><tr><th>Virtual bone</th><th>Parent</th><th>Target</th></tr></thead>
      <tbody>{bones.map(bone => <tr key={bone.name}><td><code>{bone.name}</code></td><td><code>{bone.parent}</code></td><td><code>{bone.target}</code></td></tr>)}</tbody>
    </table>
    <p>Keep existing entries if their names, parents, and targets already match. Save the Skeleton before continuing.</p>
  </>;

Use your character mesh with the pack's movement, weapon actions, and procedural animation. Start with a duplicate of `BP_SciFi_Character`; this guide calls it `BP_ProjectPlayer`. The example mesh is `SKM_Operator`; use your own mesh and a compatible IK Retargeter.

## 1. Add the virtual bones

<VirtualBones
  skeletonAssetName="the Skeleton used by your character mesh"
  bones={[
{ name: "VB ik_hand_gun", parent: "head", target: "ik_hand_gun" },
{ name: "VB hand_r", parent: "VB ik_hand_gun", target: "hand_r" },
{ name: "VB hand_l", parent: "VB ik_hand_gun", target: "hand_l" },
{ name: "VB lowerarm_r", parent: "VB ik_hand_gun", target: "lowerarm_r" },
{ name: "VB lowerarm_l", parent: "VB ik_hand_gun", target: "lowerarm_l" },
{ name: "VB ik_hand_gun_r", parent: "hand_r", target: "ik_hand_gun" },
{ name: "VB ik_hand_gun_l", parent: "hand_l", target: "ik_hand_gun" },
{ name: "VB Curves", parent: "root", target: "root" },
{ name: "VB Camera", parent: "root", target: "head" }
]}
/>

## 2. Retarget and apply the animations

<AnimationOverride
  productName="Sci-Fi FPS Pack"
  intro="An animation override connects the original animation assets to the versions retargeted for your Skeleton. The weapon views can keep their existing animation references: the character animation component looks up the replacements when it plays them."
  characterBlueprintName="BP_ProjectPlayer"
  targetConfigName="DA_SciFi-FPS_Config"
  targetMeshName="SKM_Operator"
  overrideAssetName="DA_SKM_Operator_Override"
  ikRetargeterName="IKRetargeter_UE5_UE5"
  retargetAssetSummary="the animation assets and Animation Blueprints listed by your configuration"
  resultFolderName="Retargeted"
  finalMeshImageCaption="Set the target mesh on the character Blueprint Mesh component."
  finalMeshImage={
<img
  src="https://mintcdn.com/kinemation/BvKUc44M8EsdeT19/images/gameplay-framework/unreal/AnimationOverride_AssignCustomCharacterMesh.png?fit=max&auto=format&n=BvKUc44M8EsdeT19&q=85&s=bcf8b92d1e11fa202f4fcd14f42eb922"
  alt="Character Blueprint Mesh component with Skeletal Mesh Asset set to SKM_Operator"
/>
}
  createOverrideImageCaption="Create an animation override from the custom skeletal mesh."
  createOverrideImage={
<img
  src="https://mintcdn.com/kinemation/BvKUc44M8EsdeT19/images/gameplay-framework/unreal/CreateAnimationOverrideMenu.png?fit=max&auto=format&n=BvKUc44M8EsdeT19&q=85&s=94fd31045896255190ea53ec88f90547"
  alt="Unreal Content Browser with SKM_Operator selected and Create Animation Override highlighted under Scripted Asset Actions"
/>
}
  targetConfigImageCaption="Assign the target configuration and character mesh to the override asset."
  targetConfigImage={
<img
  src="https://mintcdn.com/kinemation/BvKUc44M8EsdeT19/images/gameplay-framework/unreal/AnimationOverride_AssignTargetConfig.png?fit=max&auto=format&n=BvKUc44M8EsdeT19&q=85&s=953eb75615d66f54940740921ea4e529"
  alt="Animation override data asset with Config set to DA_SciFi-FPS_Config and Character Mesh set to SKM_Operator"
/>
}
  retargetActionImageCaption="Open Retarget Animations for the created override asset."
  retargetActionImage={
<img
  src="https://mintcdn.com/kinemation/BvKUc44M8EsdeT19/images/gameplay-framework/unreal/AnimationOverride_RetargetAnimations.png?fit=max&auto=format&n=BvKUc44M8EsdeT19&q=85&s=403c94609ac9b7a67607cc9fa954efe8"
  alt="Unreal Content Browser context menu for DA_SKM_Operator_Override with Retarget Animations highlighted"
/>
}
  retargeterImageCaption="Choose the UE5-to-UE5 IK Retargeter in the Override Retarget window."
  retargeterImage={
<img
  src="https://mintcdn.com/kinemation/BvKUc44M8EsdeT19/images/gameplay-framework/unreal/AnimationOverride_Retarget_PickIKRetargeterAsset.png?fit=max&auto=format&n=BvKUc44M8EsdeT19&q=85&s=b8015b16a86ed987d831b3949cc85746"
  alt="Override Retarget window with IKRetargeter_UE5_UE5 selected and UE4 and UE5 retargeter assets visible"
/>
}
  resultFolderImageCaption="Choose the project-owned folder for the generated retargeted assets."
  resultFolderImage={
<img
  src="https://mintcdn.com/kinemation/BvKUc44M8EsdeT19/images/gameplay-framework/unreal/AnimationOverride_Retarget_ResultFolder.png?fit=max&auto=format&n=BvKUc44M8EsdeT19&q=85&s=095f83da13dc7db8354c6eb778a4662d"
  alt="Unreal Content Browser showing the Retargeted folder and DA_SKM_Operator_Override data asset"
/>
}
  finalStateImageCaption="Final state with the animation override added under the Gameplay Animation component Overrides list."
  finalStateImage={
<img
  src="https://mintcdn.com/kinemation/BvKUc44M8EsdeT19/images/gameplay-framework/unreal/AnimationSettings_AddAnimationOverrideAsset.png?fit=max&auto=format&n=BvKUc44M8EsdeT19&q=85&s=797319e8dca96a2f4168c5036dd72a68"
  alt="Gameplay Animation component with DA_SKM_Operator_Override added under Overrides"
/>
}
  expectedResult="BP_ProjectPlayer uses the target mesh, AC_GameplayAnimation contains the animation override, and the override maps route playback to the retargeted assets without modifying the original Sci-Fi FPS Pack content."
/>

## Check the result

Play as `BP_ProjectPlayer` and test idle, movement, aiming, weapon switching, and reloading. The hands should follow the weapon through each action. If the pose is wrong, check the virtual-bone names and targets, the retargeted layer classes, and the override assigned to **Gameplay Animation**.

## Next step

Continue to [Project integration](/sci-fi-fps-pack/unreal/tutorials/project-integration).
