Character Skin, Hair, Ray Tracing, and a Completely Different Skin Problem
A lot of my recent character work on Alma has been less about *making* things and more about *fixing* things that don’t render correctly.
Skin connection issues
The first problem I had at the start of the project was the way the Metahumans pipeline worked in the earliest versions of the plugins.
Metahumans is Epic Games’ character creation and, more importantly for me, animation tool. At the start of pre-production for Alma, the workflow was significantly different. I would create a customized mesh for the character’s face (a custom body wasn’t possible yet), import that into Unreal Engine, use it as a starting point for a full character with Metahumans, then have to open the Metahuman WEBSITE, log in, find my new character and tweak. Then you’d have to download the character in a special way in order to bring it into Autodesk Maya for further customization.
It was a pain, but it was what I had to do if I wanted to be able to use the awesome facial animation rig!
The one major problem for which I never found a solution was that there was always going to be a visual “seam” between the head and the body. If it was all done directly in Unreal Engine, all was fine. But when I brought back my customized character, there was an issue with the way the normals were set up in the downloaded version vs the in-engine version.

In the image above, the left side showed NO seam, which was how she looked before I customized her design. On the right, you can see the issue with the normals. I tried getting answers on the Epic Games forums, but essentially was finally told that Yeah, this is an issue that is only resolved by just restarting.
Hair Design “issues”
The next challenge had to do with hair. This entire pipeline was completely new to me and I’m still finding issues.
Her hair starts in Maya/XGen, where I’m building and grooming the strands, then bringing that groom into Unreal for the actual film work.

I found a series of tutorials that allowed me to teach myself. Stylizing is not my strength. But it starts with adding a few hairs in place (see above), then letting xGen essentially “fill in” more hairs around those guides.
The FIRST version of Alma’s hair, on her first “final” design, was ok, but ultimately I decided the extreme messyness was probably going to be distracting. I still kinda like it, and it’s probably the most realistic, but I didn’t want it to be “funny.”

So when Alma had a full redesign, I redid her hair as well.

Hair Rendering issues
The biggest headache for hair lately has been ray tracing. The groom itself renders fine, but when Alma is seen through ray-traced translucent glass, her hair doesn’t behave correctly with depth of field. You can see in the below image that her hair always shows up over top of translucent objects.

The character and the glass can go out of focus, while the groom stays strangely sharp over the top of everything. I went through the hair ray-tracing geometry settings, translucency passes, DOF settings, and a bunch of other possibilities without finding a particularly satisfying fix. Hair cards may eventually be part of the answer, but I did eventually discover a cvar in Unreal Engine (basically a single line of code, typed in manually) that allows for the glass to be in front, OR the hair to be in front.

But it’s either/or. If I have the hair strands after trans set to render hair behind glass, then as you can see in the below image – it renders behind the glass! (on the left side of her head you can see her hair is behind the glass window)

Hair collisions
One reason I decided to use hair grooms in Unreal Engine was because having them react dynamically to movement is relatively easy to set up. The thing that’s less easy is making sure all the collisions work correctly.
The default “physics asset” for Metahuman characters mostly just has a sphere for a head. That means it’s imprecise. I know there’s a way to set up better collision but it’s not something I’ve figured out QUITE yet how to do without spending a couple days on it.
In the meantime I’ve been able to accomplish it with just adjusting the settings on the hair in a shot-by-shot basis.
Here’s a before and after with the hair going through her head.

Hair going through head
Better collisions
Skin issues Anew!
At roughly the same time, I was getting these bizarre purple artifacts on Alma’s skin whenever grass crossed in front of her, so for a while I assumed I had some giant foliage/transparency/ray-tracing problem.

Turns out it had nothing to do with the grass, and everything to do with the default metahuman skin shader .
After testing increasingly obscure Unreal settings, I finally narrowed that one cvar down to the Subsurface Profile skin shader. `r.SSS.Scale 0` made the artifacts disappear completely, which proved where the problem was. Unfortunately that also turns off the effect I actually want, where light scatters through thinner areas of skin.
The eventual workaround was to stop using Subsurface Profile and move the skin to Unreal’s regular Subsurface shading model instead. I lose some of the more specialized skin behavior of the Profile shader, but I can still get the translucency/backlighting I care about without grass causing Alma to erupt in purple digital measles.
Unfortunately (because as you can probably tell, this blog is about “Yes but, No and”), that means I cannot use the Subsurface Profile shader! The standard Subsurface scattering (SSS) is OKAY, but things like this arm:

can appear to glow, even though there’s a bone inside her skin. So I have to turn down SSS and really be specific shot-to-shot.
Lesson?
I dunno. I guess, the tools are awesome! But when you start really digging into them , you start to realize they are FAR from perfect.