USkinnedMeshComponent bad editor tick performance

Good morning,

after migrating a level to our development project I noticed very bad editor performance. After optimizing the scene I went into Unreal Insights since we were CPU bound in the game thread.

In Insights, I noticed that each existing Animation Blueprint was very expensive, especially for basically a still image in editor. Each USkinnedMeshComponent Component Tick was around 3.5ms per tick! Needless to say that with 7 characters this is very costly.

The characters have a pretty standard Metahuman setup, and the affected Skeletal Meshes were all face meshes (they’re the only ones with an Animation Blueprint assigned). The mesh components also have Groom components (beard, etc). Disabling/Deleting them gave only a small amount of time back.

It’s important to mention that this is only editor time. In game (PIE), the value went down to less than 1ms for all instances. That’s a huge difference! Of course there were other tasks in Insights with much higher values then, but overall still better than in editor.

Ticking the “Use Ref Pose on Init Anim” helped drastically, but not reliable. The times were comparable with the PIE time then, but again, not reliable. They snapped back to the “normal” 3.5ms eventually for no reason.

Ticking the “Disable Post Process Blueprint” also helped, but we need the Post Process Blueprint. We could theoretically enable them manually on BeginPlay, but that feels like a pure workaround. Also, I don’t know if that works reliable.

I don’t know if this is a bug or just some setting we are missing. We could totally live without PP AnimBP in editor (but not in game), and we will very likely place more than 7 characters in a level.

If anybody knows a solution or can at least explain what’s causing these times, thank you very much.

sirjofri

P.S: I was also glancing through the code and the only apparent difference between editor and game is the morph targets. Disabling morph targets didn’t change a thing though. Also I tested with a completely empty Animation Blueprint, and it was the same.

Update: I temporarily disabled the post process anim blueprint using the mentioned checkbox. For now, the performance seems stable, but this is still no “real” solution.

I think I’ll just try to reproduce it in a blank project and then report a bug.