# Normal mapping

Normal mapping  Normal mapping used to re-detail simplified meshes.

In 3D computer graphics, normal mapping, or "Dot3 bump mapping", is a technique used for faking the lighting of bumps and dents. It is used to add details without using more polygons. A common use of this technique is to greatly enhance the appearance and details of a low polygon model by generating a normal map from a high polygon model. Normal maps are frequently stored as RGB images where the RGB components corresponds to the X, Y, and Z coordinates, respectively, of the surface normal.

## History

The idea of taking geometric details from a high polygon model was introduced in "Fitting Smooth Surfaces to Dense Polygon Meshes" by Krishnamurthy and Levoy, Proc. SIGGRAPH 1996, where this approach was used for creating displacement maps over nurbs. In 1998, two papers were presented with key ideas for transferring details with normal maps from high to low polygon meshes: "Appearance Preserving Simplification", by Cohen et al. SIGGRAPH 1998, and "A general method for preserving attribute values on simplified meshes" by Cignoni et al. IEEE Visualization '98. The former introduced the idea of storing surface normals directly in a texture, rather than displacements, though it required the low-detail model to be generated by a particular constrained simplification algorithm. The latter presented a simpler approach that decouples the high and low polygonal mesh and allows the recreation of any attributes of the high-detail model (color, texture coordinates, displacements, etc.) in a way that is not dependent on how the low-detail model was created. The combination of storing normals in a texture, with the more general creation process is still used by most currently available tools.

## How it works

To calculate the Lambertian (diffuse) lighting of a surface, the unit vector from the shading point to the light source is dotted with the unit vector normal to that surface, and the result is the intensity of the light on that surface. Imagine a polygonal model of a sphere - you can only approximate the shape of the surface. By using a 3-channel bitmap textured across the model, more detailed normal vector information can be encoded. Each channel in the bitmap corresponds to a spatial dimension (X, Y and Z). These spatial dimensions are relative to a constant coordinate system for object-space normal maps, or to a smoothly varying coordinate system (based on the derivatives of position with respect to texture coordinates) in the case of tangent-space normal maps. This adds much more detail to the surface of a model, especially in conjunction with advanced lighting techniques.

Since a normal will be used in the dot product calculation for the diffuse lighting computation, we can see that the {0, 0, –1} would be remapped to the {128, 128, 255} values, giving that kind of sky blue color seen in normal maps (blue (z) coordinate is perspective (deepness) coordinate and RG-xy flat coordinates on screen). {0.3, 0.4, –0.866} would be remapped to the ({0.3, 0.4, –0.866}/2+{0.5, 0.5, 0.5})*255={0.15+0.5, 0.2+0.5, 0.433+0.5}*255={0.65, 0.7, 0.933}*255={166, 179, 238} values (0.32 + 0.42 + ( − 0.866)2 = 1). Coordinate z (blue) minus sign flipped, because need match normal map normal vector with eye (viewpoint or camera) vector or light vector (because sign "-" for z axis means vertex is in front of camera and not behind camera; when light vector and normal vector match surface shined with maximum strength).

## Calculating Tangent Space

In order to find the perturbation in the normal the tangent space must be correctly calculated. Most often the normal is perturbed in a fragment shader after applying the model and view matrices. Typically the geometry provides a normal and tangent. The tangent is part of the tangent plane and can be transformed simply with the linear part of the matrix (the upper 3x3). However, the normal needs to be transformed by the inverse transpose. Most applications will want cotangent to match the transformed geometry (and associated uv's). So instead of enforcing the cotangent to be perpendicular to the tangent, it is generally preferable to transform the cotangent just like the tangent. Let t be tangent, b be cotangent, n be normal, M3x3 be the linear part of model matrix, and V3x3 be the linear part of the view matrix. $t' = t \times M_{3x3} \times V_{3x3}$ $b' = b \times M_{3x3} \times V_{3x3}$ $n' = n \times (M_{3x3} \times V_{3x3})^{-1T} = n \times M_{3x3}^{-1T} \times V_{3x3}^{-1T}$

## Normal mapping in video games

Interactive normal map rendering was originally only possible on PixelFlow, a parallel rendering machine built at the University of North Carolina at Chapel Hill. It was later possible to perform normal mapping on high-end SGI workstations using multi-pass rendering and framebuffer operations or on low end PC hardware with some tricks using paletted textures. However, with the advent of shaders in personal computers and game consoles, normal mapping became widely used in proprietary commercial video games starting in late 2003, and followed by open source games in later years. Normal mapping's popularity for real-time rendering is due to its good quality to processing requirements ratio versus other methods of producing similar effects. Much of this efficiency is made possible by distance-indexed detail scaling, a technique which selectively decreases the detail of the normal map of a given texture (cf. mipmapping), meaning that more distant surfaces require less complex lighting simulation.

Basic normal mapping can be implemented in any hardware that supports palettized textures. The first game console to have specialized normal mapping hardware was the Sega Dreamcast. However, Microsoft's Xbox was the first console to widely use the effect in retail games. Out of the sixth generation consoles, only the PlayStation 2's GPU lacks built-in normal mapping support. Games for the Xbox 360 and the PlayStation 3 rely heavily on normal mapping and are beginning to implement parallax mapping. The Nintendo 3DS has been shown to support normal mapping, as demonstrated by Resident Evil Revelations and Metal Gear Solid: Snake Eater.

Wikimedia Foundation. 2010.

### Look at other dictionaries:

• Normal mapping — Saltar a navegación, búsqueda Normal mapping usado para detallar una malla poligonal. Normal mapping es la aplicación de una técnica 3D que permite dar una iluminación y relieve mucho más detallado a la superficie de un objeto. Es una evolución… …   Wikipedia Español

• Normal Mapping — Schritte. Normal Mapping (oder auch Dot3 bump mapping) ist ein Begriff aus der 3D Computergrafik und wird dazu verwendet, größeren Detailreichtum in Schattierungen zu erzielen, ohne die Zahl der Polygone zu erhöhen. Beim Normal Mapping werden die …   Deutsch Wikipedia

• Normal mapping — Exemple d utilisation du normal mapping. En imagerie numérique, le normal mapping est une technique utilisée pour feindre l éclairage de reliefs (à voir également: placage de relief Bump mapping). Il est utilisé pour ajouter des détails sans… …   Wikipédia en Français

• Normal mapping — …   Википедия

• Normal Map — Normal Mapping Schritte. Normal Mapping ist ein Begriff aus der 3D Computergrafik und wird dazu verwendet, größeren Detailreichtum in Schattierungen zu erzielen, ohne die Zahl der Polygone zu erhöhen. Beim Normal Mapping werden die für die… …   Deutsch Wikipedia

• Normal map — may refer to: Normal mapping in 3D computer graphics Normal invariants in mathematical surgery theory Normal matrix in linear algebra Normal operator in functional analysis This disambiguation page lists articles associated with the same title.… …   Wikipedia

• Mapping — Der Begriff Mapping (zu deutsch Abbildung oder Kartierung, wörtlich eine Karte machen) hat in den letzten Jahrzehnten eine Reihe zusätzlicher Bedeutungen erhalten. Zum ursprünglichen Inhalt – ein begrenztes Gebiet kartografisch erfassen; erhobene …   Deutsch Wikipedia

• Normal number — For the floating point meaning in computing, see normal number (computing). In mathematics, a normal number is a real number whose infinite sequence of digits in every base b is distributed uniformly in the sense that each of the b digit… …   Wikipedia

• Mapeado normal — Normal mapping usado para detallar una malla poligonal. El mapeado normal es la aplicación de una técnica 3D que permite dar una iluminación y relieve mucho más detallado a la superficie de un objeto. Es una evolución del mapeado topológico (bump …   Wikipedia Español

• Normal matrix — A complex square matrix A is a normal matrix if where A* is the conjugate transpose of A. That is, a matrix is normal if it commutes with its conjugate transpose. If A is a real matrix, then A*=AT. Hence, the matrix is normal if ATA = AAT.… …   Wikipedia