Unexpected sync groups behavior

Hi. For the last month of work on my project i found several bugs in sync groups behavior. I dont know how many more oddities has sync groups code, but its already critical for my project.
The problem is that the sync groups can unexpectedly reset self time position during transitions between anim states, or while blending by BOOL, INT or ENUM nodes. Also sync group can reset time position when it shouldn’t be.
I create example project with reproduced each case with WALK and RUN anims. Blend between this anims driven by custom pulsating variable for clear observation of changes in sync group.


Below is a list of problems for a clear understanding.

CASE 1. Sync group always reset time position during zero or near zero transition between states in state machine.


case1-2
I think if transition fully executed at one frame, sync group time will be reset to most relevant anim start position. If i set sufficient time for transitions (eg 0.1), sync group will keep previous position correctly, but if i clamp max FPS to 10 for example - sync group again will be reset time position after transition.

CASE 2. Sync group always reset time position during transition in inertialization mode, independently to blend duration time.
case2
Same problem like case 1, but in inertialization mode that error happens always, independently to blend duration time. That means i cannot use this feature if anims in different states are synced.

CASE 3. Sync markers based syncing dont work with non-looping animations.


case3
If new leader animation in marker based sync group is non-looping - sync group always reset position in all cases.

CASE 4. Sync markers based syncing ignores “Always reset on entry” option in anim state settings.



case4
If blended states has true “Always reset on entry” option, marker based sync group will keep prev position without reset.

Who knows any more thoubles with sync group? And who knows how solve this?

Link to example project - syncGroupBugsV26.7z - Google Drive (ue4.26)

2 Likes

I have the same problem with sync groups, but in my case, I try to sync walk loop and stop animation, sync markers just don’t work at all. Have you found a solution for this?

1 Like

Yes. I solve this issue.

  1. In animModifier class i procuderally create two curves for each sync group ( 1. Anim length value, 2. Weight curve (value = 1)) for each sync group. Curves must be created in all synced anims.
  2. After that convert all synced anims to single frame mode (right mouse click on anim node).
  3. In anim BP create float var to drive anim time for sync group. My example on first screen
  4. connect variable to each anim node. Note: for blendspaces u dont need scale value to anim length, it drives by normalized time position
  5. Use “modify curves” node for filter sync group curves at any anim graph position (right side on second screen)
  6. If u have sync markers - delete all. Because it add unexpected behaviour to single frame anim nodes.

For your case with start stop transitions you can manually modify sync group variable as you want.

4 Likes

… this may be worth a shot. Not sure they actually care about it, but they are tweaking animation stuff for ue5. So maybe they can pick this up too.
@LDelayen

I myself have used the groups (in .22) but I have actually never even bothered to check if they were working accurately / never noticed them not working as I expected them to.

Yeah, thanks for the insight. In my case, I had to do a lot of stuff manually, as stop animation has different speed unlike walking cycle. Sync groups and markers seem like an awesome feature, hope devs will fix it in the near future

Hello, we work with 5.1.0 version and came across new issues about sync groups with sync markers and inertialized transitions.

I can’t start animation from the beginning - it leads that I can’t play start-stop animations because they start from the syncronized position. I think transition leader role must work, but it doesn’t.

Maybe somebody found any solution about it.

I’ve got it (syncgroup, markers, ue5.0). Try LayeredBlendPerBone node with root bone.

Pic: mix StartMachine (that produce sync as leader by markers) with Idle sequence (sync is off). Result (StartState) is used by general movement state machine, transition sync between StartState and LoopState works correctly.

Transitions between Blendspaces are still not synced, will they ever fix it? Sometimes it does, others doesn’t, if I try to do getting remaining blendspace time ratio it also always gives value 1. My Blendspace animations always start with the same foot notify at 0 and other foot at half, same group name, so I don’t know why it’s not syncing. It makes the animation very awkward, I think they should fix it.
I think I’ll try moving forward to motion matching, maybe it fixes the issues when I get it going right.

Edit: I actually want to keep with blendspaces, they are working better than motion matching in my opinion, if any one has an updated solution on the transitions, please let me know.

I think I found the solution!

If you have any additive animations check them all with “ignore for relevancy test”. It fixed for me. I think some reason they were triggering something even though they don’t have any of my notifies nor sync groups.