Home Adobe Substance

A few questions about normal maps

polycounter lvl 12
Offline / Send Message
Cybergooch polycounter lvl 12

I asked these questions five days ago on the "official" Substance forum and receive 0 replies. I'll try here.

----
I've gone through some tutorials and done some experimenting, but had a couple of questions about creation and usage of height and normal maps.

My (limited) understanding is that when you are painting "normals" you are actually painting grayscale height maps, and that information is being converted on the fly to normal maps. Is that correct?

Is it standard workflow to paint into the heightmap channel, and use normal stamps in the normal channel? And alphas in the heightmap channel?

When I output the final textures, in most renderers you plug the rgb normal map into the tangent normal for your material. You could use the height map for displacement, yes? Is there any benefit to trying to combine the normal and the heightmap for the bump channel? In Redshift for instance, when you are using displacement it also applies bump map information automatically for finer details. So could the output heightmap be used for both displacement and in the bump channel?

Any pointers appreciated.

Replies

  • rollin
    Offline / Send Message
    rollin polycounter
    This is bit specific to substance painter implementation but in general a monochrome / greyscale map can only store one information.. Thus we call it height map, alpha map, roughness map, whatever. You can simply paint it with black and white..

    A normalmap stores three values as it stores a three dimensional vector. Thus you can't simply paint it.

    Now here is the trick. To be able to store information in the normalmap without having to paint a normalmap you can - as you already said - paint a highmap and convert it through some program logic into a normal map.

    If you WANT to do this is up to you. If you want to use a displacement map instead of a normal map then screw the normal map. If you only have a normalmap then transport all heightmap information to your normal map. And if you want to use both then author both maps. 

    You have to be aware of how your data ends up in the map. But this depends on the software. So you could stamp a normalmap stamp on a heightmap if the software knows what to do. Important is only what's coming out of it:
    Is it a one dimensional information (like height) or maybe a three dimensional information (like a 3d-vector) or something else.. who knows..

    Hope this helps and wasn't not too confusing :)
  • Cybergooch
    Offline / Send Message
    Cybergooch polycounter lvl 12
    Thanks for the reply! That makes sense. I'm wondering if it makes sense in a node based rendering system to try to combine the tangent rgb normal map with a grayscale heightmap as bump. Do either of them complement each other? Or are you better off with just going with one or the other?

    Or maybe another way to say that is if you have the capability to output a normal map, is there any reason to also generate a heightmap, if you're not going to use it for displacement?
  • Mostwanted
    Offline / Send Message
    Mostwanted polycounter lvl 7
    As far as i know.

    "My (limited) understanding is that when you are painting "normals" you are actually painting grayscale height maps, and that information is being converted on the fly to normal maps. Is that correct?"
    -Yes specifically in substance painter we are painting in height channel because its easy to work in grayscale than in rgb and then covert it into normal maps for games.

    "Is it standard workflow to paint into the heightmap channel, and use normal stamps in the normal channel? And alphas in the heightmap channel?"
    -its standard to paint in height map if you are using subatance painter. using stamps in the normal channel is bit tricky so i would avoid it. It is always better to add details in height map and convert and add detail in the end to final normal map. because of flip Y+/Y- channel in game engines its better to use this workflow and you dont have to worry about flipping.

    "When I output the final textures, in most renderers you plug the rgb normal map into the tangent normal for your material. You could use the height map for displacement, yes? Is there any benefit to trying to combine the normal and the heightmap for the bump channel? In Redshift for instance, when you are using displacement it also applies bump map information automatically for finer details. So could the output heightmap be used for both displacement and in the bump channel?"

    -  i dont know why you would want to use normal maps in render engines.. normal maps are best used for game engines, even though you can use them in render engines they are not efficient as they are faking the light. In render engine its always better to use height and displacement maps which are the same thing. Usually displacement maps are slotted in displacment or height nodes and any additional height information which is not able to create using subdivision can be put into bump node automatically using auto bump from disp. If you created any additional height information in substance you can always add them to displacement using merge/add node.









  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter

    Normal maps don't give you height information so can't be used to displace a surface they're applied to, they simply tell the renderer that pixels are facing in a different direction to the underlying mesh normals.
     I think this is what Mostwanted is alluding to in the last point. 
     If you're not actually displacing the surface (ie bumpmapping rather than displacing) then using a normal map is no different to using a bump map (which gets converted to normal information at render time) - except that a normal map holds more information and can thus provide you with more control over surface direction

    If you combine displacement with normal mapping you get more control than either used independently 
Sign In or Register to comment.