https://community.bistudio.com/wiki?title=Arma_Reforger:Animation_Editor:_Buffer_Node_Tutorial&feed=atom&action=history
Arma Reforger:Animation Editor: Buffer Node Tutorial - Revision history
2024-03-29T14:30:57Z
Revision history for this page on the wiki
MediaWiki 1.39.0
https://community.bistudio.com/wiki?title=Arma_Reforger:Animation_Editor:_Buffer_Node_Tutorial&diff=329625&oldid=prev
Lou Montana: Text replacement - " " to " "
2022-07-30T18:40:27Z
<p>Text replacement - " " to " "</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 19:40, 30 July 2022</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l123">Line 123:</td>
<td colspan="2" class="diff-lineno">Line 123:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| Spine3</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| Spine3</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| {{Icon|unchecked}}</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| {{Icon|unchecked}}</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>| <del style="font-weight: bold; text-decoration: none;"> </del>---</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>| ---</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|-</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|-</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| Spine2</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| Spine2</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| {{Icon|unchecked}}</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| {{Icon|unchecked}}</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>| <del style="font-weight: bold; text-decoration: none;"> </del>---</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>| ---</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|-</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|-</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| Arm</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| Arm</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| {{Icon|unchecked}}</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| {{Icon|unchecked}}</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>| <del style="font-weight: bold; text-decoration: none;"> </del>---</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>| ---</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|-</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|-</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| Elbow</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| Elbow</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| {{Icon|unchecked}}</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| {{Icon|unchecked}}</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>| <del style="font-weight: bold; text-decoration: none;"> </del>---</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>| ---</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|-</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|-</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| Hand</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| Hand</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| {{Icon|unchecked}}</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| {{Icon|unchecked}}</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>| <del style="font-weight: bold; text-decoration: none;"> </del>---</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>| ---</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|}</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|}</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>It fails because to complete this blend because it attempts to blend from/to something into nothing.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>It fails because to complete this blend because it attempts to blend from/to something into nothing.</div></td></tr>
</table>
Lou Montana
https://community.bistudio.com/wiki?title=Arma_Reforger:Animation_Editor:_Buffer_Node_Tutorial&diff=322411&oldid=prev
Lou Montana: Page creation
2022-06-06T12:11:36Z
<p>Page creation</p>
<p><b>New page</b></p><div>{{TOC|side}}<br />
== Definitions ==<br />
<br />
In order to understand the buffer nodes, you must first have a firm grasp of the animation system regarding its blending properties.<br />
<br />
* An '''Absolute Animation''' is an animation which has absolute values; i.e. a '''run cycle animation''' or an '''idle animation'''.<br />
* A '''Differential Animation''' is animation that compares the '''difference''' between itself and a target animation; i.e. a '''look at animation''' or a '''short gesture animation'''.<br />
* An animation can be exported with different bones included; the run cycle will most likely use all of the bones, while the look at will only use the head.<br />
<br />
'''However,''' animations can be exported with '''both Absolute & Differential Bones.''' This means that you can have an animation that includes '''different parts of the skeleton''' with '''different settings for each bone.'''<br />
<br />
See below:<br />
{| class="wikitable"<br />
! rowspan="2" | Bone<br />
! colspan="2" | Animation<br />
|-<br />
! Wave At<br />
! Run<br />
|-<br />
| Head<br />
| Differential<br />
| Absolute<br />
|-<br />
| Neck<br />
| Differential<br />
| Absolute<br />
|-<br />
| Spine 2<br />
| Absolute<br />
| Absolute<br />
|-<br />
| Spine 1<br />
| Absolute<br />
| Absolute<br />
|-<br />
| Pelvis<br />
| Absolute<br />
| Absolute<br />
|-<br />
| L Clavicle<br />
| Absolute<br />
| Absolute<br />
|-<br />
| L Arm<br />
| Absolute<br />
| Absolute<br />
|-<br />
| L Elbow<br />
| Absolute<br />
| Absolute<br />
|-<br />
| L Hand<br />
| Absolute<br />
| Absolute<br />
|-<br />
| R Clavicle<br />
| {{n/a}}<br />
| Absolute<br />
|-<br />
| R Arm<br />
| {{n/a}}<br />
| Absolute<br />
|-<br />
| R Elbow<br />
| {{n/a}}<br />
| Absolute<br />
|-<br />
| R Hand<br />
| {{n/a}}<br />
| Absolute<br />
|}<br />
<br />
Blending bones with these parameters has varying results, as shown below:<br />
<br />
{| class="wikitable"<br />
|+ Animation Blending Result<br />
!<br />
! Absolute<br />
! Differential<br />
|-<br />
! Absolute<br />
| Blending two '''absolute bones''' will result in a '''linear interpolation''' between their positions and rotations.<br />
| Blending an '''absolute bone''' with a '''differential bone''' will give you a result wherein the '''differential bone''' is added on top of the '''absolute bone'''.<br />
|-<br />
! Differential<br />
| Blending an '''absolute bone''' with a '''differential bone''' will give you a result wherein the '''differential bone''' is added on top of the '''absolute bone'''.<br />
| Blending two '''differential bones''' will result in a '''linear interpolation''' between them, which then still needs to be added on top of an '''absolute bone'''.<br />
|}<br />
<br />
<br />
A combination of '''Any + '''Any''' (with missing bones) will result in '''ERROR''':<br><br />
Blending '''two animations that are either absolute or differential''' with one or both of them '''having bones that the other does not''' will result in an error where it tries to blend '''from something to nothing''', which is not possible, and will therefore 'tick' when it starts/finished the blend.<br />
<br />
This is where '''Buffer Nodes''' comes to the rescue.<br />
<br />
<br />
== Buffer Node ==<br />
<br />
First, you must understand the '''animation buffer.''' It is the '''processed data of the animation tree''' that gets used by the system to blend animations together to achieve different results. For example, by having a '''Queue Node,''' the system would calculate the result of the '''Queue Node's children''' and create a buffer for them and then blend it onto the '''Queue Node Main Link's Animation Buffer''' to achieve the final result.<br />
<br />
Sometimes when you blend animations together, the animations might be using different parts of the skeleton, with details shown above.<br />
<br />
An example that is used in DayZ is the '''Look At functionality,''' where the players can use their heads to look around themselves while still staying stationary. When you're running around you're only using your head, but when you're stationary the character uses its entire upper body to achieve a natural range of motion. The problem is when you're using an animation that uses the upper body, and blending it with an animation that only includes the head makes the animation 'tick'.<br />
<br />
This is how the animations appear in the buffer when you are blending them together:<br />
{| class="wikitable"<br />
! Look_Upperbody_Anim<br />
! Blends<br />
! Look_Head_Anim<br />
|-<br />
| Head<br />
| {{Icon|checked}}<br />
| Head<br />
|-<br />
| Neck1<br />
| {{Icon|checked}}<br />
| Neck1<br />
|-<br />
| Neck2<br />
| {{Icon|checked}}<br />
| Neck2<br />
|-<br />
| Spine3<br />
| {{Icon|unchecked}}<br />
| ---<br />
|-<br />
| Spine2<br />
| {{Icon|unchecked}}<br />
| ---<br />
|-<br />
| Arm<br />
| {{Icon|unchecked}}<br />
| ---<br />
|-<br />
| Elbow<br />
| {{Icon|unchecked}}<br />
| ---<br />
|-<br />
| Hand<br />
| {{Icon|unchecked}}<br />
| ---<br />
|}<br />
It fails because to complete this blend because it attempts to blend from/to something into nothing.<br />
The '''Buffer Node,''' however, will save the state of a part of the '''Animation Tree''' and use it at a later time.<br />
This way, we can fill in these 'gaps' and achieve a natural blend.<br />
<br />
<br />
{{GameCategory|armaR|Modding|Tutorials|Official Tools|Workbench}}</div>
Lou Montana