Normal Mapping

1) Load a model

For instance, this one (courtesy of cyberware)

2) Generate a texture atlas

  Atlas->Generate texture atlas
  max overlap ratio: 0.0001

3) [Optional] Visualize the result

  • Select 'Textured in Shader pane
  • mode: checkerboard
  • texture repeat: 30
  • border style: on

You can also open the 2D editor (from Window menu)

4) Generate normal map

  Atlas->Maps->Generate normal map
  Filename: dino_normals.png

5) Apply the normal map to the model

  Select 'NormalMap' shader
  Specify normal map (click on the folder icon to the right to browse)

6) Simplify the model

   Mesh->Multi-resolution->Create progressive mesh
   Mesh->Multi-resolution->Set level of detail
  • Turn the wheel to the rightmost position (this simplifies the model to the maximum)
  • Turn it back to the left until you are satisfied with what you see
  • You can freely adjust the thumbwheel (number of facets,edges and vertices is displayed on the bottom)

Normal-mapped simplified model

Closeup, with the triangles displayed in yellow

7) Save the model

   File->Save current

Note: this saves the model "as displayed" (you cannot change the multires. thumbwheel after re-loading a model).

Try this

There are many models on cyberware's website, see in particular:

You can try the technique with these models (Graphite can load .ply files directly thanks to Greg Turk's ply library).

There are also nice models on aim-at-shape repository.

Known limitations

  • Our Progressive Mesh algorithm cannot currently simplify the borders. This tends to generate too many triangles near the frontiers between charts.
  • Smoother charts boundaries could be generated by smoothing the normal field before applying the Variational Shape Approximation method (as done in Alliez's paper).