diff --git a/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-mix1d.md b/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-blendspace1d.md similarity index 90% rename from pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-mix1d.md rename to pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-blendspace1d.md index 2457c17..f2b7983 100644 --- a/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-mix1d.md +++ b/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-blendspace1d.md @@ -1,4 +1,4 @@ -# Mix Clips 1D Node +# Sample Blendspace 1D Node @@ -21,23 +21,23 @@ In the video above you can see such a transition in action. The *lerp* input val ## Node Properties -See [common properties](anim-nodes-playclip.md#common-properties). +See common properties. * `Clips`: A list of animation clips between which this animation node will interpolate. The node will only ever sample the two clips whose `Position` values are closest the the value provided through the `Lerp` input pin. ## Input Pins -See [common input pins](anim-nodes-playclip.md#common-input-pins). +See common input pins. * `Lerp`: This value determines which animation clips get mixed together. If the *lerp* value is in between two `Position` values of two clips, the output pose will be the linear interpolation of those two clips. If the *lerp* value is lower than the lowest `Position` value or higher than the highest, the output will be exactly that animation clip (there will be no extrapolation). ## Output Pins -See [common output pins](anim-nodes-playclip.md#common-output-pins). +See common output pins. ## See Also * [Animation Graph (TODO)](animation-graph-overview.md) * [Skeletal Animations](../skeletal-animation-overview.md) -* [Mix Clips 2D Node (TODO)](anim-nodes-mix2d.md) -* [Play Single Clip Nodes (TODO)](anim-nodes-playclip.md) +* [Sample Clip Node (TODO)](anim-nodes-sample-clip.md) +* [Sample Blendspace 2D Node (TODO)](anim-nodes-blendspace2d.md) diff --git a/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-mix2d.md b/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-blendspace2d.md similarity index 81% rename from pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-mix2d.md rename to pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-blendspace2d.md index c60790b..befa7fa 100644 --- a/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-mix2d.md +++ b/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-blendspace2d.md @@ -1,4 +1,4 @@ -# Mix Clips 2D Node +# Sample Blendspace 2D Node @@ -15,7 +15,7 @@ Be aware that the poses will be combined linearly, though. If the poses from two ## How To Use -You add multiple animation clips and give each clip a position (`X` and `Y`). As with the [mix clips 1D node (TODO)](anim-nodes-mix1d.md), the playback of all clips is synchronized, meaning that the length of each clip may differ, but they will be played back such that they start and end in unison. That means your clips must be authored accordingly, so for example for locomotion all clips should start with the left foot forwards, then move the right foot forwards, then the left again. From that point on the clips will be looped. +You add multiple animation clips and give each clip a position (`X` and `Y`). As with the mix clips 1D node, the playback of all clips is synchronized, meaning that the length of each clip may differ, but they will be played back such that they start and end in unison. That means your clips must be authored accordingly, so for example for locomotion all clips should start with the left foot forwards, then move the right foot forwards, then the left again. From that point on the clips will be looped. What the coordinates represent is up to you. For locomotion you could say that `X` represents left/right movement and `Y` forwards/backwards. You would then position a *walk left* clip at `(-1, 0)` a *walk right* clip at `(+1, 0)` a *walk forward* clip at `(0, +1)` and a *run forward* clip at `(0, +2)`. @@ -25,7 +25,7 @@ The node will then take that input coordinate to decide which clips should be us ## Node Properties -See [common properties](anim-nodes-playclip.md#common-properties). +See common properties. * `InputResponse`: A time duration over which changes to the `X` and `Y` input values are applied. This prevents sudden extreme changes. For example when `X` and `Y` are connected to physical buttons, which are just turned *on* or *off*, the final animation would jerk between those extremes. In a finished game you may want to smooth out the input yourself, but for starters this node can do a basic smoothing of the input values for you. Thus, if an input value switches from `1` to `0`, an `InputResponse` of 50ms means that the used value will transition smoothly towards `0` over that amount of time and thus the output pose will also transition smoothly. @@ -35,17 +35,17 @@ See [common properties](anim-nodes-playclip.md#common-properties). ## Input Pins -See [common input pins](anim-nodes-playclip.md#common-input-pins). +See common input pins. * `X`, `Y`: The input coordinate to select how to blend the `Clips`. It directly relates to the clips` positions. ## Output Pins -See [common output pins](anim-nodes-playclip.md#common-output-pins). +See common output pins. ## See Also * [Animation Graph (TODO)](animation-graph-overview.md) * [Skeletal Animations](../skeletal-animation-overview.md) -* [Mix Clips 1D Node (TODO)](anim-nodes-mix1d.md) -* [Play Single Clip Nodes (TODO)](anim-nodes-playclip.md) +* [Sample Clip Node (TODO)](anim-nodes-sample-clip.md) +* [Sample Blendspace 1D Node (TODO)](anim-nodes-blendspace1d.md) diff --git a/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-pose-blending.md b/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-pose-blending.md index b9609cf..78672df 100644 --- a/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-pose-blending.md +++ b/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-pose-blending.md @@ -4,7 +4,7 @@ An animation graph typically samples more than one animation. Sometimes these an ## Lerp Poses Node -The *lerp poses node* linearly interpolates between two poses. It is typically used to fade over from one pose to another and potentially to a third. Note that the node only controls the mix of the two animation poses, it is not used for synchronizing playback across clips. See the [Mix Clips 1D Node (TODO)](anim-nodes-mix1d.md) for that. +The *lerp poses node* linearly interpolates between two poses. It is typically used to fade over from one pose to another and potentially to a third. Note that the node only controls the mix of the two animation poses, it is not used for synchronizing playback across clips. See the [Sample Blendspace 1D Node (TODO)](anim-nodes-blendspace1d.md) for that. ### Node Properties @@ -44,5 +44,5 @@ The *Pose Switch Node* is used to quickly but smoothly transition from one pose ## See Also -* [Animation Graph (TODO)](animation-graph-overview.md) +* [Animation Graphs (TODO)](animation-graph-overview.md) * [Skeletal Animations](../skeletal-animation-overview.md) diff --git a/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-pose-generation.md b/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-pose-generation.md new file mode 100644 index 0000000..0940c5d --- /dev/null +++ b/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-pose-generation.md @@ -0,0 +1,32 @@ +# Pose Generation Nodes + + + +## Rest Pose Node + + + +## Sample Blendspace 1D Node + +See [Sample Blendspace 1D Node (TODO)](anim-nodes-blendspace1d.md). + +## Sample Blendspace 2D Node + +See [Sample Blendspace 2D Node (TODO)](anim-nodes-blendspace2d.md). + +## Sample Clip Node + +See [Sample Clip Node (TODO)](anim-nodes-sample-clip.md). + +## Sample Clip Sequence Node + +See [Sample Sequence Node (TODO)](anim-nodes-sample-sequence.md). + +## Sample Frame Node + + + +## See Also + +* [Animation Graphs (TODO)](animation-graph-overview.md) +* [Skeletal Animations](../skeletal-animation-overview.md) diff --git a/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-playclip.md b/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-sample-clip.md similarity index 95% rename from pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-playclip.md rename to pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-sample-clip.md index da40f3c..cf17cbc 100644 --- a/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-playclip.md +++ b/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-sample-clip.md @@ -1,4 +1,4 @@ -# Play Single Clip Nodes +# Sample Clip Node @@ -11,7 +11,7 @@ Animation controller graphs provide multiple node types that are used for sampli All animation controller nodes that sample animation clips share these properties: -* `Loop`: If enabled the node will loop playback while its `Active` pin is triggered. Which clip exactly gets looped depends on the node. The *play single clip node* for example just loops playback in general, but randomly picks a different clip in every iteration. The [play clip sequence node (TODO)](anim-nodes-sequence.md) on the other hand will loop its middle clip instead. +* `Loop`: If enabled the node will loop playback while its `Active` pin is triggered. Which clip exactly gets looped depends on the node. The *play single clip node* for example just loops playback in general, but randomly picks a different clip in every iteration. The play clip sequence node on the other hand will loop its middle clip instead. * `ApplyRootMotion`: If enabled, the node will compute the [root motion](../root-motion.md) from the sampled clips and forward this to the [animation controller component](animation-controller-component.md), which may apply this to the game object's position. @@ -56,5 +56,5 @@ Many animation controller nodes have some or all of these output pins: * [Animation Graph (TODO)](animation-graph-overview.md) * [Skeletal Animations](../skeletal-animation-overview.md) * [Bone Weight Nodes](anim-nodes-bone-weights.md) -* [Play Clip Sequence Node (TODO)](anim-nodes-sequence.md) -* [Mix Clips 2D Node (TODO)](anim-nodes-mix2d.md) +* [Sample Sequence Node (TODO)](anim-nodes-sample-sequence.md) +* [Sample Blendspace 2D Node (TODO)](anim-nodes-blendspace2d.md) diff --git a/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-sequence.md b/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-sample-sequence.md similarity index 82% rename from pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-sequence.md rename to pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-sample-sequence.md index 1dbaa3f..e19221e 100644 --- a/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-sequence.md +++ b/pages/docs/animation/skeletal-animation/animation-controller/anim-nodes-sample-sequence.md @@ -1,9 +1,9 @@ -# Play Clip Sequence Node +# Sample Sequence Node -The *play clip sequence node* is similar to the [play single clip node (TODO)](anim-nodes-playclip.md), however, instead of playing just a single clip (looped), the sequence node plays at least three clips in a row. One to enter an animation state, one (looped) animation while it stays active, and one to exit the animation state. +The *play clip sequence node* is similar to the play single clip node, however, instead of playing just a single clip (looped), the sequence node plays at least three clips in a row. One to enter an animation state, one (looped) animation while it stays active, and one to exit the animation state. Such sequences are common for actions such as jumping or climbing a ladder. The start clip transitions the character from a start state, such as idle or walking into the new state, such as *jumping*. The middle clip is then played as long as the jumping state needs to continue, and once the character hits the ground again, the end clip is played to transition back. @@ -13,7 +13,7 @@ The video above shows such a sequence. Here the node uses a *point gun* animatio ## Node Properties -See [common properties](anim-nodes-playclip.md#common-properties). +See common properties. * `StartClip`: The [animation clip](../animation-clip-asset.md) to start with. This clip should end on a keyframe from where the `MiddleClips` can continue seemlessly. @@ -23,13 +23,13 @@ See [common properties](anim-nodes-playclip.md#common-properties). ## Input Pins -See [common input pins](anim-nodes-playclip.md#common-input-pins). +See common input pins. * `MiddleClipIndex`: This pin can be used to select which of the `MiddleClips` to play next. In the video above this is used to select whether the gun should get fired or not. ## Output Pins -See [common output pins](anim-nodes-playclip.md#common-output-pins). +See common output pins. * `OnNextClip`: This pin will get triggered every time a clip finishes and the next middle or end clip starts. This can be used to know for example when the start phase has finished. diff --git a/pages/docs/animation/skeletal-animation/animation-controller/animation-graph-asset.md b/pages/docs/animation/skeletal-animation/animation-controller/animation-graph-asset.md index c2172d4..06665c8 100644 --- a/pages/docs/animation/skeletal-animation/animation-controller/animation-graph-asset.md +++ b/pages/docs/animation/skeletal-animation/animation-controller/animation-graph-asset.md @@ -17,7 +17,7 @@ The goal of an animation graph is to sample a number of [animation clips](../ani -Right click into the main area to open a context menu. Here you select which nodes to add to the graph. Every graph requires at least an [output node (TODO)](anim-nodes-output.md), a model space conversion node and a node to sample a clip, for example a [play single clip node (TODO)](anim-nodes-playclip.md). Once the graph samples two different clips you also need a combine poses node. +Right click into the main area to open a context menu. Here you select which nodes to add to the graph. Every graph requires at least an [output node (TODO)](anim-nodes-output.md), a model space conversion node and a node to sample a clip, for example a play single clip node. Once the graph samples two different clips you also need a combine poses node. ### Connecting Nodes diff --git a/pages/docs/animation/skeletal-animation/animation-controller/animation-graph-overview.md b/pages/docs/animation/skeletal-animation/animation-controller/animation-graph-overview.md index 69d77ba..4f9436b 100644 --- a/pages/docs/animation/skeletal-animation/animation-controller/animation-graph-overview.md +++ b/pages/docs/animation/skeletal-animation/animation-controller/animation-graph-overview.md @@ -23,7 +23,7 @@ The flow of information is from left to right. On the far left side the two green nodes are used to [read state from the blackboard](anim-nodes-blackboard.md). Here we read the blackboard values *PlayIdle* and *PlayWave* to see which animation clips should get played. The pink output pins are *trigger pins*, meaning they can be *active* (*triggered*) or *inactive*. When the read value is `1` (in this case) the pins are set to *triggered* which then activates the connected nodes to the right. -The two light blue nodes are used to [sample animation clips (TODO)](anim-nodes-playclip.md). There are different ways how animation clips can be played, but here we only use very basic (looped) playback. When the *PlayIdle* blackboard value is set, the *Idle* clip will be sampled. When the *PlayWave* blackboard value is set, the *Wave* clip will get sampled. Any combination is possible, so both clips can be played at the same time. +The two light blue nodes are used to sample animation clips. There are different ways how animation clips can be played, but here we only use very basic (looped) playback. When the *PlayIdle* blackboard value is set, the *Idle* clip will be sampled. When the *PlayWave* blackboard value is set, the *Wave* clip will get sampled. Any combination is possible, so both clips can be played at the same time. The sampling nodes have a *LocalPose* output pin. This pin represents the animation pose that was determined. The pin also carries information about *weighting* the pose. That means when the clip playback was just started, the pose may still be fading and shouldn't immediately have full influence. Similarly, if a pose shall only be applied to a certain body part these [bone weights](anim-nodes-bone-weights.md) are also included here and will be forwarded to any following node. diff --git a/pages/docs/animation/skeletal-animation/animation-controller/toc.txt b/pages/docs/animation/skeletal-animation/animation-controller/toc.txt index 05a79d8..19a17d5 100644 --- a/pages/docs/animation/skeletal-animation/animation-controller/toc.txt +++ b/pages/docs/animation/skeletal-animation/animation-controller/toc.txt @@ -2,14 +2,15 @@ animation-graph-overview.md animation-graph-asset.md animation-controller-component.md anim-nodes-blackboard.md +anim-nodes-blendspace1d.md +anim-nodes-blendspace2d.md anim-nodes-bone-weights.md anim-nodes-debug.md anim-nodes-events.md anim-nodes-input.md anim-nodes-logic-math.md -anim-nodes-mix1d.md -anim-nodes-mix2d.md anim-nodes-output.md -anim-nodes-playclip.md anim-nodes-pose-blending.md -anim-nodes-sequence.md \ No newline at end of file +anim-nodes-pose-generation.md +anim-nodes-sample-clip.md +anim-nodes-sample-sequence.md \ No newline at end of file diff --git a/pages/docs/toc.md b/pages/docs/toc.md index 1cb3edb..faddccc 100644 --- a/pages/docs/toc.md +++ b/pages/docs/toc.md @@ -180,17 +180,18 @@ #### [Animation Graph Asset (TODO)](animation/skeletal-animation/animation-controller/animation-graph-asset.md) #### [Animation Controller Component](animation/skeletal-animation/animation-controller/animation-controller-component.md) #### [Blackboard Nodes](animation/skeletal-animation/animation-controller/anim-nodes-blackboard.md) +#### [Sample Blendspace 1D Node (TODO)](animation/skeletal-animation/animation-controller/anim-nodes-blendspace1d.md) +#### [Sample Blendspace 2D Node (TODO)](animation/skeletal-animation/animation-controller/anim-nodes-blendspace2d.md) #### [Bone Weight Nodes](animation/skeletal-animation/animation-controller/anim-nodes-bone-weights.md) #### [Debug Nodes](animation/skeletal-animation/animation-controller/anim-nodes-debug.md) #### [Event Nodes](animation/skeletal-animation/animation-controller/anim-nodes-events.md) #### [Input Nodes](animation/skeletal-animation/animation-controller/anim-nodes-input.md) #### [Logic and Math Nodes](animation/skeletal-animation/animation-controller/anim-nodes-logic-math.md) -#### [Mix Clips 1D Node (TODO)](animation/skeletal-animation/animation-controller/anim-nodes-mix1d.md) -#### [Mix Clips 2D Node (TODO)](animation/skeletal-animation/animation-controller/anim-nodes-mix2d.md) #### [Output Nodes (TODO)](animation/skeletal-animation/animation-controller/anim-nodes-output.md) -#### [Play Single Clip Nodes (TODO)](animation/skeletal-animation/animation-controller/anim-nodes-playclip.md) #### [Pose Blending Nodes](animation/skeletal-animation/animation-controller/anim-nodes-pose-blending.md) -#### [Play Clip Sequence Node (TODO)](animation/skeletal-animation/animation-controller/anim-nodes-sequence.md) +#### [Pose Generation Nodes (TODO)](animation/skeletal-animation/animation-controller/anim-nodes-pose-generation.md) +#### [Sample Clip Node (TODO)](animation/skeletal-animation/animation-controller/anim-nodes-sample-clip.md) +#### [Sample Sequence Node (TODO)](animation/skeletal-animation/animation-controller/anim-nodes-sample-sequence.md) ### [Animation Events](animation/skeletal-animation/animation-events.md) ### [Root Motion](animation/skeletal-animation/root-motion.md) ### [Joint Attachment Component](animation/skeletal-animation/joint-attachment-component.md)