“Airtight” Normal Mapping Myth Busted?

When normal mapping first came on the scene, people were very contentious about creating low poly models that were optimized for the creation of normal maps. Some of those practices are still in play today, while others, like establishing control-lines, seem to have fallen by the way-side. I think it’s been said that best practices include making low poly models airtight. Since this adversely effects work-flow efficiency and game performance significantly, I decided to see if that is currently the case. I also tested to see to what extent especially detailed geometry could “float,” and whether or not it had to be “sunk” into larger, simpler geometry. Finally I tested the viability of creating only one low-poly analogue of anything that repeated in the high-poly. It will all make sense.

To explain this a bit more simply, imagine a box with star-geometry on one of its sides. If we create an “airtight” model, the extra geometry of the star continues on into the geometry of the box, creating not only additional polygons for the star, but unnecessary geometry in the box as well. The alternative is to create geometry for the box and star separately and have the star simply float on the surface of the box. This is obviously ideal in terms of UV mapping and game engine performance, but I was led to believe that rays would bounce around in such a way as to render (pun intended) the normal map unusable.

To test this out, I took a high-poly table and created a low-poly version that featured floating ornamentation. I created the low-poly ornamentation in zbrush and the more simplistic geometry in 3ds Max. I chose not to sink the floating ornamentation. I only created (apprx.) one low-poly version of any high-poly element, effectively creating only one quarter/one half of a table that I could then mirror. Obviously this last bit only works on objects with perfect symmetry (unless you are going to re-UV and edit the normal map et al by hand).

The results were surprising! I rendered the maps in xNormal and got some weird ray-bouncing artifacts, but nothing that would rendered the normal unusable. They were issues that could be corrected in post, and you’d still make out way ahead in terms of work-flow efficiencies and engine performance. It’s even possible that the issues could be resolved by creating the Uvs in a more contentious manner.

Then, with what little memory I had of working with Substance (great program BTW, I intended to use it a lot going forward), I created normal maps there. Note that the floating ornamentation allows you to turbosmooth just the visual areas of interest without your entire model taking the hit. The previous issues were nowhere to be seen and the model looked spectacular for the little amount of effort put into it! This will be my new workflow from now on.

Now, honestly I don’t know if anyone else was/is under the impression that low-poly geoms had to be air-tight, and I don’t know whether or not this is edifying for anyone other than me, but I hope so! I’ll be releasing some call to action videos coming up, so please stay tuned. Thanks, bye!

Leave Comment

Your email address will not be published. Required fields are marked *