Displacement vs Normal Maps in Modo

As a 3D artist there are times that you can’t have all the details you need on a mesh but instead in an image file that can be added later. The most popular detail image maps are Displacement and Normal Maps. Each with their strengths and best practices.

Getting Started with Displacement Maps

Displacement maps are gray scaled images that are used to displace the vertices of a mesh physically. Think of it as, a height map that tells each vertex what direction to go into and how far. The image below is that of a mid-level mesh that was displaced by our map.

Mid Poly Mesh with Displacement Map

Mid Poly Mesh with Displacement Map

Displacement maps require mesh geometry to exist to be seen correctly. The image above is being driven by the mesh below; there aren’t enough vertices to push to get the detail. To get our vertices count up we can do what’s called a subdivision to our current mesh now or at render time.

Displaced Mesh

Displaced Mesh

Subdivision Levels with Catmull-Clark Current and Render Time

Catmull-Clark subdivisions is an advanced Sub-D method that allows for better control of edge normals and offers great performance. To gain access to it in Modo select your mesh and use the shortcut Shift + Tab, then in the mesh property window go to the surface tab and check Multiresolution under Catmull-Clark.

Catmull-Clark has three level options. Each level is a multiplier for the meshes current polygon count.

  1. Subdivision: The max level we can use for either current or render levels
  2. Current Level: The mesh level in the editor
  3. Render Level: Level used at render time.

What’s great about the current and render levels workflow is, the current editor level can be much lower so you can use the app without a huge hit to performance; when rendering the level can be set higher.

Catmull Clarck Current level 1 Render level 5

Catmull-Clark Current level 1 Render level 5

As you can see from the image above I’ve set the current level(mesh on right) to level 1 and the render level to 5. At this level, you can see much more detail than our previous editor versions. To find the right render level takes a bit of trial and error. Just make sure you save your work, in case the level is to high for your system to process.

Getting Started with Normal Maps

Often used in game development, normal maps are image files that contain normal transformation data from a high res mesh. Read more about Baking Maps in Modo.Once created we can apply that high res mesh data to a low res model and allude to details. I Say allude, because the mesh isn’t dense at all. Instead it uses light tricks to make it seem like there is more detail than actually available.

Mid Poly Mesh with Normal Map

Mid Poly Mesh with Normal Map

As you can see with the normal map applied the poly count is low, and there is no mesh distortion(yellow mesh outline), but our detail is visible.

Comparing Displacement to Normal Maps

Left: Normal Map Right: Displacement Map

Left: Normal Map Right: Displacement Map

Looking at our Normal Map and Displacement Map examples above, you can see the amount of polygons needed for each to display. On the left, the normal mapped mesh uses fewer polygons; but as you get closer to the mesh, the details become flat. On the other side, the displacement mapped mesh holds its structure with actual polygons(which can still use more polygons). So as you get closer the details remain.

Choosing which maps to use comes down to where the mesh is going to be used. If you’re modeling for animation, print or close up shots, displacement maps will give you better quality at the cost of longer render times. For limited resource usages like games or arch viz; normal maps will provide the best in performance and detail with better memory and CPU performance.

Final Thoughts

As a 3D artist, your goal is to tell a story. Regardless of the application albeit print ads, VFX, games or animation, your ability to convey the right amount of information and detail in storytelling is essential. Normal maps are ideal for real-time applications or when you have limited resources. Displacement maps are perfect for when you have to render for close ups. Or if you want to use proxy meshes without committing to all the details at the current time.