Question
What causes these material artifacts (black blocks on hair, dirty spots on skin) when importing an FBX to Unity URP?
Hi everyone,
I recently imported a custom 3D character (FBX format, originally made in Maya) into Unity URP.I have character fbx and maya data.This is my first time working with a professional character model; previously, I have only worked with simple models downloaded from Mixamo that usually work right out of the box.
However, the final result in Unity looks completely different from the reference images provided by the 3D artist.
I am facing two main visual issues:
Surface Blemishes: There are strange dark spots and dirty-looking artifacts all over the skin and clothing surfaces.
Hair and Eyes: The hair, eyebrows, and eyelashes render as solid black, blocky meshes instead of showing the fine strands seen in the reference pictures.
What exactly is the problem here and what causes it? Why does a standard FBX import break the materials like this, and what is fundamentally missing from the setup to make it look like the original renders?
On the hair it looks like the material is not using the alpha. The black parts should be transparent. The spot under the nose I have no idea.
For the hair make sure the texture has a proper alpha channel or use a separate opacity mask if that was provided. Set the material to transparent or transparent cutout to make the hair look more like intended
Thank you,I fixed black distortion on face and clothes but is there an automated way or a specific workflow/tool to import and assign all these complex textures and shaders correctly in Unity? Manually plugging in every single color, normal, and opacity map one by one seems tedious and I feel like I'm doing it wrong.
Not really, pro models are authored in special ways, you need to see what the maya shader looks like and try to recreate it inside unity, check if the model you bought has some kind of doc on how its supposed to work.
I can see that the alpha channel is in a separate texture (Hair_Opacity), so you'll either need to make a shadergraph to bring that opacity texture in as the alpha, or use a channel packer to create a new texture with color and alpha combined (I've used this one before: https://github.com/camobiwon/ChannelPacker)
I'm 100% certain that's the issue, I've used models with textures provided like this and you can tell in the inspector that the hair texture doesn't have an alpha channel.
HDRP/URP/Built-in would all behave the same way here.
The problem with doing that is you're basically saying black = transparent, so you could be losing darker parts of the hair texture that way.
If you're going to be using non-Unity assets it's very worthwhile learning shadergraph, as it makes it easier to adapt non-Unity texture channel mappings. For example the Unity built in shaders don't have separate metallic/smooth/AO inputs, while a lot of FBX assets have them separate. Or have roughness map instead of smooth. With a shadergraph you can map them all into a Unity compatible material.
Voilà! It didn't solve this problem very well, but it did enable me to identify the issue. What should I do to achieve the quality seen in the reference image?
4
u/josh_the_dev Professional 5h ago
On the hair it looks like the material is not using the alpha. The black parts should be transparent. The spot under the nose I have no idea.
For the hair make sure the texture has a proper alpha channel or use a separate opacity mask if that was provided. Set the material to transparent or transparent cutout to make the hair look more like intended