Standardize MikkTSpace


One of the biggest problems working with PlayCanvas as an artist is baking correct normal maps. The problem is rooted in how PlayCanvas calculates tangents and binormals. While most of the industry has moved to using MikkTSpace, PlayCanvas has not. This topic was brought up a few weeks ago in a twitter thread about baked normal maps, and it gained a lot of attention.

What does this mean for me as an artist? Well, currently I cannot bake normal maps that look correct in PlayCanvas. To work around this problem, we have to use lots of hard vertex normals (and because of it lots of UV seams), which shouldn’t be necessary.

Here’s the kind of problems we’re seeing. Here’s the geometry in 3ds Max:

Here’s the baked normal in Substance Painter:

And here’s PlayCanvas. The issue I’m talking about are the sharp edges along the surface.

Suggestion: Implement MikkTSpace as the standard solution for calculating tangents. The current solution could be kept as legacy for backwards compatibility. This setting could either be project wide or set per material.

What are your thoughts?

Hi @Sidelity, there was an issue raised about normals and some work done to improve them in the engine repo. You can try adding your findings there as well:

Hi. It looks like that specific issue has little in common with what this post is about. I wouldn’t want to clutter it unnecessarily. Although, if GitHub issues get more attention than forum posts, I could have one of our devs write a separate issue there (I’m not that well versed in the GitHub world :wink:).

I think you will find the GitHub repo being easier to start a discussion like this, but we can try invoking some people here:

@will @Mr_F @slimbuck