Normal Map in 3D Modelling Explained

4 of votes

2432

What is the Normal Maps in 3D Modelling

The 3D objects consist of polygons: flat square and triangular surfaces. Polygons are good for modelling simple objects like books, houses and Minecraft blocks. But if you want to make a detailed model of an apple or even a sphere the rough polygonal edges will make it look bad.

Polygons are like Lego bricks: if you have a dozen bricks you can only make a small toy car, but if you have thousands bricks you can make a 1:1 car copy. So to model a detailed 3D object you need only to add a few thousands of polygons.

low poly sphere

A sphere made of 3840 polygons looks good and round. But those polygons still would be visible because of how lightning falls on the sphere. You can see those edges everywhere. And no, we can’t bend polygons, they may only be flat planes.

How do games show round objects without “built of bricks” effect? By using normal maps.

What is the normal map

To show how light falls and reflects off the model we are using baked lightmaps. Lightmap shows how a texture will look like when the light falls on it. For example, flashlights in games work with lightmaps: the game engine just overlays the lightmap of a flashlight over textures.

But lightmap can’t show the volume and texture of a surface, only to change light intensity depending on angle. Lightmap baking uses evenly enlightened texture, so the rays of light are always perpendicular to the surface. So let’s teach the surface to reflect light at different angles.

Let’s take a polygon and add a perpendicular line from the center of a polygon — a normal. Now when the ray of light falls onto a polygon the game engine can measure angular difference between the ray and the normal. We know that the rays of light reflect with the same angle as they falled, it’s symmetrical.

normal on plane surface

Here’s an example of two polygons with a flat normal map. As you can see, normals are perpendicular to the surface they are located on. But hey, we are using a computer, not rectangular Lego bricks. Let’s ask the computer to smooth the transition between centers of each polygon. So a computer will make a normal map:

  • normal on the center of the polygon are perpendicular to it;
  • normal on the border of two polygons is bisector of central normals;
  • other normals between central ones have their angles tilted to bisectors.

So if the light falls onto the low-poly sphere with a normal map, it will look like a sphere made of millions of polygons.

But if we use the normal maps with a cube it will give a funny result: a normal map will smooth up the edges. To avoid this 3D modellers set smooth angle parameters which tell the 3D engine where it needs to smooth normals and where to leave them as is.

Advanced use of normal maps

We learned that simple normal maps can be used to smooth the borders between polygons. But we can also bend normals on a single polygon to create an illusion of a 3D object while the polygon is flat.

Its works because the 3D engines don’t 100% copy real life physics but simulate it. If we take a flat plane and add a custom normal map to it, we can simulate the volumetrics by changing the light interaction with this plane. For example, to make an illusion of a 3D button on a flat clothing with adding no real polygons.

At first, we need to make the button or something similar with polygons — a high poly model. It is needed to understand how the light will reflect on it. Then we bake a normal map: write the normal angles from all polygons used.

normal map baking

And now we can put the normal map of the high-poly model over low-poly one. Now the game engine will reflect the light how the normal map tolds to. And for us it means that we can use flat polygons instead of high-poly models and provide gamers with better performance optimization.

How the normal map looks like

It looks like a blue texture with red and green accents. That’s because normal map is saved in 3 color channels:

  • red channel shows how the model should look when it’s lit from a side;
  • green channel shows how it should look when lit from above or below;
  • blue channel shows the model lit from the front.

How to use normal maps in games

The best way to use normal maps is to add details to the textures. For example, we have a stone wall texture. When it is lit without a normal map it looks boring and flat, like a painted wall. But when we add matching normal map, it feels like every stone has its volume. Though the wall is still a big flat polygon with texture on it.

normal map on wall

With normal maps we can also increase the level of details of any texture: cloth, sand, stone, bricks, carbon, whatever. You may have seen use of normal maps in the Battlefield series: that’s how DICE made clothing and dirt look so realistic with almost no impact on performance. Also normal maps can simulate small details like cables, rivets, buttons and rifling.

normal map wool

Conclusions

Now you know why low poly models in modern games look so round and smooth, especially when compared with PS2-era games. Still, normal map baking is a difficult process: unskilled modeller can mistake mapping channels, oversimplify low-poly models in hope that the normal map will save all details or set the wrong smoothing angle.

If you want your game to look like Battlefield V — contact us. Our 3D modelling team and VFX specialists will help you to improve graphics with small impact on performance.

PLEASE, RATE MY ARTICLE :)

4 of votes

Post views:
2432

Our game development studio is based in London. With over 13 years of expertise in design, marketing, 3D animation, and programming, we are a cornerstone of the koloro.group of companies. We craft games tailored for clients and also passionately drive our in-house projects. Our commitment is clear – delivering premium content and deriving revenues from games, all while adhering to the highest moral standards and valuing people’s interests. If you’re looking to craft magnificence and reap monetary rewards, we’re your destination.

GET A TOUCH

Send us a message via messenger or email