How to fix the groom's shadows

Hi, I’m trying to make some hair using the groom plugin but I’m facing some shadow issue.


You can see with the image that lumen works fine with the shadows of the head but the ones from the grooms/hair are all noisy.

To create those hair, I used blender then exported them. The “groom” and “alembic groom exporter” plugins are is enabled, the “support compute Skin Cache” is checked.

I have a BP_Sky_Sphere, a Directional light (set to movable) and a PostProcessVolume active in the scene.

I’m quite new so maybe there is something that I don’t know and i’ll be happy to learn more ^^
Oh also I tried with UE4 and UE5 with new scenes and I got the same problem.
Hope you can help me ^^

You need the light source to “cast deep shadows”

Enabling “cast deep shadows” had no effect for me in reducing the noise caused by groom hair shadows.

For me, enabling “Distance Field Shadows” reduced the noise by a good amount, but it’s still there and still quite noticeable. It seems the noise can be further reduced by lowering the “Hair shadow density” option in the groom asset, however that comes at the cost of your groom shadows being far less noticeable.

Really wish there was an easy way to “clean up” shadows caused by groom hair as it really is quite noisy.

1 Like

Yea I still have the same problem, I’m starting to believe that this is the GPUs fault because I have the 1080Ti and since it’s a GTX and not an RTX it’s causing problems. I tried the “Cast Deep Shadows” it added some shadows in the hair but the shadows still looks noisy.
In this scene I have only one Directional Light active and it’s on UE 5.1

1 Like

I’ve got an RTX 2060 Super, I’ve been using software ray tracing with hardware ray tracing disabled, I just checked to see if enabling hardware ray tracing reduces the noise level but I don’t see any difference. The one thing that does seem to clean up the noise a bit is increasing engine scalability. When I crank it all the way up to Cinematic, the noise is reduced quite a bit but it’s still there. And keeping the scalability on cinematic at all times isn’t realistic for my project.

I also tried cranking up the hair strand width to 0.05 to see if a thicker strand would help cast better shadows but it does not seem to.

So, I think we are still looking for a solution here.

1 Like

I’ll try to increase the engine scalability too then, to see if it does something on my side. I’ll keep you updated if I found something interesting. Maybe it’s something in the plugins or in the project settings that we didn’t enabled, I don’t know…

I’ve found this video that, sadly, does not fix the problem but helps to “hide” the noisy shadows. The directional lights makes the noisy shadows but the Rect and Point lights makes these very soft shadows which helps hiding the noise. It’s not the solution to the problem but It’s useful until we get a proper solution.

Chiming in with some more stuff I’ve found related to this problem:

If you are using Lumen, increasing the “Final Gather Quality” will reduce the noise.

In the groom asset file, enabling “Use Hair Raytracing geometry” will drastically reduce noise.

Unfortunately, both of these solutions use quite a bit more GPU processing power (as if grooms weren’t heavy enough on performance).

I ended up reducing the Curve and Vertex decimation of my hairstyle to 0.2, increasing the strand width to 0.04, using hair raytracing geometry, setting Lumen final gather quality to 2, and engine scalability to High. This allowed me to maintain 60 fps in my project while reducing the hair noise level to an acceptable amount. The biggest performance gain was in reducing the vertex and curve decimation, however reducing it too much with some hairstyles can lead to ugly results.

Also, for whatever reason, if the groom hair has simulation enabled, the density of the strands will change. It’s possible to reduce the curve and vertex decimation far more with physics disabled while still getting somewhat dense strands.

So, if you’re comfortable using grooms without physics, I’d recommend doing so and reducing the curve and vertex decimation drastically in order to counter-act the performance of using hair ray trace geometry. It’s really a question of if you want clean hair shadows or hair physics, you can only have one and hope to achieve decent frames.

1 Like

I tried with the metahuman hair and it did the same thing as before for the shadows BUT I found how to fix it. I went into the BP of my metahuman, viewport, component (on the left side), “Hair” and went to “groom” in the Details panel (Right side), check the “Use Cards” and then I got perfect shadows and better frame rate. Hope that can help you for your project !

1 Like

Hey I did this and it totally fixed my shadow problem by completely removing the hair. My characters now bald any idea why?

Try use “shadow map” rather than “virtual shadow map” in project settings, it should work.

1 Like

Hi everyone,
Thank you everyone for your suggestion.
I just post an update of tests I have performed that might be useful to someone:

I had encountered the same problem (unreal 5.1.1).
I have tried some of the methods proposed here and nothing works for me (neither “deep shadows” for the lightsources, neither using virtual shadow maps over shadow maps).

At the end, I decided just to remove the “cast shadow” option from each groom elements in the characters. This approach does not solve the issue and it produce a not accurate results, but it is good enough for my application.

First picture is with cast shadows on.

Second picture with cast shadow off.

Of course such approach produces some artifacts, particularly visible with long hair charaters, both for self-showdes and projected shadows (like the missing hair shadow here).

I am still waiting fro a proper solution that would be not much computational heavy.

Just a quick update.
I actually get a good results by copying the Engine-Rendering options from the Project Settings of the Methauman sample project.
It seems like it fixed the problem for me.

I ran into the same issue. This is what I did to solve it.

Increase Bounce and sample rate in the global illumination.

Increase Sample per pixel in the light source lighting component.

Enabled deep shadows in the light source component.

Hope this helps

so i assume this is d ultimate solution m i right?

For me biggest change was the samples per pixel on light sources - really helped with in-groom shadow issues too:

1 (default):

2:

4:

Not sure how badly this will impact performance yet, but useful for cinematic purposes.