Download

Double footstep sound while animations blend

I have a big issue with notifies triggering rules in ue4.26…

All my animations has foot step notifies. Most time all works fine, but when two anims starts blend, sounds was play from both animations at same time, causing double footstep sound.

I found several ways to solve this problem:

  1. Set anims/blendspaces to one sync group, where notifies was fired only from leader animation.
  2. Change notify trigger weight threshold from default 0.000001 to 0.5 for example, for block notifies from low weighted anims.

But these methods not work for me because:

  1. I use several sync groups in my animation system. Blend between different sync groups also causes double sounds.
  2. Trigger weight threshold works with global weight. That means if i blend 10 anims with equal 0.1 blend weight, sounds will disappear because notify need more then 0.5 weight to be executed.

Is there any other way to build notifies priority rules? In my case notifies should executed only from hirest weighted animation in whole anim graph. I hope in future notifies system be more flexible then now.

Better animations is the real solution.

Same frame count (24) for each walk cycle. Same frame for “foot down” regardless of the rest.

This will not solve the problem. Maybe for simple runner mobile game its ok, but i have realistic animations with diffrent footstep timings, and any other non cycled animations like transitions etc. All this anims cannot have equal lengths and equal foot plant times.

Better animations will ALWAYS solve the problem. Everything else is a work around, while understanding how to make proper animations is the only real solution to all the problems.

The difference between professional animation and doing things as a beginner/mid level until you bash your head into the problem is exactly the same as the difference in levels of understanding.

I assume you have watched this before:

Like showcased, you can break apart the free sample’s animation and see how they are timed (and synchronized)

Blend spaces, done right. will never have a 50% weight spot that generates a sound - or a bunny hop. (sort of regardless of the quality of the animation in use, then again, bad animations will lead to the timings being off as well).

Some blend spaces, like running, or walking, can and often do need very specific timed animations to work correctly as a blend space.

Here’s a quick example between Right, and Wrong.

Around 50% blend.
One is made so it cycles. the other bunny hops.

Usually, every frame cycle is made out of 24 frames (or multiples thereof).
Every 3 frams you have a key frame - the space in between is interpolated by the DCC

You want to define your Up, Down, and Mid poses.
0 and 24 are identical frames - 24 is not exported (so the final animation length in engine is 23 frames.

the middle, 12, can probably be a copy/paste opposite of frame 0 if you do not have mocap data (if you do, good for you, having the pose be different adds realism to the cycle).

that makes frame 6 and 18 to also be the same but opposite of one another.

So long as any similar ratio is kept - in such a way that all your animations have similar or identical timing to one-another, then you’ll really never get a double step issue or a false IK contact because of curve math.

Hope that helps.
If the problem is " I don’t want to touch the darn animations" I hear you.
I feel about the same on it after doing it hands on professionally.

Thanks for reply, but i think you misunderstood my problem. Make good animation and blending relations between anims is not problem for me. My problem is only about notifies triggering.
A detailed explanation of my problem with an example:
All my anims has automatically planted contact/flying nofity states, and plant/release notifies for each limb (thanks to anim modifier)
Idle animation on first pic.


also i have non cycled stomping animation (for turn in place, or return foots to right position from foot locking system)

and lets see walk cycle anim for example

this three animations are not synced by sync group or inside one blendspace. It means that notify states and sound notifies will be executed from all this anims while it blend. On screenshot you can see how anim notifies from this anims overlaps, i catch moment when idle, stomping and locomotion anims have non zero weights. Same happens with sound notifies. (Print string data on screen executed inside notify state tick event, for cleary see a problem)

Another example can dicribed without screens:
if locomotion animations have maximum 0.001 weight, and idle anims has 0.9999 weight, locomotion anims still produce footstep sounds, because idle and locomotion anims are not in same sync group. Because notifes in ue4 executed from hirest weighted animation from EACH sync group.

I need notifies execution only from hirest weighted animation in whole anim graph, not from each sync group.

Definitely don’t use notify for this.
for one, it’s inaccurate and has a chance not to fire at all.
For another, it causes bugs like the one you are experiencing.

Set up IK curves for the foot positioning, and use the curve value to trigger the sound - basically at the same time the IK would kick on.

For my setup, since each foot has a line trace, the surface detection and sound system is attached as a part of that.

On a normal setup, where you only use the capsule trace (that’s already there) to get the pysical material to play the sound against, you would simply create a “play sound” event, and call it once when the curve value is >= .9 (because floating point precision).

You can either use a “do once” and reset when the ik weight reaches <= 0 - or possibly fine-tune that to .5 so there’s a chance half setps allow for a second sound to play.
You have to play test your setup since everyone approaches things differently.

Regardless, dump the notify - for pretty much anything except Niagara effects.

2 Likes

Thanks. I also thought about this option week ago. Fortunately i have contact curves in my anims for build your solution. But it’s still a pity that notifies system by ue4 devs cant provide flexible footstep sound system :slightly_frowning_face:

Well if you are using absolute animation it works fine and will for most. When you start playing with curves the final output pose can be different from the key pose. If you are making use of curves then you will need to trigger on the value of the curve as the notify is based on the time line.

Would be nice if you could add stuff in an intuitive manner but working with curves has a lot more precision.