Aim Offset

Choose your OS:

AimOffset.png

An Aim Offset is an asset that stores a blendable series of poses to help a character aim a weapon. During animation, the result of the Aim Offset is blended with other motions such as running, walking, jumping, etc. to cause the character to appear to smoothly look in all directions.

The key concept behind Aim Offsets is that they are designed to be additively blended to existing animation. Therefore, if you were using an Aim Offset to make a character aim a weapon, for example, you would want to make sure that the other motions on the character are not getting in the way of that additive motion. Put another way, your run, idle, jump, and so on should have relatively rigid arms so that they can be additively controlled by the Aim Offset.

In many ways, an Aim Offset is just like a Blend Space. As such, you would do well to get a solid understanding of Blend Spaces before you use them. Please see the Blend Spaces documentation for details.

You can also refer to the Animation Content Examples page under section 1.4 for an example of an Aim Offset applied to a character.

Creating Aim Offsets

Creating an Aim Offset is done in the Content Browser just as with any other asset. You may either Right-click or use the New_Asset_Button.png button and choose Animation > Aim Offset from the context menu. You will notice that you also have the option of an Aim Offset 1D. These are the same as Aim Offsets, but only support input from one variable to control the blending, where a standard Aim Offset supports two.

When creating a new Aim Offset, you will have to designate a Skeleton asset. Be sure to choose the same one used by the Skeletal Mesh you wish to use with the Aim Offset.

Aim Poses

Since the purpose of the Aim Offset is to additively combine a series of poses to help aim, we will now discuss the types of poses you will generally need to create. The number of poses you will actually need is highly dependent on the motions your character will need to do. Below is an extreme example:

Aim_RBU.png

Aim_RU.png

Aim_CU.png

Aim_LU.png

Aim_LBU.png

Up Right Behind

Up Right

Up Center

Up Left

Up Left Behind

Aim_RBC.png

Aim_RC.png

Aim_CC.png

Aim_CL.png

Aim_LBC.png

Center Right Behind

Center Right

Center

Center Left

Center Left Behind

Aim_RBD.png

Aim_RD.png

Aim_CD.png

Aim_LD.png

Aim_LBD.png

Down Right Behind

Down Right

Down

Down Left

Down Left Behind

If you were to use a setup like this, however, you would need to be extra careful about how you allow the yaw (side-to-side) motion to animate. For example, the motions you see above will look just fine when the character is standing still. But if you allow the character to twist all the way around while running, you could end up with a nasty result like this:

Character-TwistedBody.png

For this reason, Aim Offsets are often set up to just aim the character up and down, rather than side to side, allowing the rotation of the actual character to deal with side-to-side motion. However, you could use a series of poses as shown above; you would simply want to use the Animation Blueprint to limit the incoming data for the Aim Offset so that the side-to-side extremes were only in use when the character was stationary.

Mesh Space

Once you import each of the poses you need into Unreal Engine, you will need to set some specific properties on them to make them compatible with Aim Offsets. Under the Additive Settings category, make sure to set the following:

  • Additive Aim Type - AAT_MeshSpace

Aim Offsets only accept animations with an Additive Aim Type of Mesh Space.

Mesh space is a bit of a different approach for extracting delta of additive animation, in that it is only used in certain instances such as Aim Offset assets. Mesh space uses the mesh's bounding box as its base for rotation, allowing rotations to move in the same direction regardless of the orientation of chain of the bone in the Skeletal Mesh. Consider a character that was leaning to the side, but needing to aim a pistol upwards. If that upward aiming motion was in Local space, then the aim would rotate outward, in the direction of the lean.

BaseIdle.png

AimUp.png

Base Idle Pose

Upward Aim

LeaningIdle.png

LocalSpaceLean.png

MeshSpaceCorrected.png

Leaning Pose

Leaning with Upward Aim (Local Space)

Leaning with Upward Aim (Mesh Space)

This is solved with Mesh space rotation. Since rotation is based on the Skeletal Mesh's box, the orientation of that rotation remains constant no matter what the character is doing. So even though the character might be leaning sideways, the upward aim would still rotate in an upward direction.

Mesh space is set as a property of an Animation Sequence. Under the Additive Settings category, you will see the Additive Anim Type property. Setting this to Mesh Space will utilize the Mesh coordinate space as described. This is a fairly expensive blending operation, and should generally only be used by certain types of Blend Spaces where you know you need the animation to move in a constant direction, such as in the case of an Aim Offset.

Performance

animOffsetNode.png

When an Aim Offset node is placed in the Anim Graph you can adjust their performance using the LOD Threshold property, introduced in 4.11, you can find the setting for this in the Details Panel for the Aim Offset node.

perf.png

Property

Description

LOD Threshold

This is the max Level of Detail (LOD) that this node is permitted to run on. For example: if you have LOD Threshold set to 2, it will run until LOD 2, but disable itself once the component's LOD becomes 3.

Tags