ISM temporal smearing when using WPO on instances

Hello,

I’ve been trying to resolve an issue with slight blurring/ghosting on ISM meshes that are animated via WPO. I’ve looked across some other threads and the usual suggestions are to set the ISM to be non-static or to enable “Output velocities during base pass”, but on our end both of those things are set.

I’ve tried a few other settings in the materials for the meshes as well as render settings on the ISM itself (to make sure it’s outputting velocities) but that doesn’t seem to work either, and disabling motion blur doesn’t seem to have any effect on this which points to it potentially being a TSR artifact.

I’ve found this issue which seems to have a resolution, but I can’t access it via P4 due to insufficient permissions, so I can’t verify whether or not we have this change and whether or not it would be feasible to pull in on our end.

Hello!

We had a bug that published CLs on a stream that is not accessible by licensees for a while. The CL from UE5\Main would be CL37849403.

Regards,

Martin

Thanks Martin! Seems like we didn’t have that change locally, but it seems like even after pulling that in I still see temporal smearing on animated ISM instances.

Hi,

thanks for reaching out. I’ve been trying to reproduce the issue on my end in UE5.5 using an ISM component with a simple WPO enabled material, but wasn’t able to see the smearing. Would it be possible to provide some repro steps or a minimal repro project?

Can you also try setting the CVar r.Velocity.ForceOutput to 1? This should force velocity output on all primitives (not a fix, but could help diagnose the problem).

Thanks,

Sam

Hi Adrian,

you may give a try with r.Velocity.EnableVertexDeformation=1, i’m animating a bunch of ISM using WPO and we needed this to prevent instances to get ultra blurry.

None of these seem to be helping in this case. To be more specific, we are using an anim-to-texture workflow to generate vertex animation textures and apply them to static mesh actors. The smearing is not as the object moves through the world, but rather as the static mesh animates (via WPO) the materials for that static mesh seem to have internal smearing (internal to the actor).

There don’t seem to be any settings within materials to enable velocity output if the material is not translucent (I assume that velocity output is enabled by default on non-translucents), but we still see what seems to look like TSR smearing within the static mesh materials as it animates.

Also worth mentioning that this is using ISMs indirectly through the mass entity visualization component. I am not noticing this issue when playing the WPO animations on a regular ISM in the editor but it seems to happen when the using the Mass Visualizer component ISMs, so maybe it’s actually related to mass entity.

Hi,

>> To be more specific, we are using an anim-to-texture workflow to generate vertex animation textures and apply them to static mesh actors.

Would you be able to provide a simple minimal repro project showing the issue? I’m unable to reproduce the issue on my end using vertex animated textures (I may be missing some steps). That would greatly speed up my investigation to look for a fix and be able to file a bug report with Epic.

Thanks,

Sam

Hello,

Sorry for the delay, but due to some time constraints as we try to ship our game we are a bit pressed to take the time to provide a good repro of this. I’ve opened a private thread with some video the shows the issue in the meantime (which seems to be related to Nanite meshes, as it doesn’t occur when nanite is disabled on the mesh).

Hi,

since it’s happening only with Nanite enabled meshes and WPO, can you try increasing Max World Position Offset Displacement on the material? This should increase the bounds where the WPO is valid, see https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-material-properties#max-world-position-offset-displacement-usage for more details. Another potential way to work around this is to scale the object by 2x and then compensate the WPO to make it more or less the original scale. The idea is that the original boundaries for the mesh will be larger than you need for WPO.

[Image Removed]

Let me know if that works.

Best,

Sam

Hello,

We’ve already tried using Max World Position Offset Displacement to no avail here. It does help with cluster culling artifacts but does not help with the smearing we are seeing.

We’ve also noticed that this only tends to happen for WPO animated nanite meshes when the mesh itself is sufficiently far from the origin. The further the mesh is the more prominent the issue seems to become. If the mesh is sitting closer to the origin then the issue is almost non-existent.

Thanks, in the case where the mesh is far from the world origin it’s possible that precision issues crop up when when calculating the world position offset, leading to smearing (UE5 supports large world coordinates with double precision, but it may not have been implemented for this case yet). You can quickly check if this is the case by calling SetWorldOriginLocation and see if it solves the WPO smearing issue, however it’s not a fix as other world-aligned materials will shift as well.

You can set the World Position Origin Type property on most material nodes that take or produce a world space value to use Camera Relative World Position (or translated world space) and achieve optimal precision and performance (see the docs).

Please let me know if this helps.

Thanks,

Sam