Welcome to Swift Motion Toolkit Manual

Overview

Swift Motion Toolkit is a set of character animation tools that integrates functions such as mo-cap resource import, animation retargeting, and Root Motion processing, etc. At the same time, it also supports retargeting AnimSequence assets between different skeletal meshes.

Features

  • Import mo-cap animation in BVH format and provide a preview.
  • Retarget mo-cap animation to AnimSequence asset.
  • Supports more precise restoration of the position of end joints using IK.
  • Supports synchronizing root motion to root bone and IK bones.
  • Supports baking vertical or (and) horizontal root displacements into animations.
  • Support for selectively preserving root rotation.
  • Support for converting animations with root motion to in-place animations.

Purchase page

With source code version

Precompiled binary version

Showcase

Vedio Tutorial

Swift Motion Toolkit tutorials 01

Swift Motion Toolkit tutorials 02

Swift Motion Toolkit tutorials 03

Motion Hierarchy

Motion Hierarchy asset contains the skeleton hierarchy used in mo-cap animation and a retarget base pose.

Motion Data

Motion Data contains a series of pose data related to time in mo-cap animations. And hold a reference to a Motion Hierarchy asset. This Motion Hierarchy asset can explain the hierarchy of each pose in Motion Data.

Motion Hierarchy Retargetable

Motion Hierarchy Retargetable holds a reference to a Motion Hierarchy asset. This asset allows users to define several bone chains for action retarget, and allows users to define new retarget base poses (if the retarget base pose is not defined in Motion Hierarchy Retargetable, the retarget base pose in Motion Hierarchy will be used).

Skeleton Hierarchy

Skeleton Hierarchy holds a reference to a USkeleton asset. This asset allows users to define a new retarget base pose (if the retarget base pose is not defined in Skeleton Hierarchy, the retarget base pose in USkeleton will be used).

Skeleton Hierarchy Retargetable

Skeleton Hierarchy Retargetable holds a reference to a Skeleton Hierarchy * asset. This asset allows users to define several bone chains for action retarget, and a new retarget base pose (if the retarget base pose is not defined in Skeleton Hierarchy Retargetable, the retarget base pose in Skeleton Hierarchy will be used).

Motion to AnimSeq Retargeter

Motion to AnimSeq Retargeter holds a pair of Hierarchy Retargetable as the source and target for retarget. This asset allows users to configure the bone chain mapping tables of the source and target, as well as FK, IK, and Root Motion. And provide a preview and export of the retarget results.

Editor

Motion Hierarchy Editor

Support preview and editing of Motion Hierarchy.

motion_hierarchy_editor_overview

1. Hierarchy Tree Tab

motion_hierarchy_tree_tab

2. Asset Details

motion_data_editor_overview

Property Description
Left Joint Identification List Left Joint Identification List
Flag The identifier in the joint name
Type Identification type: 1. Prefix 2. Suffix 3. Contain
Left Joint Display Color The color displayed for the left joint
Right Joint Identification List Right Joint Identification List
Flag The identifier in the joint name
Type Identification type: 1. Prefix 2. Suffix 3. Contain
Right Joint Display Color The color displayed for the right joint
Other Joint Display Color The color displayed for other joints

(Note: Multiple elements are allowed in the identification list. If the joint name meets any of these conditions, it is judged as 'TRUE'.)

3. Viewport Tab

hierarchy_viewport_details_tab

4. Details Tab

edit_retarget_base_pose

5. Retarget Base Pose Tab

edit_retarget_base_pose

Control Description
Use Current Pose Write the pose in the viewport to Retarget Base Pose
Restore to Base Pose Restore Retarget Base Pose to a viewport
Reset Pose Write the reference pose to Target Base Pose

Motion Data Editor

Support preview of Motion Data.

motion_data_editor_overview

1. Hierarchy Tree Tab

motion_hierarchy_tree_tab

2. Asset Details Tab

motion_hierarchy_retargetable_asset_details_tab

3. Viewport Tab

motion_hierarchy_viewport_details_tab

4. Player Controller Tab

player_controller_tab

Zoom can be done through the scroll wheel motion_data_player_controller_zoom

Right click drag to pan the timeline left and right motion_data_player_controller_pan

play_control_widgets_introduce

Control Description
1. Spin Box Write the pose in the viewport to Retarget Base Pose
2. Retarget Base Pose Snapshot Snapshot and upate Retarget Base Pose in hierarchy asset

5. Details Tab

edit_retarget_base_pose

6. Motion Data Browser Tab

motion_data_browser

Motion Hierarchy Retargetable Editor

Support preview and editing of Motion Hierarchy Retargetable.

motion_hierarchy_retargetable_overview

1. Hierarchy Tree Tab

motion_hierarchy_tree_tab

2. Asset Details Tab

motion_hierarchy_retargetable_asset_details_tab

3. Viewport Tab

motion_hierarchy_viewport_details_tab

4. Details Tab

edit_retarget_base_pose

5. Edit Retarget Base Pose Tab

edit_retarget_base_pose

Control Description
Use Current Pose Write the pose in the viewport to Retarget Base Pose
Restore to Base Pose Restore Retarget Base Pose to a viewport
Reset Pose Write the reference pose to Target Base Pose

6. Retarget Chains Tab

chain_settings

Allow copy and paste

retarget_chain_copy_paste.gif

Skeleton Hierarchy Editor

Supports preview and editing of Skeleton Hierarchy. skeleton_hierarchy_retargetable_editor_overview

1. Hierarchy Tree Tab

skeleton_hierarchy_tree_tab

2. Asset Details

motion_data_editor_overview

Property Description
Left Joint Identification List Left Joint Identification List
Flag Left Joint Identification List
Type Identification type: 1. Prefix 2. Suffix 3. Contain
Left Joint Display Color The color displayed for the left joint
Right Joint Identification List Right Joint Identification List
Flag The identifier in the joint name
Type Identification type: 1. Prefix 2. Suffix 3. Contain
Right Joint Display Color The color displayed for the right joint
Other Joint Display Color The color displayed for other joints

(Note: Multiple elements are allowed in the identification list. If the joint name meets any of these conditions, it is judged as 'TRUE'.)

3. Viewport Tab

skeleton_hierarchy_viewport_details_tab

4. Details Tab

skeleton_hierarchy_details

5. Retarget Base Pose Tab

edit_retarget_base_pose

Control Description
Use Current Pose Write the pose in the viewport to Retarget Base Pose
Restore to Base Pose Restore Retarget Base Pose to a viewport
Reset Pose Write the reference pose to Target Base Pose

Skeleton Hierarchy Retargetable Editor

Support for preview and editing of Skeleton Hierarchy Retargetable. skeleton_hierarchy_retargetable_editor_overview

1. Hierarchy Tree Tab

skeleton_hierarchy_tree_tab

2. Asset Details Tab

skeleton_hierarchy_retargetable_asset_details_tab

3. IK Settings Tab

skeleton_hierarchy_retargetable_ik_settings_tab

Control Control Description
1 Add New Solver Add New Solver
2 Check box Enable/Disable solver
3 Trash can icon button Delete corresponding solver

(Note: Select any solver , and its configuration interface will be displayed in the Details tab.)

4. Viewport Tab

skeleton_hierarchy_retargetable_viewport_tab

5. Details Tab

skeleton_hierarchy_retargetable_details

Property Description
Use Pole Vector Whether to use pole vector
Pole Vector Pole Vector
Target Alpha Target application level
Target Alpha Target tolerance amount
Tip Bone Keep Local Rot Whether the end node keeps the rotation of the Local space after applying IK, or keeps the rotation of the Global space before applying IK
Joint Chain Name Bone chain name

6. Edit Retarget Base Pose Tab

edit_retarget_base_pose

Control Description
Use Current Pose Write the pose in the viewport to Retarget Base Pose
Restore to Base Pose Restore Retarget Base Pose to a viewport
Reset Pose Write the reference pose to Target Base Pose

7. Retarget Chains Tab

skeleton_hierarchy_retargetable_chain_settings

Allow copy and paste

retarget_chain_copy_paste.gif

Motion to AnimSeq Retargeter Editor

Supports retarget settings between source and target and preview of results. motion_to_animseq_retargeter_editor_overview

1. Hierarchy Tree Tab

skeleton_hierarchy_tree_tab

2. Asset Details Tab

motion_to_animseq_retargeter_asset_details_tab

Property Description
Source Source Retargetable
Target Target Retargetable
Horizontal Root Offset Scale Root offset scaling in the horizontal direction
Verticle Root Offset Scale Root offset scaling in the vertical direction
Convert Motion To Root Bone Set motion to root bone
Bake Root Rotation in Animation Bake the rotation of the root node to the animation
Keep Root Rotation Around Up Only Keep Root only around the rotation in the upward direction
Bake Root Verticle Translation in Animation Bake the vertical displacement of the root node to the animation
Bake Horizontal Translation in Animation Bake the horizontal displacement of the root node to the animation
Convert to In Place Animation Whether to convert to in-place animation
IKCorrection Enalbe Whether to enable IK

3. Source Viewport Tab & Target_Viewport Tab

motion_to_animseq_retargeter_src_target_viewport_tab

4. Player Controller Tab

player_controller_tab

Zoom with scroll wheel motion_data_player_controller_zoom

Right-click and drag to pan the timeline left and right motion_data_player_controller_pan

5. Details Tab

motion_to_animseq_retargeter_details

Property Description
Source Chain Source bone chain
Target Chain Target joint chain
Rotation Mode Select the mode for establishing the mapping relationship between the source and target chains.

6. Motion Data Browser Tab

motion_to_animseq_retargeter_motion_data_browser

7. Chain Mapping Tab

motion_to_animseq_chain_mapping

Control Description
Auto-Map Chains Attempt to automatically pair by name.
Drop-down menu in the Source Chain column Manually select the source joint chain

Quick Start

In this quick start guide we will show you how to import a mo-cap file saved in bvh format into Unreal Engine Editor and retarget it to skeletal animation of an existing character. It also shows how to convert animations between two characters with different bone hierarchies, such as retargeting animations downloaded from the mixamo.com website to standard Unreal Engine skinned characters. For more detailed use, please refer to the Video Tutorials

Enable plugin

Download and make sure to enable the plugin in the editor.

open_plugins_panel

swift_motion_toolkit_in_plugins_panel

Retarget mo-cap to AnimSequence asset

Import motion capture resources

Drag and drop the Mocap resource file in bvh format to the Content Browser of Unreal Engine.

lafan_bvh_files_in_explorer

You can choose to import Hierarchy assets only or Motion Data assets as well. If you need to import a Motion Data asset, you must select a compatible Hierarchy asset. You can check to import Hierarchy assets or select existing Hierarchy assets.

bvh_importer_option_ui

If you choose to import both, the result is shown in the image below:

mocap_related_assets

(1) is Motion Data, (2) is Motion Hierarchy

Assets can be double-clicked to open them for viewing in the Motion Data Editor and Motion Hierarchy Editor respectively.

Adjust the Base Retarget Pose in the Motion Hierarchy asset to TPose

retarget_base_pose_edit_before

Before

retarget_base_pose_edit_after

After

In the Edit Retarget Base Pose panel:

  • Click the Use Current Pose button to set the pose in the viewport to the Retarget Base Pose used by the Retargetable asset.
  • Click the Restore to Base Pose button to restore the pose in the viewport to Retarget Base Pose.
  • Click the Reset Pose button to reset the pose in the viewport to the Retarget Base Pose used by the Hierarchy asset that the Retargetable depends on.

Create the Motion Hierarchy Retargetable asset

by selecting the Motion Hierarchy Retargetable option in the Swift Motion Toolkit category of the Content Browser context menu.

create_motion_hierarchy_retargetable_asset

In the popup select the Motion Hierarchy asset as the retarget source.

create_motion_hierarchy_retargetable_asset_pick_hierarchy

The following is the Motion Hierarchy Retargetable asset created:

motion_hierarchy_retargetable_in_content_browser

Double-click an asset to open the corresponding editor:

In the Joint Chain Settings panel, the Joint Chain and the Retargetable Root Bone for the current Retargetable can be defined.

motion_bone_chain_edit

Create the Skeleton Hierarchy asset.

Via selecting the Skeleton Hierarchy option in the Swift Motion Toolkit category of the Content Browser context menu.

create_skeleton_hierarchy

Select the Skeletal Mesh asset in the popup .

create_skeleton_hierarchy_pick_mesh

The Skeleton Hierarchy asset created is as follows :

skeleton_hierarchy_asset_in_content_browser

Double-click an asset to open the corresponding editor:

open_skeleton_hierarchy_editor

Edit Retarget Base Pose in the viewport (recommend adjusting it to T Pose).

skeleton_retarget_base_pose_edit_before Before

skeleton_retarget_base_pose_edit_after After

In the Edit Retarget Base Pose panel:

  • Click the Use Current Pose button to set the pose in the viewport to the Retarget Base Pose used by the Retargetable asset.
  • Click the Restore to Base Pose button to restore the pose in the viewport to Retarget Base Pose.
  • Click the Reset Pose button to reset the pose in the viewport to the Retarget Base Pose used by the Hierarchy asset that the Retargetable depends on.

skeleton_retarget_use_current_pose

Create the Skeleton Hierarchy Retargetable asset.

Via selecting the Skeleton Hierarchy Retargetable option in the Swift Motion Toolkit category of the Content Browser context menu.

create_skeleton_hierarchy_retargetable

Select the Skeleton Hierarchy asset in the popup .

create_skeleton_hierarchy_retargetable_pick_mesh

The following is the created Skeleton Hierarchy Retargetable asset:

skeleton_hierarchy_retargetable_in_content_browser

Double-click an asset to open the corresponding editor:

open_skeleton_hierarchy_retargegtable_editor

In the Joint Chain Settings panel, it is possible to define the Joint Chain and the Retargetable Root Bone for the current Retargetable.

skeleton_retarget_bone_chain_edit

Create Motion to AnimSeq Retargeter

By selecting Motion to AnimSeq from the Swift Motion Toolkit category in the Content Browser context menu The Retargeter option creates corresponding assets.

create_motion_2_seq_retargetable

In the pop-up window select the Motion Hierarchy Retargetable asset for the source and the Skeleton Hierarchy Retargetable asset for the target respectively.

create_create_motion_2_seq_retargetable_pick_src_target

The Motion to AnimSeq created is as follows Retargeter assets:

motion_2_seq_retargeter_in_content_browser

Double-click an asset to open the corresponding editor:

open_motion_2_seq_retargeter_editor

In the Chain Mapping panel, we can set the mapping relationship between the retarget source and target Joint Chains.

source_and_target_chain_mapping

Then double-click on the asset in the Motion Data Browser to preview the retargeting result in the viewport.

motion_retargeter_browser

mocap_to_ue_mesh_preview

Retarget between AnimSequence assets

for using an AnimSequence asset as a retarget source is similar to using a Mocap asset as a retarget source. We first need to create a Hierarchy asset and a Hierarchy Retargetable asset based on the Skeletal Mesh asset of the retarget source. Then use the Retargeter asset to create a mapping between the two for retarget. Converted assets can be used out of the box in Unreal Engine because our tool does proper handling of root joints and IK joints.

Source animation download from mixamo.com

source_anim_download_from_mixamo

Create the Skeleton Hierarchy asset for the source animation.

Via selecting the Skeleton Hierarchy option in the Swift Motion Toolkit category of the Content Browser context menu.

create_mixamo_skeleton_hierarchy

In the popup select the Skeletal Mesh asset as the retarget source.

create_mixamo_skeleton_hierarchy_pick_mesh

The Skeleton Hierarchy asset created is as follows :

mixamo_skeleton_hierarchy_asset_in_content_browser

Double-click an asset to open the corresponding editor:

open_mixamo_skeleton_hierarchy_editor

In the Edit Retarget Base Pose panel:

  • Click the Use Current Pose button to set the pose in the viewport to the Retarget Base Pose used by the Retargetable asset.
  • Click the Restore to Base Pose button to restore the pose in the viewport to Retarget Base Pose.
  • Click the Reset Pose button to reset the pose in the viewport to the Retarget Base Pose used by the Hierarchy asset that the Retargetable depends on.

skeleton_retarget_use_current_pose

Create the Skeleton Hierarchy Retargetable asset for the source animation.

Via selecting the Skeleton Hierarchy Retargetable option in the Swift Motion Toolkit category of the Content Browser context menu.

create_mixamo_skeleton_hierarchy_retargetable

Select the Skeleton Hierarchy asset in the popup .

create_mixamo_skeleton_hierarchy_retargetable_pick_mesh

The following is the created Skeleton Hierarchy Retargetable asset:

mixamo_skeleton_hierarchy_retargetable_in_content_browser

Double-click an asset to open the corresponding editor:

open_smixamo_keleton_hierarchy_retargegtable_editor

Because there is already a fully consistent Joint Chains definition in other Retargetable, we can copy it from there. (Even if it is not consistent, it can be copied. Our tool will ignore the Joint Chains that do not match the Hierarchy correctly.)

copy_motion_bone_chain_mapping Copy

paste_motion_bone_chain_mapping Paste

Set retarget root bone

set_mixamo_retargetable_root_bone

Create Motion to AnimSeq Retargeter(reuse the previously created Target Skeleton Hierarchy Retargetable)

Via selecting Motion to AnimSeq from the Swift Motion Toolkit category in the Content Browser context menu The Retargeter option creates corresponding assets.

create_mixamo_motion_2_seq_retargeter

In the pop-up window select the Motion Hierarchy Retargetable asset for the source and the Skeleton Hierarchy Retargetable asset for the target respectively.

create_create_mixamo_motion_2_seq_retargeter_pick_src_target

The Motion to AnimSeq created is as follows Retargeter assets:

mixamo_motion_2_seq_retargeter_in_content_browser

Double-click an asset to open the corresponding editor:

open_mixamo_motion_2_seq_retargeter_editor

In the Chain Mapping panel, we can set the mapping relationship between the source and target Joint Chains.

source_and_target_chain_mapping

Then double-click on the asset in the Motion Data Browser to preview the retargeting result in the viewport.

mixamo_motion_retargeter_browser

mixamo_to_ue_mesh_preview

Special statement and acknowledgment

The resources used for demonstration in the video come from:

ubisoft-laforge-animation-dataset

mixamo

www.ianxmason.com/100style

The original image of the plugin's icon comes from:

unsplash.com/photos/90v3asMhhL0 Kate Rogge's dance moves are elegant and extraordinary.