This node has two functions.

The first is calculating a new world space normal map based on inputted world space normals and a tangent space normal map.
The second calculates a tangent space normal map based on the differences between two world space normal maps.

These are useful for functions that would otherwise require maps baked from high poly models that don't exist. For example, I'd use this for creating a layer of dust on top of a material that has fine, procedurally generated details. Rather than modelling those details by hand on a high-poly model, I'd use the tangent normals of the details to produce a detailed world space map.

Calculating tangent space normals from world space maps is something I use much less often, but it was a similar function to build, so I included it as an option. The one time I did use this was when I wanted my rounded object to have semi-random faceted faces. I was able to use a faceting function on the world space normals and plug that in with the original map to get the tangent space normal map that would give the flat surfaces I needed. I'm sure there are other uses.

Uploaded: over 3 years ago
Updated: over 3 years ago
Version: 1
File Name:
Size: 115 KB


about 3 years ago

Can this work with Substance Painter ? :)

about 3 years ago

Man if this is what I'm thinking, it's INSANELY good. Will test it and write back...

about 3 years ago

How use it? i don't understand.. :$

about 3 years ago

Those of you reading this right now, you probably have absolutely no idea what jewel you've just stumbled across! The substance at hand allows you to bake a clear near-perfect normal map from a model that has it's own normal map! If you still don't know what is it all about, just go read my forum post:

And now, here are the steps you need to do in order to get a fine normal map for your low-poly model:
1. Download this.
2. Open it with Substance Designer.
3. Export it as .sbsar.
4. Open Substance Painter.
5. Load the mid-poly model.
6. Import and assign the normal map for your mid-poly model.
7. Bake world space normals (no need to specify high poly model in the options).
8. Export world space normals.
9. Go to 3ds Max and Render to Texture your world space normals onto your low poly model as a simple diffuse map.
10. Get the new world space normals and go to Substance Painter.
11. Load your low-poly model as the base mesh.
12. Bake normal, world space normal and position maps for your low-poly model, specifying the mid-poly model as a target to bake from.
13. Load the .sbsar file you created in (3) as a 'basematerial' and add it to the shelf or just current session.
14. Locate the imported base material in the shelf and drag it onto the 'Layers' tab.
15. Int the 'Input Map' rollout of the Properties tab the material should already have 3 maps set: world space normals, Altered world space normals and Positions. However, the two world space normals have the same texture applied. Import your re-rendered world space normal map from step (9) and set it as 'Altered world space normals'. Click 'Calculate' button to set it to 'On'.

The low-poly model in the viewport should immediately show fine details. Now you can export the final normal map for the low poly model.