# Pose Graph (Experimental)

Pose graph are node graph that express the creation and transformation of a pose, and are the central building blocks for realizing procedural animation.

The pose graph is dependent on the other building blocks of the animation graph:

This section describes the structure of a pose-stash.

Before getting started with procedural animation, we recommend that you read the documentation related to the Marionette Animation System and animation graph.

## Values and Types

Broadly speaking, a pose graph describes the flow of values. Every value has a type, and the types of values supported by the pose graph are listed below:

Type Description
Pose Role Pose.
Floating Point Floating point value.
Integer Integer values.
Integer Three-dimensional vectors.
Quaternions Quaternions.

Where pose objects cannot be generated and specified out of thin air and are only generated by pose nodes (see below).

## Node A Pose Graph Node describes an operation. There may be zero or more inputs or zero or more outputs on the node. Some nodes have a variable number of inputs and can be deleted. Currently, all nodes have a fixed number of outputs and cannot be deleted.

A Pose Node is a node in the pose graph that is used to handle procedural animation, not a node of the engine.

Inputs and outputs are associated with types. When a node has an input of a certain type, it means that the node can accept a value of that type from that input; when a node has an output of a certain type, it means that the node will output a value of that type to that output. When seeking a value, the node operates on the value of its inputs and produces the resulting value to the output.

A node output can be connected to the same type input of another node, indicating that when seeking a value, it passes the value of its output to the other node's as input. Sometimes this behavior is called binding.

Note that such a connection is unidirectional - it is not possible to connect inputs to outputs, which makes no sense.

The output of a node can be connected to the inputs of multiple nodes. An exception exists: graph outputs can be connected to only one node.

If you need to reference a pose in more than one place, consider using pose-stash.

The following types of nodes exist in the pose graph:

Node Type Description Input Output
Pose Output Node Acts as the output pose for the entire pose graph. A pose input None
Pose Node An output pose object. zero or more A pose output
Variable Get Node Get the specified variable and output it None One output, of type variable

You can refer to the Pose Graph View to see how to visualize the operation of a pose graph node.

### Pose Graph Output Node The Pose Graph Output Node is a special kind of node that represents the output pose of the whole pose-graph. It is built into the pose graph and cannot be deleted or created.

A pose graph output node has one and only one pose input. When a node is connected to that pose input, the input pose becomes the output pose of the pose graph.

If the pose graph output node is not connected, the pose graph output pose is the default pose.

The pose graph output node has no output.

### Pose Node

Pose nodes are all nodes that output pose objects. Currently, all pose nodes produce only one pose output. However, a pose node may have zero or more inputs of any type depending on the node itself.

Pose Nodes lists all types of pose nodes.

### Variable Get Nodes

The Variable Get Node gets the specified animation graph variable and outputs its value. This type of node has no inputs and only one output, which is the type of the variable.

A variable get node cannot get trigger variables.