Height Map - Substance vs Blender


I’ll put my question first - what node setup can clamp down on certain details within a height map? For instance, a height map that contains large and small spots. I would like to eliminate the small spots at X size.

I created a map set in Substance Painter, and plugged it into Blender. I made the discovery that the output height map contains subtle information that is now apparent when I apply it in Blender. This is undesired information. I only want what I observed in Substance. So that means I’ll have to do some nodework in Blender to clamp down on that unwanted height info. I’m just unsure how to do that.

1st image - side by side comparison between SP and Blender. Observe the dots. The texture I used for the height channel (in SP) was indeed a dot pattern, adjusted to only highlight the bigger dents. But in Blender, you can see the obvious smaller dot pattern.

2nd image - I brought the height map into Photoshop and increased the contrast to see what was going on. It wasn’t observable in its default output, but only when I zoomed in and played with the levels it became apparent.

SO - I’ll either need to use a node solution. Or, in SP, paint those channels manually with an alpha brush.

EDIT: I found this “restrict color selection/posterization” method. So it feels like I’m getting close, but losing my values in the larger spots I want to keep.

I’m not sure, but the node setup seems unnecessarily convoluted. Have you tried any of the addons that help move stuff to and from Substance Painter with Blender? Nodeset Pro makes bring texture sets from SP in basically a one click affair and creates all the required nodes to allow tweaking. Substance Painter Livelink (Hedgehog Connect) is also very good and allows for live updating of materials between the two programs.

Any time I’ve had poor results in Blender - Looking very different to SP it’s because I was only using 8-bit maps for things like height. It looks like you’ve got that going on as well (the obvious steps in the larger dents in your bottom image).

The simplest solution would be to simply remove the smaller features in Substance Painter. If you don’t want them, why are they there? Have you tried just using the normal map from SP instead of generating a height map?

1 Like

I think it might be down to the bit depth of your height image. I dug out an old model and texture where I remembered having an issue myself. The material for these was created in SP and setup in Blender using NodeSet Pro before tweaking. The materials here are identical with one difference. The one on the left uses a 16 bit height map combined with normal map while the original on the right uses an 8 bit height map combined with normal. If you try 16 bit height you might find all those small details that you don’t want just disappear.

Looking at the effect of an 8 bit height map in these potatoes it strikes me that it might be useful where you want to suggest layers of skin.


@JohnMalcolm1970 - Awesome, thanks, I’ll check out those add-ons!
The node setup in the 3rd screenshot I was experimenting with wasn’t really doing anything so I’ve abandoned that.

Here’s the best way I can explain. In SP, I use a fill layer and target only the height channel with the intention of using the procedural noise/dirt pattern, then alter it to get the bumps I need. This is achieved using the balance and contrast slider. So it spaces out the large bumps, and flattens out everything in between. Or at least from what I can observe in Substance. I guess I assumed the resulting grayscale map would be solid 50% gray in the “smooth areas”. But that’s not the case. The extra detail is so subtle it just doesn’t render in SP, therefore, I thought that’s what I would get in Blender. I had to really adjust the levels in Photoshop to see the excess noise.

There surely has to be others to have experienced this, I would think?

Alternatively I can use an alpha brush to paint on that detail. But it’s just a slower process, and I can’t adjust on the fly the overall pattern like I can with a procedural fill.

Ok, that will hopefully work in my situation. Thanks for the tips!

I’ll let you know how it works out.

1 Like