2
$\begingroup$

Complete noobie to Blender here. I was wondering if there was a way to add the bumps from a normal map into a model so I can 3D print it with all the indents and such. I assume it's something to do with the Displacement modifier but I have absolutely no idea how to use it or any nodes or such. If you need more info on what the normal maps look like and such I'll be happy to send them.

$\endgroup$
2
  • 2
    $\begingroup$ so you need to first convert normal map to height map, it doesn't seem to be possible within Blender, it looks like some programs can do it? Here a guy says that he has created an app that is supposed to do it, I can't open it though: reddit.com/r/gamedev/comments/fffskm/… $\endgroup$
    – moonboots
    Jan 27, 2021 at 16:16
  • 1
    $\begingroup$ see youtube.com/watch?v=AOdpGgqIub8 $\endgroup$
    – Gorgious
    Jan 27, 2021 at 18:46

1 Answer 1

3
$\begingroup$

Moonboots was kind enough to provide one link in the comments, which I'll check out further. Scroll down that Reddit page to find usage instructions; it works for me.

Another option here is njob ( http://charles.hollemeersch.net/njob/ ).

Njob just outputs 8bpc height maps. Neither NormalToHeight nor Njob can properly handle texture tiling.

Note that conversion of normal maps to displacement maps is inexact. There exists some data necessary for displacement that isn't present in a normal map. Neither of those utilities take your UV tangents into account, and you'll find that displacement is incorrect as your UV rotates. You will need to adjust displacement parameters to eye.

It's also possible for a normal map to encode for impossible angles, that can't be represented by geometry.

However, I know that it is possible to get reasonable results using Njob. I sometimes convert from normal to bump in order to not have to worry about UV tangents during material creation, or to smooth out a rendered displacement-- smooth shaded normals interpolate differently than position, so rendering as normals and converting to height can create a smoother displacement map than just rendering height/position.

Once you've converted a normal map image into a bump map image, you can use that image for displacement via a displacement modifier:

enter image description here

Notice a few things. First, only actual vertices are going to get displaced, so I use a subdivision modifier (on "simple" here, but you might try C-C, it depends on use) to generate a lot more verts.

Then I create a displacement modifier after the subdivision. The precise settings depend on your needs. You need a way to map from 3D vertex coordinates to 2D image coordinates, and here I'm using a UV map to do that, but there are other options. In order to displace from a particular image, it's necessary to use the properties/textures tab to load your image into Blender (this is one of the few remaining use cases for that tab.) Strength and midlevel should be tuned to eye; there is no right answer for these, not when using an image that has been created from a normal map.

If desired, these modifiers can be applied for further editing or sculpting.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .