My current project is a fairly large 3D reconstruction of a graffiti site.  I’m aiming to faithfully reproduce the surface image and texture for the entire site, and allow online and tablet users to navigate interactively through it.  Two concerns are the overall size of the project, and the demands the geometry will put on the displaying device.

Today I have been experimenting with bumpmaps, with the aim off reducing the size and performance-drain of high-polygon models.

I was worried I’d have to write my own script to take two meshes and produce a bump map from their displacement, but happily there’s a great freeware tool to do this called xNormal.  I’ve made a 2-part tutorial to show the process of taking a reconstructed model and ending up with a low-poly mesh and diffuse, normal, and bump maps in Unity 3D.

Here are the results:


 And here’s the tutorial itself:

The tutorial explains how to take a textured, very high-poly mesh (~400,000 faces) and replace it with a low-poly mesh (1000 faces) while still maintaining the visible detail, using normal and bump maps generated with xNormal.

Here’s the process:

  • start with a textured mesh reconstructed using agisoft photoscan
  • export a high-poly model, a high-res projection-mapped diffuse map, and a low-poly model (mesh’s exported as OBJ files)
  • import the OBJ files into 3DS Max, export each using the xNormal exporter plugin
  • Open xNormal, add the two exported meshes and the texture file
  • generate baked diffuse, normal, and bump maps using xNormal
  • import these into Unity 3D and apply as Parallax Diffuse shader onto the low-poly model.