Lightmaps not visible with dark base colors or metal surfaces

Hi, we have this issue.

We use MeshStandardMaterial in our project as main shader type.
I faced this situation where lightmaps are nicely shown in materials that have a light color and no metalness.
When I turn material darker, a light goes dull and it takes too much color from the actual base color.
If I introduce metalness, lightmap disappears even if surface roughness is close to one.

Should we use different shader types for dark materials? I also tried to boost up the lightmap intensity but it just messes up the overall look.

So nobody familiar with this issue?

It’s not an issue. That’s the expected behavior of MeshStandardMaterial and all physically-based materials. You can learn how 100% metalness works in these two articles:


2 Likes

If I introduce metalness, lightmap disappears even if surface roughness is close to one.

I think the problem you’re seeing is that a lightmap represents baked ambient light, and ambient lights do not affect metallic surfaces. The same applies to THREE.AmbientLight. That’s based on the physically rendering principles @marquizzo mentions above. In general, metallic surfaces will not be lit realistically unless an environment map is used.

^Not 100% sure I’m using the term “ambient” correctly here, but see discussion in Should lightMap/aoMap occlude lights? · Issue #7377 · mrdoob/three.js · GitHub.

1 Like

Did you figure out the solution for this?
i encounter the same issue when metalness = 1, the lightmap just doesn’t work.