Skip to main content
deleted 126 characters in body
Source Link

In the game engine that I amI'm modifying, it is supposeddesigned to blend only two animations (through something likeat a time using frame-by-frame linear interpolation of the position of the bonesbone positions during thea specified blend time). However, after adding a lot ofintroducing numerous animations for the new movement system, I came across the fact thatnoticed an issue: there is not enoughisn't sufficient "blending from blend"blend. By default"

For instance, if you quickly press, for example, W-A-W fast enough (before the blend time has expiredexpires), the character will jerkexhibits a jerky motion. This happens because, since for blendingduring the transition between left and forward movements (A-W to W) it will look as if, the engine treats the left movement was "clean" and notas "clean"—not already mixed with anotherthe prior animation. This creates noticeable artifacts. I have several options for solving the problem,potential solutions in mind but I would like to know how other people solve similar issueswould like to understand how others handle similar challenges.

In favor of greater smoothnessTo prioritize smoother and anatomicitymore anatomically accurate transitions, animations are blended frame-by-frame, and not rather than snapping from the fixed position of the bones, which wasbone positions at the time of the animation change, so I am still acting in. While this approach aligns with my current logic, although I do not knowI’m unsure if there is a great need for thisit’s strictly necessary, since I amas I’m not an expert in animation expert.

Returning to the example with W-A-W movement, it seems to me that you need to first mixingexample: I believe the solution lies in first blending the initial W and A animations in theas usual way, and then blendblending the result in a similar way with the final W animation. If we hadWith even 8eight animations that would be mixedblended in a loop according to this logicway, linear interpolation ensures that the "further" thean animation is from the actualcurrent one, the less its contribution to the position ofinfluence it has on bone positions. After the bones will be, and after blend time elapses, the bones will be determined only by the current animation dictates the bones' positions.

And at the moment of the organization ofThe challenge arises when organizing this blending cycle, the pitfalls come up. This wholeThe entire process of mixing many animations shouldmust fit intowithin the lastfinal blend time, after which itblending stops. If all blend times were the sameare identical, then there would be no problemsthis works seamlessly. However, otherwise differentwith varying blend times, artifacts might come inmay emerge. My current solution so far is this: in the loop,involves scaling all blend times (along with theand their elapsed time counters) should be scaled accordingwithin the loop to match the smallest subsequent blend time (subsequent - that is, from thosetime—subsequent referring to animations that were added tolater in the queue of animation players later), which. This guarantees their expirationall animations complete blending before the subsequent blend timesnewer ones expire. There is also an option not

An alternative approach would forego scaling blend time, butand simply throw allremove previous animations out offrom the player queue as soon as the blend time of the newer ones expiresblend times expire.

So far, I have no idea which of these two options is betterAt this point, and whether I'm talking nonsense trying to keepI’m uncertain which option is better—or if I’m misguided in insisting on frame-by-frame blending instead of a blendrather than blending from a fixed bones positionbone positions. I’d appreciate any insights or advice on this matter.

In the game engine that I am modifying, it is supposed to blend only two animations (through something like frame-by-frame linear interpolation of the position of the bones during the specified blend time). However, after adding a lot of animations for the new movement system, I came across the fact that there is not enough "blending from blend". By default, if you press, for example, W-A-W fast enough (before the blend time has expired) the character will jerk, since for blending left and forward movements (A-W) it will look as if the left movement was "clean" and not mixed with another animation. I have several options for solving the problem, but I would like to know how other people solve similar issues.

In favor of greater smoothness and anatomicity, animations are blended frame-by-frame, and not from the fixed position of the bones, which was at the time of the animation change, so I am still acting in this logic, although I do not know if there is a great need for this, since I am not an expert in animation.

Returning to the example with W-A-W movement, it seems to me that you need to first mixing the first W and A animations in the usual way, and then blend the result in a similar way with the final W animation. If we had even 8 animations that would be mixed in a loop according to this logic, linear interpolation ensures that the "further" the animation is from the actual one, the less its contribution to the position of the bones will be, and after blend time, the bones will be determined only by the current animation.

And at the moment of the organization of this cycle, the pitfalls come up. This whole process of mixing many animations should fit into the last blend time, after which it stops. If all blend times were the same, then there would be no problems, otherwise different artifacts might come in. My solution so far is this: in the loop, all blend times (along with the elapsed time counters) should be scaled according to the smallest subsequent blend time (subsequent - that is, from those animations that were added to the queue of animation players later), which guarantees their expiration before the subsequent blend times expire. There is also an option not scaling blend time, but simply throw all previous animations out of the player queue as soon as the blend time of the newer ones expires.

So far, I have no idea which of these two options is better, and whether I'm talking nonsense trying to keep frame-by-frame blending instead of a blend from a fixed bones position.

In the game engine I'm modifying, it is designed to blend only two animations at a time using frame-by-frame linear interpolation of bone positions during a specified blend time. However, after introducing numerous animations for the new movement system, I noticed an issue: there isn't sufficient "blending from blend."

For instance, if you quickly press W-A-W (before the blend time expires), the character exhibits a jerky motion. This happens because, during the transition between left and forward movements (A to W), the engine treats the left movement as "clean"—not already mixed with the prior animation. This creates noticeable artifacts. I have several potential solutions in mind but would like to understand how others handle similar challenges.

To prioritize smoother and more anatomically accurate transitions, animations are blended frame-by-frame rather than snapping from the fixed bone positions at the time of the animation change. While this approach aligns with my current logic, I’m unsure if it’s strictly necessary, as I’m not an animation expert.

Returning to the W-A-W example: I believe the solution lies in first blending the initial W and A animations as usual, then blending the result with the final W animation. With even eight animations blended in this way, linear interpolation ensures that the "further" an animation is from the current one, the less influence it has on bone positions. After the blend time elapses, only the current animation dictates the bones' positions.

The challenge arises when organizing this blending cycle. The entire process must fit within the final blend time, after which blending stops. If all blend times are identical, this works seamlessly. However, with varying blend times, artifacts may emerge. My current solution involves scaling all blend times (and their elapsed time counters) within the loop to match the smallest subsequent blend time—subsequent referring to animations added later in the queue. This guarantees all animations complete blending before the newer ones expire.

An alternative approach would forego scaling and simply remove previous animations from the queue as soon as the newer blend times expire.

At this point, I’m uncertain which option is better—or if I’m misguided in insisting on frame-by-frame blending rather than blending from fixed bone positions. I’d appreciate any insights or advice on this matter.

added 8 characters in body
Source Link

In the game engine that I am modifying, it is supposed to blend only two animations (through something like frame-by-frame linear interpolation of the position of the bones during the specified blend time). However, after adding a lot of animations for the new movement system, I came across the fact that there is not enough "blending from blend". By default, if you press, for example, W-A-W fast enough (before the blend time has expired) the character will jerk, since for blending left and forward movements (A-W) it will look as if the left movement was "clean" and not mixed with another animation. I have several options for solving the problem, but I would like to know how other people solve similar issuesI would like to know how other people solve similar issues.

In favor of greater smoothness and anatomicity, animations are blended frame-by-frame, and not from the fixed position of the bones, which was at the time of the animation change, so I am still acting in this logic, although I do not know if there is a great need for this, since I am not an expert in animation.

Returning to the example with W-A-W movement, it seems to me that you need to first mixing the first W and A animations in the usual way, and then blend the result in a similar way with the final W animation. If we had even 8 animations that would be mixed in a loop according to this logic, linear interpolation ensures that the "further" the animation is from the actual one, the less its contribution to the position of the bones will be, and after blend time, the bones will be determined only by the current animation.

And at the moment of the organization of this cycle, the pitfalls come up. This whole process of mixing many animations should fit into the last blend time, after which it stops. If all blend times were the same, then there would be no problems, otherwise different artifacts might come in. My solution so far is this: in the loop, all blend times (along with the elapsed time counters) should be scaled according to the smallest subsequent blend time (subsequent - that is, from those animations that were added to the queue of animation players later), which guarantees their expiration before the subsequent blend times expire. There is also an option not scaling blend time, but simply throw all previous animations out of the player queue as soon as the blend time of the newer ones expires.

So far, I have no idea which of these two options is betterwhich of these two options is better, and whether I'm talking nonsense trying to keep frame-by-frame blending instead of a blend from a fixed bones position.

In the game engine that I am modifying, it is supposed to blend only two animations (through something like frame-by-frame linear interpolation of the position of the bones during the specified blend time). However, after adding a lot of animations for the new movement system, I came across the fact that there is not enough "blending from blend". By default, if you press, for example, W-A-W fast enough (before the blend time has expired) the character will jerk, since for blending left and forward movements (A-W) it will look as if the left movement was "clean" and not mixed with another animation. I have several options for solving the problem, but I would like to know how other people solve similar issues.

In favor of greater smoothness and anatomicity, animations are blended frame-by-frame, and not from the fixed position of the bones, which was at the time of the animation change, so I am still acting in this logic, although I do not know if there is a great need for this, since I am not an expert in animation.

Returning to the example with W-A-W movement, it seems to me that you need to first mixing the first W and A animations in the usual way, and then blend the result in a similar way with the final W animation. If we had even 8 animations that would be mixed in a loop according to this logic, linear interpolation ensures that the "further" the animation is from the actual one, the less its contribution to the position of the bones will be, and after blend time, the bones will be determined only by the current animation.

And at the moment of the organization of this cycle, the pitfalls come up. This whole process of mixing many animations should fit into the last blend time, after which it stops. If all blend times were the same, then there would be no problems, otherwise different artifacts might come in. My solution so far is this: in the loop, all blend times (along with the elapsed time counters) should be scaled according to the smallest subsequent blend time (subsequent - that is, from those animations that were added to the queue of animation players later), which guarantees their expiration before the subsequent blend times expire. There is also an option not scaling blend time, but simply throw all previous animations out of the player queue as soon as the blend time of the newer ones expires.

So far, I have no idea which of these two options is better, and whether I'm talking nonsense trying to keep frame-by-frame blending instead of a blend from a fixed bones position.

In the game engine that I am modifying, it is supposed to blend only two animations (through something like frame-by-frame linear interpolation of the position of the bones during the specified blend time). However, after adding a lot of animations for the new movement system, I came across the fact that there is not enough "blending from blend". By default, if you press, for example, W-A-W fast enough (before the blend time has expired) the character will jerk, since for blending left and forward movements (A-W) it will look as if the left movement was "clean" and not mixed with another animation. I have several options for solving the problem, but I would like to know how other people solve similar issues.

In favor of greater smoothness and anatomicity, animations are blended frame-by-frame, and not from the fixed position of the bones, which was at the time of the animation change, so I am still acting in this logic, although I do not know if there is a great need for this, since I am not an expert in animation.

Returning to the example with W-A-W movement, it seems to me that you need to first mixing the first W and A animations in the usual way, and then blend the result in a similar way with the final W animation. If we had even 8 animations that would be mixed in a loop according to this logic, linear interpolation ensures that the "further" the animation is from the actual one, the less its contribution to the position of the bones will be, and after blend time, the bones will be determined only by the current animation.

And at the moment of the organization of this cycle, the pitfalls come up. This whole process of mixing many animations should fit into the last blend time, after which it stops. If all blend times were the same, then there would be no problems, otherwise different artifacts might come in. My solution so far is this: in the loop, all blend times (along with the elapsed time counters) should be scaled according to the smallest subsequent blend time (subsequent - that is, from those animations that were added to the queue of animation players later), which guarantees their expiration before the subsequent blend times expire. There is also an option not scaling blend time, but simply throw all previous animations out of the player queue as soon as the blend time of the newer ones expires.

So far, I have no idea which of these two options is better, and whether I'm talking nonsense trying to keep frame-by-frame blending instead of a blend from a fixed bones position.

deleted 6 characters in body
Source Link

In the game engine that I am modifying, it is supposed to blend only two animations (through something like frame-by-frame linear interpolation of the position of the bones during the specified blend time). However, after adding a lot of animations for the new movement system, I came across the fact that there is not enough "blending from blend". By default, if you press, for example, W-A-W fast enough (before the blend time has expired) the character will jerk, since for blending left and forward movements (A-W) it will look as if the left movement was "clean" and not mixed with another animation. I have several options for solving the problem, but I would like to know how other people solve similar issues.

In favor of greater smoothness and anatomicity, animations are blended frame-by-frame, and not from the fixed position of the bones, which was at the time of the animation change, so I am still acting in this logic, although I do not know if there is a great need for this, since I am not an expert in animation.

Returning to the example with W-A-W movement, it seems to me that you need to first mixing the first W and A animations in the usual way, and then blend the result in a similar way with the final W animation. If we had even 8 animations that would be mixed in a loop according to this logic, linear interpolation ensures that the "further" the animation is from the actual one, the less its contribution to the position of the bones will be, and after blend time, the bones will be determined only by the current animation.

And at the moment of the organization of this cycle, the pitfalls come up. This whole process of mixing many animations should fit into the last blend time, after which it stops. If all blend times were the same, then there would be no problems, otherwise different artifacts might come in. My solution so far is this: in the loop, all blend times (along with the elapsed time counters) should be scaled according to the smallest subsequent blend time (subsequent - that is, from those animations that were added to the queue of animation players later), which guarantees their expiration before the subsequent blend times expire. There is also an option not to set the blending speedscaling blend time, but simply throw all previous animations out of the player queue as soon as the blend time of the newer ones expires.

So far, I have no idea which of these two options is better, and whether I'm talking nonsense trying to keep frame-by-frame blending instead of a blend from a fixed bonebones position.

In the game engine that I am modifying, it is supposed to blend only two animations (through something like frame-by-frame linear interpolation of the position of the bones during the specified blend time). However, after adding a lot of animations for the new movement system, I came across the fact that there is not enough "blending from blend". By default, if you press, for example, W-A-W fast enough (before the blend time has expired) the character will jerk, since for blending left and forward movements (A-W) it will look as if the left movement was "clean" and not mixed with another animation. I have several options for solving the problem, but I would like to know how other people solve similar issues.

In favor of greater smoothness and anatomicity, animations are blended frame-by-frame, and not from the fixed position of the bones, which was at the time of the animation change, so I am still acting in this logic, although I do not know if there is a great need for this, since I am not an expert in animation.

Returning to the example with W-A-W movement, it seems to me that you need to first mixing the first W and A animations in the usual way, and then blend the result in a similar way with the final W animation. If we had even 8 animations that would be mixed in a loop according to this logic, linear interpolation ensures that the "further" the animation is from the actual one, the less its contribution to the position of the bones will be, and after blend time, the bones will be determined only by the current animation.

And at the moment of the organization of this cycle, the pitfalls come up. This whole process of mixing many animations should fit into the last blend time, after which it stops. If all blend times were the same, then there would be no problems, otherwise different artifacts might come in. My solution so far is this: in the loop, all blend times (along with the elapsed time counters) should be scaled according to the smallest subsequent blend time (subsequent - that is, from those animations that were added to the queue of animation players later), which guarantees their expiration before the subsequent blend times expire. There is also an option not to set the blending speed, but simply throw all previous animations out of the player queue as soon as the blend time of the newer ones expires.

So far, I have no idea which of these two options is better, and whether I'm talking nonsense trying to keep frame-by-frame blending instead of a blend from a fixed bone position.

In the game engine that I am modifying, it is supposed to blend only two animations (through something like frame-by-frame linear interpolation of the position of the bones during the specified blend time). However, after adding a lot of animations for the new movement system, I came across the fact that there is not enough "blending from blend". By default, if you press, for example, W-A-W fast enough (before the blend time has expired) the character will jerk, since for blending left and forward movements (A-W) it will look as if the left movement was "clean" and not mixed with another animation. I have several options for solving the problem, but I would like to know how other people solve similar issues.

In favor of greater smoothness and anatomicity, animations are blended frame-by-frame, and not from the fixed position of the bones, which was at the time of the animation change, so I am still acting in this logic, although I do not know if there is a great need for this, since I am not an expert in animation.

Returning to the example with W-A-W movement, it seems to me that you need to first mixing the first W and A animations in the usual way, and then blend the result in a similar way with the final W animation. If we had even 8 animations that would be mixed in a loop according to this logic, linear interpolation ensures that the "further" the animation is from the actual one, the less its contribution to the position of the bones will be, and after blend time, the bones will be determined only by the current animation.

And at the moment of the organization of this cycle, the pitfalls come up. This whole process of mixing many animations should fit into the last blend time, after which it stops. If all blend times were the same, then there would be no problems, otherwise different artifacts might come in. My solution so far is this: in the loop, all blend times (along with the elapsed time counters) should be scaled according to the smallest subsequent blend time (subsequent - that is, from those animations that were added to the queue of animation players later), which guarantees their expiration before the subsequent blend times expire. There is also an option not scaling blend time, but simply throw all previous animations out of the player queue as soon as the blend time of the newer ones expires.

So far, I have no idea which of these two options is better, and whether I'm talking nonsense trying to keep frame-by-frame blending instead of a blend from a fixed bones position.

Source Link
Loading