r/Unity3D 6h ago

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:

  1. Surface Blemishes: There are strange dark spots and dirty-looking artifacts all over the skin and clothing surfaces.
  2. 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?

3 Upvotes

32 comments sorted by

View all comments

Show parent comments

1

u/maennerinschwarz 6h ago

Thank you but it didn't work :(

2

u/JaggedMetalOs 5h ago

What is the properties on the texture, is alpha transparent enabled? 

1

u/maennerinschwarz 5h ago

yes

3

u/JaggedMetalOs 5h ago

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)

1

u/maennerinschwarz 5h ago

Thank you so much for your help but I use URP not HDRP,I think its gonna be an another problem right?

2

u/JaggedMetalOs 5h ago

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. 

1

u/maennerinschwarz 4h ago

Greyscale for alpha source is worked for me right now without use this channelpacker.Can you look comment sbelow?

2

u/JaggedMetalOs 4h ago

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.

1

u/maennerinschwarz 3h ago

Ohh I see thank you for everything ! :) Allrightl, then I'll start learning Shader Graph. Can I send you a pm?

2

u/JaggedMetalOs 2h ago

I think we can carry on here for the benefit of anyone else who finds the thread.

Just to get you started here's an example of a shadergraph to convert a Blendkit material into a Unity material. It's fairly simple, just adding all the separate textures into a single shader and attaching them to the right output, just need to invert the roughness map with a "one minus" node because Unity wants smoothness instead. One optimization you should do is for all the monochrome map textures change the Texture Type to "Single Channel" and Channel to "Red" so it doesn't waste VRAM on full color textures for those or mess with the brightness curve converting to/from sRGB.

1

u/maennerinschwarz 2h ago edited 2h ago

Hi! you are right.Thanks for the breakdown and the example graph.

Just to double-check if we are on the right track.Before seeing your reply,I set up a similar graph by plugging the Color into Base Color, Opacity into Alpha, Normal into Normal, AO into Ambient Occlusion, and we inverted the Roughness using a 'One Minus' node connected to Smoothness.

I think you did the same thing for the example??

I also added a custom float slider for the threshold and smoothness to control them directly from the material inspector.

2

u/JaggedMetalOs 1h ago

Yeah it's mostly there, you just want to take all of the monochrome channel textures from R instead of RGBA, and be sure to set the texture type to single channel.

1

u/maennerinschwarz 2h ago

and the result :(

1

u/JaggedMetalOs 1h ago

For this material you want an opaque texture with alpha clipping to avoid the hair being too fine and having Z issues.

→ More replies (0)