Skeleton Assets

Choose your OS:

If you are familiar with digital content creation, you may already feel like you know what a "skeleton" is. In most 3D applications, a skeleton often is a digital hierarchical framework that is used to define bones or joints in a character and in many ways mimics a real biological skeleton. In Unreal Engine 4 (UE4), an important distinction is that a Skeleton asset is to associate animation data, not just bone hierarchy found within a Skeletal Mesh. In UE4, the Skeleton asset is what drives animation by associating bone (joint) data to animation tracks.

MayaSkeleton.png

SkeletonTree.png

Example Maya Skeleton

Example UE4 Skeleton Tree

The primary focus of the Skeleton asset is to handle animation data, not the Skeletal Mesh.

Another important facet of the Skeleton asset is that if your Skeletal Meshes share the same Skeleton asset (pending some basic rules are met), you can share animation data even if the hierarchy does not exactly match. The sharing of a Skeleton asset between Skeletal Meshes provides a way for you to share animations between characters or even entire Animation Blueprints used to define animation logic for a character.

In addition to driving animation, the Skeleton asset is responsible for:

  • Animation Retargeting - which allows the adjustment of animations for characters with different proportions.

  • Creating and saving Sockets - which allows you to attach things to your characters.

  • Storing Anim Notifies - which allow you to add effects to animations like footstep sounds, particle systems or even custom events that may trigger other code.

  • Storing Animation Curves (which can be used to drive Material Parameters or Morph Targets) and Slot Names (which can be used to play Anim Montages for a Character).

If you are new to animation in UE4, to obtain a greater understanding of Skeleton assets, it is recommended you check out the Working with Skeletons tutorial series:

Creating Skeleton Assets

The primary way to create a Skeleton asset occurs during the importing of a Skeletal Mesh. When importing a Skeletal Mesh, inside the FBX Import Options window, leaving the Skeleton field empty will automatically create a Skeleton asset based on the Skeletal Mesh being imported.

FBXImportOptionsWindow.png

After importing your Skeletal Mesh, the Skeleton asset will be created:

ImportedSkeletalMesh.png

Double-clicking on the Skeleton asset will open the Skeleton Editor:

SkeletonEditor.png

Every Skeletal Mesh or animation that you import into the Engine, requires an associated Skeleton asset. During the FBX Import process, instead of creating a Skeleton, you may use an existing Skeleton asset (pending the rules for sharing Skeleton assets are met). A Skeleton's initial proportions are defined by the original Skeletal Mesh from which it was created and is important to consider when retargeting animations.

Creating Skeletons - Context Menu

While creating a Skeleton asset during the import process of a Skeletal Mesh is more common, you can also create a Skeleton from any internal mesh from the right-click context menu. This enables you to create a new Skeleton with existing meshes within the Engine. If that mesh had another Skeleton associated with it, it will just relink to the new Skeleton and any animations will then link to the new Skeleton.

contextmenu.png

Using Skeleton Assets

During the FBX Import process of a Skeletal Mesh, you can use the Skeleton drop-down menu to select a Skeleton asset to associate with the mesh you are importing:

FBXImportSelectSkeleton.png

If you have followed the rules for sharing Skeleton assets, your Skeletal Mesh will be imported and assigned your selected Skeleton asset.

If the Skeleton asset you select during import is vastly different than the mesh you are importing and breaks any sharing rules, you will be presented with an error message:

FailedSkeleton.png

It is in these instances where you may need to create a new Skeleton asset for the Skeletal Mesh you are importing.

Rules for Sharing Skeleton Assets

An important feature of Skeleton assets is that a single Skeleton asset can be used by multiple Skeletal Meshes. Best of all, the bone hierarchies in each one do not need to be identical. They do, however, need to have the same general structure. Most importantly, the bone hierarchy from one Skeletal Mesh to another cannot be violated This means that the bone name and order of your bones must be consistent.

For example, consider a 3-bone limb with bones named 1, 2, and 3:

ExampleBoneHierarchy.png

If you had a second Skeletal Mesh that you intended to use the same Skeleton asset, it would need to keep those bones in the same order with the same names. You can, however, add bones that are peripheral to the hierarchy (characters that don't have those additional bones would just not use that data). So for example, your new hierarchy could look like this:

PeripheralBones.png

However, in order for both Skeletal Meshes to use the same Skeleton asset, you cannot re-order the hierarchy or re-name the bones. For instance, this is not valid:

ReorderedBones.png

In this instance, the second Skeletal Mesh uses a different bone hierarchy and would need a new Skeleton asset.

Additional Limbs

Because adding bones that are peripheral to the hierarchy is valid, it is easy to reuse Skeleton assets between Skeletal Meshes that have additional parts. Say, for example, you wanted to share animation between 3 different but similar character types, all having essentially the same bone structure (and same bone names) except for some key differences, such as:

  • A human male (for this example, this is like your basic character)

  • A human female with bones for a ponytail

  • A humanoid character with four arms

You could use the same Skeleton asset with all of these characters, and the result would be that the Skeleton asset would contain joint hierarchy information for all three types. The animation will use the Skeleton asset to determine what rotation to apply to each bone. Since the Skeletal Meshes are designed so that their base bone hierarchies are the same, the animations between them will work perfectly. The only difference is that you may need some special animations to drive the extra arms or ponytail on those characters.

Any time animation data is received for a bone that is not included in the Skeletal Mesh (say, if a ponytail animation was used on a character that used the same Skeleton asset but did not have a ponytail), then that animation data is ignored.