Skeletal Animation

Skeletal Animation is an Extension that you can utilize within Omniverse to animate characters like Digital Humans for use in Digital Twins, Synthetic Data, and other areas. You can also be use this Extension to animate non-humans, like robots or props.

_images/skeleton_overview.png

The Skeletal family of prims consists of:

  • SkelRoot: Usually the parent element of a Skeleton. Under this prim is also usually the corresponding skinned mesh that is bound to the Skeleton, along with the materials.

  • Skeleton: The core Prim required for skeletal animation. All joints are a child of this Prim.

  • OmniJoint: Native Omniverse Prim type used to articulate joints within a Skeleton.

  • SkelAnimation: Prim that contains time-sampled transform data used to animate skeletons.

Stage hierarchy view of a Skeletal Animation

Stage hierarchy view of a Skeletal Animation

Creating Skeletons and Animations

Skeletons and animations can be authored in the DCC (Digital Content Creation) application of choice. Omniverse currently supports Autodesk Maya and Blender skeletal animation pipelines via Omniverse Connectors.

Skeletal data can also be converted from popular formats, like Autodesk FBX, via the Omniverse Asset Converter

Purchasing Skeletons and Animations

Skeletally based characters and animations can also be created via the following supported systems:

Working with Skeletons in Omniverse

Omniverse has several tools and extensions that utilize Skeletal Animation:

  • SkelJoint: Core capabilities for skeletal animation in Omniverse that are layered on top of USD.

  • Animation Graph (aka “Anim Graph”): A runtime framework for skeletal animation blending, playback, and control. See Animation Graph documentation.

  • Sequencer: A non-linear editor for timing animations and events for film making. See Sequencer documentation.

  • Animation Retargeting: A tool for transferring animations from one biped to another at runtime. See Animation Retargeting documentation.

  • Audio2Gesture : A neural network tool to generate gestures from an audio source. See Audio2Gesture documentation.

Skeleton Visibility

Skeleton visibility can be controlled via the Stage listing on a per-prim basis, or from the viewport’s visibility toggle Visibility Icon (Eye) > Show By Type > Skeleton

_images/skeleton_viz_viewport.png

Skeleton Properties

There are the following key properties associated with Skeleton prims.

Animation Source

Allows the assignment of a SkelAnimation prim from the scene or via Sequencer.

_images/skeleton_animation_source.png

Note

If an Animation Graph is added to the SkelRoot, it will override the SkelAnimation property.

Animation and Pose Modes

This property section allows previewing and editing of a Skeleton’s various pose modes. The omni.anim.skelJoint.bundle must be loaded to view this section.

_images/skeleton_pose_modes.png

The color of the skeleton will change as the different pose modes are cycled.

  • Animation: Will utilize the Animation Source property or Animation Graph input.

  • Retarget Pose: Preview the current pose set for Animation Retargeting. User can also save the current pose as the Retarget Pose, or delete it. Note: Retarget Pose will only populate if the character is setup for Retargeting or a Control Rig API is added to the skeleton.

  • Rest Pose: The default pose of a character if available.

  • Default Bind Pose: The pose where the Skeleton and meshes were bound together, usually in a DCC.

SkelAnimation Binding

By default, SkelAnimations do not know which Skeleton they were derived from. This information is critical for Animation Retargeting to work, as it sets the baseline for calculating offsets when applying the same animation to another skeleton.

_images/skeleton_binding.png

To set the Animation Skel Binding, right click on the SkelAnimation in the Stage and go to Add > Animation > Skeletal Binding and in the Skeletal Binding properties of the SkelAnimation set the Source Skeleton.

Origin Root

Retargeting and Animation Graph require there be a root joint at the origin in the SkelRoot and Animation content. This root joint can be seen in the Omniverse Animation Samples.

The root joint helps systems know where the ground is. The Animation Graph uses this joint to displace the SkelRoot and it’s children in the world.

Limitations

  • While a root joint is not always required, it’s strongly recommended to create and include one to get the most from the Omniverse Animation tools.

  • Joints must have unique names within the skeleton in Omniverse.

  • Parenting prims to joints is not fully supported.

  • SkelRoots can only contain one Skeleton.

  • Scaling of joints is only supported on the root joint currently.

Samples

Sample scenes using the Skeletal Animation are available in the Samples panel. It can be accessed via menu: Window > Browsers > Samples Browser and going to the Animation group in the browser. The Anim Graph, Navigation, and Retargeting sub-groups include Skeletal Animation samples.

_images/skeleton_samples.png