Mutable - Visual glitch when mesh is applyed

Hello

Like some of my previous questions, we use mutable to create our characters and adapt the equipment on different bodytype.

We have a graphical glitch when a character load. All the vertices of the mesh shakes violently in a large radius around the character for 0.1s-0.5s. When the player come near to this npc, a 2nd glitch happen (it look like a new LOD is loaded/applyed), after that, the character works fine.

It happen on every characters. They all share the same customizable object, but with a different customizable object instance.

With the debug command “Show LOD” the problem disappear. In addition to this behavior, I don’t know what this command does.

This problem only happen in a cooked version, we don’t have this problem in the editor nor in play in editor.

----

On the editor side, we have an other problem that may be linked to this one.

When the first character load we trigger an ensure with this callstack (but i think it happen everytimes, ensure are triggered only one time).

USkeletalMergingLibrary::AddBlendProfiles(USkeleton *, const TMap<…> &) SkeletalMergingLibrary.cpp:364
USkeletalMergingLibrary::MergeSkeletons(const FSkeletonMergeParams &) SkeletalMergingLibrary.cpp:288
MergeSkeletons(UCustomizableObject &, FCustomizableInstanceComponentData &, bool &) CustomizableObjectInstance.cpp:1283
BuildSkeletonData(const TSharedRef<…> &, USkeletalMesh &, FCustomizableObjectInstanceComponentIndex) CustomizableObjectInstance.cpp:3868
UCustomizableInstancePrivate::UpdateSkeletalMesh_PostBeginUpdate0(UCustomizableObjectInstance *, const TSharedRef<…> &) CustomizableObjectInstance.cpp:2393
impl::Task_Game_ConvertResources(const TSharedRef<…> &) CustomizableObjectSystem.cpp:3188
UE::Core::Private::Function::TFunctionRefCaller<`impl::Task_Game_LockCache'::`2'::<lambda_2>,void>::Call(void *) Function.h:292
UE::Core::Private::Function::TFunctionRefBase::operator()() Function.h:414
FMutableTaskGraph::TryLaunchGameThreadTask() FMutableTaskGraph.cpp:322
FMutableTaskGraph::Tick() FMutableTaskGraph.cpp:335
UCustomizableObjectSystem::TickInternal(bool) CustomizableObjectSystem.cpp:4128
UCustomizableObjectSystemPrivate::UpdateResourceStreaming(float, bool) CustomizableObjectSystem.cpp:4633
FStreamingManagerCollection::UpdateResourceStreaming(float, bool) ContentStreaming.cpp:869
IStreamingManager::Tick(float, bool) ContentStreaming.cpp:696
FStreamingManagerCollection::Tick(float, bool) ContentStreaming.cpp:838
UEditorEngine::Tick(float, bool) EditorEngine.cpp:2446
UUnrealEdEngine::Tick(float, bool) UnrealEdEngine.cpp:534
FEngineLoop::Tick() LaunchEngineLoop.cpp:5828
EngineTick() Launch.cpp:60
GuardedMain(const wchar_t *) Launch.cpp:192
LaunchWindowsStartup(HINSTANCE__ *, HINSTANCE__ *, char *, int, const wchar_t *) LaunchWindows.cpp:266
WinMain(HINSTANCE__ *, HINSTANCE__ *, char *, int) LaunchWindows.cpp:334

Here the 4 meshs of the character are combined (the body skin, the armors, the gloves and boots), they all have their skeleton with the sames bones.

When the 2nd profile (skeleton) is added, the ensure is triggered.

All elements have the same skeleton base, and i think mutable must merge them (it look like to be the objective of this fonction).

Why this happen ? and is it linked to the main problem of this topic ?

Thank you for your answer.

Nicolas

[Attachment Removed]

Hey there,

For the first issue, are all submeshes and LODs breaking? Is it just the head mesh? I see from your previous cases that you’re using metahumans? Are you combining your head and body meshes?

For your second, are you using different blend profiles on your skeletal meshes, do you have a clear repro from content that you could share?

Dustin

[Attachment Removed]

Hi

1 - We are not combining the meshs, we keep the body and the head separated.

I don’t really know if the problem come from the head or the body only, it seem to come from the 2 at the same time.

With the command r.SkeletalMeshForceLOD 0 1 2 or 3 (we have 4 lod levels), i can force the lod on all the skeletals meshs.

When enabled, the problem disappear. When i reduce the lod level (from 3 to 2 for exemple), the glitch happen to all the characters at the same time.

2 - What are the blend profiles on the skeletal meshs ?

I have found that it only happen when one character have an equiped armor. I think it’s logic if nothing is equiped, there are no meshs combinaison

[Attachment Removed]

When enabled, the problem disappear. When i reduce the lod level (from 3 to 2 for exemple), the glitch happen to all the characters at the same time.

Got it, so just to further clarify if you were to use the Mesh Lod Coloration view, the issue will only happen to lods 1-3 on each mesh but LOD 0 is fine? When DNA files are involved this usually indicates that the LOD data coming from Mutable is being modified in some way that the DNA file doesn’t match anymore. When you remove the DNA file, does the issue persist?

I have found that it only happen when one character have an equiped armor. I think it’s logic if nothing is equiped, there are no meshs combinaison

This ensure you’re hitting is indicating that the blend profile you are trying to add already exists and can’t be merged together. This indicates that your meshes are coming from different skeletons and being merged together, but already share blend profile data. I think that is more of what I’m asking for to get more info about your setup. Anything you can share about where your various blend profiles are stored and how you are combining skeletons will be helpful for me to attempt a repro. I’m checking with the team on the extent of support, but most likely, you will want to remove or rename duplicate profiles.

[Attachment Removed]