User Tools

Site Tools


infinimap2018:infinimap_normal_mapper

infiniMap Normal Mapper Node

The Normal Mapper Node has been designed for image maps that contain normals.

Normal maps basically store a direction vector. That's three components, X,Y and Z, each ranging from -1 to 1 for a floating point image.

They are used to bend the surface normal when shading, resulting in a relief like change of the shading that is very similar to the effects of a bump map 1).

Type of Normal Map

There are two types of normal maps supported by this node. This setting changes the way that the normals stored in the image are applied to the current surface when rendering.

Object Space

Object space normals are normals stored in relation to the object. These are rarely used. The advantage of an object space normal map is the fact that it does not require a projection. The downside is that it is a lot harder to evaluate on deformed meshes. Basically, the XYZ components of the normal map relate to the XYZ coordinates of the mesh itself.

Tangent Space

Tangent space normals are the most common type of normal maps. These store the normal in relation to the current spot that is being shaded. Tangent space normals require a mapping projection (commonly using a UV map) but handle deformations of the mesh well and are easy to evaluate. In this case the XYZ components in the normal map are in relation to a (temporary) XYZ coordinate system that is valid for the currently shaded spot only. Z is equivalent to the original surface normal, X and Y are orthogonal to it. The other two components are derived from the mapping projection.

Normal X, Normal Y, Normal Z

These controls allow you to assign any of the channels present in the current infiniMap image to be used as X, Y or Z. You can also selectively invert the directions on a per channel basis.

Normal Origin, Normal Scale

Since most image formats don't handle negative numbers, those values are stored in a range from 0 to 1 (or 0 to 255 in 8-bit pixel terms).

In this case 0.5 (or 128) corresponds to 0, anything lower is negative and anything above positive. Some applications also store normal maps using a file format that supports negative numbers (such as OpenEXR), in this case a -1 in the normal map is a -1 in the file.

To cater for those, we've added the Normal Origin and Normal Scale options to bring what is stored in the image into the range from -1.0 to 1.0

For a normal map stored in the range 0..1, the default settings bring the values into the -1..1 range.

Basically: value = (pixel – Normal Origin) * Normal Scale

For a proper float image with negative values, the settings would be 0 for the Normal Origin and 1 for the Normal Scale.

1)
A bump map is more or less a simplified variant of a normal map. When rendering, normals are derived from the bump map.
infinimap2018/infinimap_normal_mapper.txt · Last modified: 2017/12/27 10:41 by lightwolf