Skip to main content

Key Concepts

Skeletal animation is great for organic-looking character animations. It allows meshes to be deformed by only animating a few 3D points (which are hierarchically organized into a “skeleton”) instead of having to animate each and every mesh vertex.

If you upload a 3D file with a rigged animation to the Console and open it in the Editor, you will see your animated model.

When a source file containing a rigged animated model is uploaded to the Console, the animation-related assets generated are the following:

Animation
,
Skeleton
,
Animation Set
, and
Animation Graph
.

Animation-related assets converted from source file in Console.
Animation-related assets converted from source file in Console.

The two assets that are 3dverse-specific are the

Animation Graph
and the
Animation Set
.

The mesh, the skeleton and the animations can usually be exported quite easily from other tools (Blender, 3ds Max, etc.), but the logic that governs the choice of animation cannot be. This is where the animation graph comes into play.

A default animation graph and animation set are automatically converted from a source files containing rigged models.

Assets

The following is a description of the skeletal animation-related assets in 3dverse.

Animation

An

Animation
is a series of key poses. A key pose is a pose of the skeleton, with transforms for each bone of the skeleton. Each key pose correspond to a frame of the animation.

Skeleton

A skeleton is a hierarchy of bones.
A skeleton is a hierarchy of bones.

A

Skeleton
represents a 3D hierarchy of bones. A bone has a name and a transform, and is linked to other bones in a skeleton. Think of a bone more like a real-life joint (point) than a real-life bone (edge between two points).

Skinned Mesh

A skinned mesh's vertices are influenced by the the bones of a skeleton.

There is no dedicated "skinned mesh" asset type in 3dverse. A skinned mesh is simply a

Mesh
which contains bone ids and bone weights, alongside other potential vertex data such as positions and normals.

Click on info near the mesh in the mesh reference component to view the vertex channels in the mesh. This mesh has bone id and bone weight channels and is therefore skinned.
Click on info near the mesh in the mesh reference component to view the vertex channels in the mesh. This mesh has bone id and bone weight channels and is therefore skinned.

Animation Graph

An

Animation Graph
is an asset which applies some logic to animations. If you want an animation to transition to another one (e.g. an idle animation transitioning to a walking animation), you can configure this in an animation graph.

While it is running, the animation graph outputs a pose at each frame. Animation graphs run automatically at the start of each session.

Animation Set

An

Animation Set
is an asset which is simply a list of
Animation
. An animation set is used in tandem with an
Animation Graph
to provide the animations the animation graph will work with.

Animation graph and animation set are linked together in the

Animation Controller
component.

Components

The following is a description of the skeletal animation-related components in 3dverse.

The mandatory components for skeletal animation to work are:

Animation Controller
,
Mesh Reference
and
Skeleton Reference
. The
Bone
component is optional.

To set up skeletal animation in your scene, you must set up entities with these components in the correct way.

When you upload a model with a skeletal animation in it, everything will be set up correctly for you. This means your scene graph will have the structure below:

Skeleton Ref

The

Skeleton Reference
simply references a skeleton.

A skinned mesh entity will have a

Skeleton Reference
and a
Mesh Reference
with compatible mesh and skeleton. A
Skeleton Reference
can also appear on the root bone of the skeleton hierarchy. See bone for more info.

Skeleton Reference

skeleton_ref

Reference to a skeleton.

value

Asset UUID

UUID of the referenced skeleton.

Animation Controller

The

Animation Graph
and
Animation Set
assets are linked to an entity via the
Animation Controller
component in a scene.

The entity with

Animation Controller
will affect all descendant skinned mesh entities (i.e. entities with
Mesh Reference
and
Skeleton Reference
referencing compatible skinned mesh and skeleton).

The pose generated by the referenced animation graph will be used by the skinned meshes that fall under the

Animation Controller
entity's hierarchy.

If the animation graph has any inputs specified, they will show up and be configurable in the

Animation Controller
.

Animation Controller

animation_controller

Animation controller with reference to an animation graph and an animation set. Enables skeletal animation on its skinned mesh descendents whose skeleton is compatible with the animations in the animation set.

animationGraphRef

Asset UUID

UUID of the referenced animation graph.

animationSetRef

Asset UUID

UUID of the referenced animation set.

dataJSON

JSON

Input values as described in the referenced animation graph in their original JSON format.

rootBoneEntityRef

Entity Reference

{linkage,originalEUID,}

Reference to the entity with the bone component that corresponds the root bone of the skeleton.

rootMotionEnabled

Boolean

Default: false

Whether or not root motion is enabled.

Bone

The

Bone
component links an entity to a bone in the skeleton with its bone index attribute. The root bone (boneIndex=0) entity should also have a
Skeleton Reference
.

The skeleton hierarchy is seen in the scene graph to the left, and the selected root bone's components are seen to the right.
The skeleton hierarchy is seen in the scene graph to the left, and the selected root bone's components are seen to the right.

Bone

bone

Links entity to bone in skeleton.

boneIndex

Unsigned Integer

Index of bone in skeleton.

Debug Lines