Animation Troubleshooting and Deep Dive

This article covers a few technicalities regarding how KeyShot handles animations, some more or less hidden features and workarounds.

This article covers animation order and hierarchy, dynamic pivots, mirroring and keyframe handling

Prerequisites

  • KeyShot Pro

Animation Order/Hierarchy

Below is the same geometry and animation with one little difference. The disk and the cross are in a group. That group has a rotation and before that, the disc is translated.
The left one uses the Original Local Axis Orientation, while the right one uses Global.

Here are a few key points about how KeyShot handles the animation order

  • The order in the Animation Timeline is not used at all
  • The animations are evaluated in the order they appear in the Scene Tree from top to bottom.
  • If "Dynamic pivot point" is enabled, all animations above the object chosen as the pivot point in the Scene Tree will be evaluated.
    Any animations placed below will not.

  • Translations along the Global Axis are an exception, they are always evaluated last, regardless of the order of its animation in the Scene Tree
    • Therefore, in the above example, even though the rotation is above the translation and the rotation occurring first, if the translation uses global axis, it will still be evaluated after the rotation.
    • Translation around the Global Axis should not be followed by a rotation or applied to the root level
    • For advanced animations, translations around the Global Axis should be avoided
      • Local Axis Orientation or
      • Keyframes should be used instead.
  • Rotations around the Global Axis behave normally and are not an exception like the translation.

Dynamic Pivot

If you have a rotation that follows another rotation that uses a different Pivot Point, the pivot of the following animation might be offset.
In order to fix this

If you have a rotation that follows another rotation that uses a different Pivot Point

Mirroring Animations

As of 2024.2, when mirroring an Animation Group, unfortunately, while the animation strips themselves are mirrored correctly in the timeline, the animation order in the Scene Tree is not reversed.

If the animation is a bit more complex and involves multiple rotations, it results in the ending position not matching the starting position, since by default, the automatic mirroring results in the wrong order (left object).
For example if the original animation is

  • Rotation1,
  • Rotation2,
  • Translation3
The default mirror result will be
  • Rotation1 mirror,
  • Rotation2 mirror,
  • Translation3 mirror
It should however not just be the reverse animation, but also the reverse order (middle object)
  • Translation3 mirror,
  • Rotation2 mirror,
  • Rotation1 mirror

However, that still results in a wrong animation. While the end position matches the starting position, the reverse animation deviates from the path of the forward animation as can be seen in the path displayed in yellow.

In order to fix this, the animation should be reordered as the following (right object)
  • Rotation1,
  • Rotation1 mirror
  • Rotation2,
  • Rotation2 mirror,
  • Translation3,
  • Translation3 mirror

    Or a Sub-Group needs to be added in order to provide an additional level of hierarchy to transfer one rotation and its mirror to.

    Keyframe Motion Easing.

    This has been improved as of version 2024.2 and no longer relevant.
    For 2024.1 and prior, the easing is applied to the value rather than the time.
    This results that the value of an in-between keyframe will change to a value affected by the easing instead of the value that it was set to and altering it can prove difficult and unintuitive.
    For example:

    • Keyframe 1: 0s, x = 0
    • Keyframe 2: 1s, x = 500
    • Keyframe 3: 2s, x = 1000
    Selecting Ease Out as the Motion Ease for the example would then turn 
    • Keyframe 2: 1s, x = 750
    and will not allow you to edit the number.
    It is therefore recommended to create the keyframe positions with the Motion Ease set to linear and only set it to something else when done and to switch back to linear for editing keyframes.

    Additional Resources

    • https://manuals.keyshot.com/keyshot2024/manual/animation.html