USD I/O: Animation Support

As of Connector v202.0.0, both animation import and export is have been added. Animations involving Game Objects and skeletal animation are all supported.

Exporting Animations from Unity

There are no additional settings required to export animation; either export your entire Scene from the Omniverse menu, or selectively export parts of a scene from the Hierarchy.

If you are interested in converting FBX files or animation that was imported from other packages, you may need to drag it into the Scene and apply an animation clip before attempting an export. For example, here is a basic character that was imported from an FBX file. While the original file had animation applied, the Prefab dragged onto the stage does not show any animation in game mode:

Animation Clip assignment.

By dragging the clip from the asset onto the root Prefab in the hierarchy, an Animator is created and the clip is assigned. At this point, the Prefab can be exported complete with animation.

Play animation.

Importing Animations into Unity

There is nothing special that needs to be done to import. Simply import your USD file as you would any other.

Limitations

  • Runtime animation is not supported. This includes anything involving state machine clip triggering or code-driven logic.

  • Multiple animation clips are not supported. If multiple clips are detected inside an Animator, only the first clip will be exported.

  • When exporting a GameObject is considered to have animation data if it has an Animator or Animation(Legacy) component.

  • The target GameObject for Transform animation supports empty GameObjects, meshes, lights, and cameras.

  • Transform animation at export time outputs a keyframe for each translation, rotation, and scale of the transform.

  • Animation of Transform rotations are exported as euler angles.

  • Animation of Skeleton (bone) rotations are exported as quaternions.

  • The USD default of 24 fps is used in the export.

  • Animation data is included in the asset as an AnimationClip when imported.

  • Animator and AnimatorController are not assigned upon import. They must be assigned manually after they are placed in the scene.

  • LiveSync does not support Animation.

  • If a GameObject in the scene is deactivated, the animation of the target GameObject will not be output correctly. This problem is caused by Unity not loading the AnimationClip of an inactive GameObject.