Home Unreal Engine

Best Practice Texture Settings for Normal Maps in UE4

synergy11
polycounter lvl 6
Offline / Send Message
synergy11 polycounter lvl 6
Good afternoon.

I am importing normal maps I baked to a plane to use as tileable textures.
I was wondering what the best settings were for the Texture properties and the Shader Properties for normal maps?

So far:

I've selected World Normal Map, TCNormal map. No MIPS.

In the shader I click Use Tangent Normal Map.

Also to keep my texture full resolution at any distance, All I need to do is Click to not use MIPs. Is this correct? For some reason my texture still looks like balls unless I'm right up close to it in UE4. Is this because I'm not using Production Lighting settings? I'm currently using Preview lighting when I build the lights.

Is there any other best practice I should be aware of?

Thanks Friends!

Replies

  • paradoxical-pixel
    Options
    Offline / Send Message
    paradoxical-pixel polycounter lvl 10
    If I recall correctly, 'cinematic' will retain the full image resolution.

    I usually pack extra data into the blue channel of my normal maps so avoid using TCNormal compression. You can easily reconstruct the Z coordinates using the DeriveZ material editor node.

    I'm not sure if UE4 interprets 0 - 255 normal values in 0 - 1 space or -1 - 1 space. If the former, you need to subtract 0.5 from the normal map and then multiply it by 2. This may or may not be the reason your normal maps appear subpar.
  • synergy11
    Options
    Offline / Send Message
    synergy11 polycounter lvl 6
    Thanks for the Info.

    I'll try it out.

    Does anyone know if I should be using "Use Tangent Normal Map" in the shader?

    To my eyes I think it looks better with it unchecked. But I just want to make sure.

    Thanks.
  • paradoxical-pixel
    Options
    Offline / Send Message
    paradoxical-pixel polycounter lvl 10
    The answer to your question depends upon the type of normal map you have created.

    Let me explain.

    A normal map essentially is a vector field stored in bitmap format. A Vector has a direction and magnitude that are described by its coordinates. In mathematics, the coordinate system occupied by a vector can be of many different spatial domains.

    We use two spatial domains for normal maps: object-space and tangent-space.

    In object-space, the axes are congruent with the rendering engine's world axes (i.e. regular Euclidean-space). Therefore, one cannot rotate an asset that uses an object-space normal map without having to do a load of matrix transformations (which is wasteful if done in real-time). Tangent-space normal mapping was invented to remedy this.

    With a tangent-space normal map, the vector axes are derived from each triangle's surface normal and texture coordinates. This allows the vector field to occupy a spatial domain that bares no relationship to the underlying geometry's orientation in world-space.

    Assuming my explanation makes sense, it should be clear that object-space and tangent-space are fundamentally very different and should never be conflated.

    The two coordinate systems appear very distinct from one another with their overall colour usage being the give-away. If you post your normal map on here, I will happily tell you whether it is a tangent-space or object-space normal map.
  • synergy11
    Options
    Offline / Send Message
    synergy11 polycounter lvl 6
    Thanks for the reply. I made a tangent space normal map. The reason I ask Is I saw someone else in a video tutorial using a tangent space normal map with the setting "Use Tangent Normal Map" unchecked.

    He must not have realized he was conflating the two spatial domains.
Sign In or Register to comment.