How to get grooms to work with mutable?

In 5.7 grooms seems to be broken with LOD > 0 in mutable:

The binding to the head is all messed up. Also, groom levels of detail seem to not be applied at all and only groom LOD 0 is visible. Is there a way to make it work @GerardMTE ? We’re completely out of ideas here.

Experiencing the same thing @GerardMTE.

If you see hair in places in incorrect places usually means that the triangle indices of the mesh do not match the triangle indices of the groom binding. Make sure you are not performing any mesh operations on any LOD (Extend Mesh Section, Clipping…). If you need to perform mesh operations you can always have move the geometry to a different component that will not have a groom attached.

1 Like

I had this setup in 5.6 and it was working well, in 5.7 something changed related to Groom binding. In 5.6, I was making it work by baking the body mesh, then using the baked body mesh in the Binding Asset of the Groom, but now even this trick doesn’t work. Same effect as in @Pete_the_B’s screenshot.

The thing we’re doing is taking LODs from input skeletal meshes, process them the exact same way as LOD0 and connect them to output Skeletal Mesh Components. With LOD0 grooms work perfectly, but with all other LODs, the grooms are totally messed up. The same thing happens in the official Mutable sample project.

We recently fixed the Sample and in the next update grooms will work as expected on all LODs. The fix was content only, so you can make them work without having to update the engine.

To make them work you must make sure that the binding SKM is exactly the same one as the one generated by Mutable. This means no operations on the Mutable Graph but also making sure that Mutable is generating the same sections as the binging SKM.

In the case of the sample, the groom binding was done with the full body SKM but the groom was attached to a generated mesh that only included the head sections. On LOD0 this is not an issue since the binding only uses head triangles. In the other hand, lower res LODs do not work properly due to the binding also attaching to the body triangles (which generated mesh does not have).

This is either a PEBCAK or I don’t understand. I’m using the vanilla bindings from Metahuman, they bind to the mh head:

I modified my graph to attach that to the head only, as you described. This is a skeletal mesh for the face, object group attached is the group with the grooms, so child object has only “head” elements, from lod0 to lod3:

Yet the issue persists:

Same happens to me. Worked in 5.6 and now it’s broken.
Tried the steps here, and tried separating eyes and mouth into another component, no luck.

@GerardMTE can you provide some more info? It really doesn’t seem to be working or we’re misunderstanding how it should work.

If you post screenshots with your setup I can help debug it. In any case, here is the setup of the next version of the MutableSample (5.8, not released yet).

Notice the binding is using the same SKM as the one in the CO_Character_Head.

@GerardMTE Thank you for explaining. My setup is a tad different - no morphs, however it’s metahuman, so the head consists of many assets. I know it looks likes like a lot, but:

  1. The individual elements of LOD0 must be connected, otherwise the eyeballs dissapear.
  2. Once you follow to LOD in the Skeletal Mesh [1] nodes, you can see it’s just matching LOD to LOD in Skeletal Mesh Component[2] nodes.

  1. Then I created a Child Object [3] to connect the Grooms Object Group [4] (based on your feedback to make sure the binding matches the mesh).

  1. Then it all connects to the base object [5]

  1. This is how the Grooms are set up (vanilla MH bindings)

The final result, unfortunately, persists: