Environment reflections messy. Normal issue?


I’m having some issues with an asset that gives me a terrible appearance compared to it’s substance painter original. This is what I see in substance painter:

Then I import the FBX and create a material with GMAO textures as follows


and it looks like this in the editor:

However, then when I add the helicopter scene cubemap on the enviroment slot and these nasty fragmented reflection spikes appear:

Any clues on how I can remedy this?

Best regards

  • Björn

Hi Tong, would that be a setting on the normal map? or environment map you’re referring to?

I should mention I have other objects in the scene and while they do look worse than in substance painter, they don’t quite get the same terrible treatment as the leftmost object:


Sorry, I’m really not following.

Colorspace on what? Please elaborate. the normal map PNG? Howcome the other objects are fine? or close to fine at least.

Sure, have a look here: https://playcanvas.com/project/541106/settings

I tried to remove everything except the cubemap. You can see the spike very clearly there. Nothing to do with the normal map then.
It has to be related to the vertex normals. Double check your exporting settings.
Also, if you remove everything and keep just the diffuse, you can see the same issues, due to wrong light calculation on the vertices.

I don’t know your modeling environment but in 3dsMax sometime normals went wrong. I had to apply a Reset XForm modifier to fix them.

Interesting. This mesh is created through Simplygon, and I checked the output in Cinema. It does have vertex normals, and a phong tag with break on 40°. This is what it looks like fiddling with removing the vertex normals and changing the phong break angle.

What’s the goal here? the ideal situation?

mmh… Simplygon… automated polygon reduction is not the best for geometrical shapes.
I would open it in Max, select the bottom cone, and assign a different smoothing group. Then I’d do the same for the cylinder on top. In this way, the hard edges will not share the normals with different surfaces.
But mine is just a supposition. There could be other reasons. It could depend on the triangulation, or on the geometry itself.
For my last game, my designer was building everything from scratch, no polygon reduction. You end up spending more time fixing it than modeling it.

I see. I don’t have max and I’m not sure what you mean by smoothing groups. But for our purposes, automatic polygon reduction is the only thing that will ever make sense.

Still can’t get my head around why things looks fine in both Cinema and Substance painter but not in Playcanvas though.

In Max a smoothing group is just a tool that allows you to specify what vertices should share the same normal, making the shape to look round (as on a sphere). If you want to get a hard edge (as for boxes) each face needs independent normals from other faces, or the 90 degrees angle will still look badly smoothed.
So I don’t know what tools you can use, but that is the concept behind.

In the video you posted, it doesn’t look good to me in any case, even when you disable the angle limit. There is still a black spike where is not supposed to be.
Also, I don’t know what are those settings in the video. Never seen them in Max, Unity or Playcanvas. Probably are something similar to the smoothing group of max.

Thanks for taking the time!

I invited Simplygon support to this thread, and perhaps Playcanvas staff has some clues on to what is going on aswell? As I said, the mesh looks fine with it’s vertex normals both in Cinema and Substance painter. Does that mean this is on playcanvas? any clues @max?

It’s definitely a smoothing issue messing up the normal maps bake, Are you making the bake out of Cinema or Simplygon? I don’t use either, only Max and Maya.

For Cinema try this

Guessing if you fix your smoothing issues and then re-bake the normals and it will look better in Play Canvas.

Hmm, I’m not convinced. I do the bake of the normals in Simplygon, then I use Substance painter to paint. Here is a video from Unity trying the two normal textures - first from SImplygon and second from Painter. Seems the simplygon version look great but the painter normals do not. I have to go back to painter to see what I export. Perhaps something is odd there.

They completely different in photoshop. Could this be a difference between OpenGL and DirectX perhaps?

Confirmed, Substance painter was set to export DirectX normals. I switched it to OpenGL and everything looks fine again. Nothing was wrong with the smoothing or vertex normals on the mesh.


Good job getting to the root of the problem and for sharing as well!