Groom hair pop during camera cut teleports in nested subsequences

During Sequencer playback in Editor, we’re seeing groom simulation (Niagara solver) re-initialize at nested shot boundaries during runtime playback. It appears that when a character experiences a transform discontinuity between subsequences, the groom solver interprets it as a teleport event, which results in a visible hair pop.

hairPopTest.mp4(1.1 MB)

Steps to Reproduce

  1. Open project
  2. Open Test_LS level
  3. Open Master_Sequence and lock in camera cuts.
  4. Play in Editor to see hair pop between nested shots. Same issue happens when playing in editor.

I have a project to upload but the portal is not allowing me to attach it. Is there another way to share. I created the .zip of the project following the guide below.

[Content removed]

Hi, Did you try modifying the teleport max distance to a bigger value? that way you will have no teleportation when moving your character around? Would that work for you?Thanks, Michael

We tried that , it didn’t work. It was suppressing the simulation and the pop between shots was contained, but still there.

Ok I try again and even when there is no reset in the simulation, the sim is still popping. Weird. I am going to check why. In the mean time you can try setting the Local bone to some other bones to see if the popping is coming from the underlying animation. Will check that on my side as well and will let you know.

Thanks Michael

There seems to be 2 sources for the hair pop.

Forcing a Simulation Reset on camera cuts seems to help by eliminating the momentum carried over from the previous shot. Compare the top row vs the bottom row in my “GroomPopOnCut” video.

However, there’s still a different pop because the reset itself places the hair into a different “rest” pose that the simulation has to transition out of to reach its equilibrium pose. See my “RestToEquilibrium” video.

Is there a way to reset the simulation while preserving the current pose, so that only the accumulated momentum is cleared?

Alternatively, if resetting to the rest pose is required, is there a recommended way to smooth or attenuate the transition from the rest pose back into the simulated state to reduce the visible pop?

RestToEquilibrium.mp4(12 MB)

GroomPopOnCut.mp4(12.8 MB)

Could we get an update on this? We are having similar issues on our side and I would like to know if you found a solution. Thank you.

Hi, Sorry for the late answer. I just gave it a try and if you set the linear/angular velocity scale to 0 on the component (no additional force coming from the animation of the head local bone) you have a better result. but you still can see some kind of a pop due to animation not being smooth in between the sequence transitions. There is currently no way to freeze the deformation in between subsequences transition. Ideally we would use a RBF to transfer the guides deformation on another animation pose. Is it not possible in your case to have a smooth animation or to overlap the 2 subsequences for about 4-5 frames in order to have a continuous behavior?

Thanks, Michael

Hello!

Just to clarify:

What exactly do you mean by overlap the 2 subsequences for about 4-5 frames? Is this overlap in the parent level sequence or is it about extending the data outside the playback range in the subsequences? We can’t blend the animation between cuts because we teleport the character or adjust posing between shots.

The characters we have that have groom simulation are not dynamic. In a given cinematic we will always have the same characters with the same groom assets. I was wondering if it is possible to cache the first few frames of a subsequence and then transition from a cached playback to a real time simulation. Is that possible? We briefly investigated caching the simulation but we don’t have the memory bandwidth to do this for all our grooms.

Maybe something like the “Cinematic Prestreaming Plugin” (which is now beta in 5.8) could be used to caching of the first frames of a shot, like you describe. That plugin is used to fix shot transition issues with Nanite and Virtual Textures, but maybe something similar could be done for cloth/groom simulation.

We haven’t tried the plugin yet, but we are planning to test it once we transition to 5.8.

I was more referring to this:

Hi, Ah ok so if you are teleporting the character and adjusting the pose having a smooth transition in between shots is hard. Caching could be a solution. So yes in theory you could maybe cache the simulation for few frames and when the cache will be removed/disabled the simulation will start from there. Or if it is pure cinematic you could maybe cache the full sequence for the characters you are interested in and for which the pose has been changed (teleport is ok since you are in local space).

Thanks

Michael