Ran into a strange issue when using a normal map with a objects using mirrored UVs the other day:
(See the visible triangles around the wheel house of the cart)
On a hunch I tried reworking the model without mirrored UVs and the issue completely disappeared:
The problem with this being that I’m either using 2x the texture size or halving the quality of the map which isn’t great
Anyone got mirrored UV normal maps working properly, if so, how?
(3D software: Blender
Model format: glTF
Normal Map: Tangent space)
I’ve tried disabling compression on both the texture and the model but it doesn’t affect the issue at all.
Mirrored UVs often cause normal map issues because the tangent space can flip across the mirrored faces, leading to lighting artifacts like you’re seeing on the cart. The cleanest fix is usually to avoid mirroring entirely, as you did, but if that’s not an option, you can try generating the normal map with “mirrored UV support” in Blender or baking per-island tangents. Another approach is using a bitangent/normal map correction in your shader to handle mirrored UVs properly, though that can get more technical.
Playcanvas does not use tangent vertex data, and generates those in fragment shader, so baking those in tools wil llikely not help.
Yeah, that’s a classic mirrored-UV problem. When UVs are flipped, the tangent space flips too, and normal maps don’t always cope well with that, which is why you get those odd lighting seams. The most reliable fix is still what you already did: don’t mirror if you can avoid it. If you really need mirroring, baking the normals with mirrored-UV support in Blender or making sure each UV island has its own tangents can reduce issues. Shader-based corrections can work as well, but they’re more advanced and often engine-specific, so they’re usually a last resort.