Motion Symphony supports runtime mirroring for most nodes. While there is some overhead to this, it can be a quick way to improve animation coverage and save on memory by avoid mirrored source animations.
Note: Whether you use runtime mirroring or author mirrored animations the choice is up to you. This feature is completely optional.
Before any mirroring takes place, a mirroring profile must be created for any skeleton that you wish to mirror. These profiles store the rules for mirroring each bone in it’s linked skeleton. To create and setup a mirroring profile, follow the steps below.
Step 1: Right click in your content browser and choose Animation/MirroringProfile. Name the new asset as you like and double click it to open up its details editor.
Step 2: Set the source skeleton in the mirroring profile details panel and take note of the default mirror settings. Ensure that the ‘Left Affix’ and ‘Right Affix’ match the naming convention of left and right bones in your skeleton.
Note: The default Mirror Axis and flip axis for the UE4 Mannequin is Y and X respectively. If your skeleton does not conform to the UE4 standard orientations then it may be different. You will have to experiment with this to get it right.
Step 3: Right click on the mirroring profile and choose ‘Auto Remap Bones’ in the context menu. This will process the skeleton and create a list of bone mappings under the ‘Bone Pairs’ heading in the asset’s details editor.
Note: If the naming conventions on the skeleton are not consistent throughout all bones then the mirroring profile cannot automatically predict all bones. In such a case manual editing of the mirror pairs that do not conform to a single naming convention will be required.
Step 4: Test the mirroring profile with one of the motion symphony nodes. You may find that the mirroring profile needs tweaking before mirroring will work correctly. This is because different skeletons and bones have different orientations that need to be tweaked in the mirroring profile. This includes Mirror Axis, Flip Axis and Rotation Offset. Also check that your left / right mirror pairs mapped correctly. For any mirror pairs (i.e. with left and right version) make sure that the mirror axis and flip axis is set to ‘None’
Note: It may take some time to get the mirroring profile working correctly the first time but once it is set up for a particular skeleton it does not need to be modified again.
Each mirror pair in the profile list contains data informing how any given bone should be mirrored. This data can differ from skeleton to skeleton and the automatic mapping may not get every setting correct.
Bone Name (Auto) - The name of the bone to mirror
Mirror Bone Name (Auto) - The name of the bone that is be directly mirrored for this pair. This will be the same as ‘bone’ name if there is no mirror bone (e.g. for a central bone like pelvis or spine)
Mirror Axis - The axis to mirror the bone transform around. This axis is dependent on the bone orientation itself and may differ from skeleton to skeleton and bone to bone. You will need to manually set this for some bones as the AutoMapping tool simply uses the default settings.
Flip Axis -The axis to flip on the bone transform.
Has Mirror Bone (Auto) - Does the bone have a mirror bone on the opposite side of the skeleton? This will be automatically detected.
Rotation Offset - Any rotational offset that needs to be applied to the bone when mirroring. (e.g. on the UE4 mannequin the ‘thigh’ bones need a rotational offset of 180degrees on the Z axis in order to work properly)
Please see the mirror profile for the UE4 Mannequin Skeleton available with the example project.
With the exception of the ‘Motion Matching’ node, root motion is not supported for runtime mirroring. This is due to limitations with UE4’s root motion system.