Mutable doesn't respect Customizable Object Number of Bone Influences setting as Twelve and the output Mesh always have max 8 bone influences

Summary

Despite I set CustomizableObjectNumBoneInfluences=Twelve in DefaultMutable.ini when I use a mesh that has more than 8 influences it is trucated to 8 influences.

Please select what you are reporting on:

Creative

What Type of Bug are you experiencing?

Other

Steps to Reproduce

  • Create a new project
  • Add metahuman and mutable plugins
  • Close project and edit file in engine’s folder Engine\Plugins\Mutable\Config\DefaultMutable.ini with following:
    CustomizableObjectNumBoneInfluences=Twelve
  • Open project and create a metahuman (MH head has 9-12 bone influences. But any mesh that have 9-12 influences should have the issue)
  • Create a mutable CustomizabelObject
  • Use the head as source and create a simple CO.
  • Bake the CO and export a mesh.
  • Compare the source mesh to output mesh.

Expected Result

The source mesh has max 12 bone influences, the output mesh is expected to have max 12 bone influences too. (As we have the setting in place)

Observed Result

The output mesh is max 8 influences. The vertices that have more than that are truncated down to 8 influences.

Platform(s)

Unreal Engine 5.7 and Wİndows

Upload an image

Video

Additional Notes

I have created an editor tool to compare the 2 meshes. And verified that vertices in the output have max 8 influences.
A sample vertex info in my tool’s output is as follows:
“VertexDifferences”: [
{
“BaseIndex”: 128,
“Pos”: “X=-0.124 Y=10.536 Z=149.677”,
“BaseInfluences”: [
“FACIAL_R_12IPV_LipLower4(20303)”,
“FACIAL_R_12IPV_LipLower5(14649)”,
“FACIAL_L_12IPV_LipLower4(7453)”,
“FACIAL_R_12IPV_LipLower3(7196)”,
“FACIAL_L_12IPV_LipLower5(5397)”,
“FACIAL_R_12IPV_MouthInteriorLower1(4626)”,
“FACIAL_L_12IPV_LipLower3(2570)”,
“FACIAL_L_12IPV_MouthInteriorLower1(2313)”,
“FACIAL_R_12IPV_LipLower12(514)”,
“FACIAL_R_12IPV_LipLower13(257)”,
“FACIAL_R_12IPV_LipLower10(257)”
],
“TargetInfluences”: [
“FACIAL_R_12IPV_LipLower4(20303)”,
“FACIAL_R_12IPV_LipLower5(14906)”,
“FACIAL_L_12IPV_LipLower4(7710)”,
“FACIAL_R_12IPV_LipLower3(7453)”,
“FACIAL_L_12IPV_LipLower5(5397)”,
“FACIAL_R_12IPV_MouthInteriorLower1(4626)”,
“FACIAL_L_12IPV_LipLower3(2827)”,
“FACIAL_L_12IPV_MouthInteriorLower1(2313)”
]
}

MeshComparisonReport.json (557.3 KB)

Full report attached.

This is the output of my comparison editor tool.

There are differences like missing bones but I suspect those are caused by truncating the bone influences down to 8.

I also added the tool C++ file I used. (CompareSkeletalMeshes method is the tool. The others are for other purposes)

CreateMorphEditorLib.cpp (59.5 KB)