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:
In the state machine, each procedural pose (state) contains a pose graph.
Each pose stash contains a pose 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.