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.
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.
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:
Reallusion’s Character Creator and Actor Core
Renderpeople’s 3D Rigged People
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
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.
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.
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.
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.