This is a bit of a plug, but I wanted to share my latest work with you. Why? Because reading these forums influenced my choice of topic, namely: Procedural planet generation (yey) So thanks for your inspiration Uber (See the credits in the documentation) video: http://www.youtube.com/watch?v=Bej_MObDSMI documentation: http://www.twandegraaf.nl/Art/Documents/Procedural planets into detail, Twan de Graaf 2012.pdf original topic that inspired me: http://forums.uberent.com/forums/viewtopic.php?f=61&t=35341&p=538616&hilit=Buckyballs#p538616
This is cool. However, I was skimming your paper for pretty pictures and noticed that you make some statements about tangent-space normal maps that I do not think are true. You state on p. 27 that "object space normal maps have information of where the detail is, as well as where the surface changes direction". This is true, in that object space normal maps are in object space, so they explicitly contain the final object space normal. However, position and (more importantly) tangent information is still available to the shader from the model. As long as the model is made correctly, and the normal map is made to fit it properly, the use of tangent space allows not only mesh animation, but tiling or repetition of normal map data, as well as use of the same normal map on mirrored geometry (as long as the tangent W coordinates are negative for the mirrored part). The trade-off is that the tangent space rotation has to be reconstructed in the fragment shader, and the result is a bit heavier on fill rate. The seams in your tangent space image (Fig 53) are not a limitation of tangent space normal maps, but rather a problem with this particular normal map, or perhaps the vertex normal/tangent information of the model. Just as you don't usually want discontinuous UV coordinates across a vertex seam, you don't usually want discontinuous normals or tangents across a seam. However, it is perfectly possible to create meshes and tangent space normal maps that fit properly, and do not exhibit the lighting seams in your example. One telltale sign of the problem being a poor model rather than a limitation of the normal mapping method is that the base colour of the texture doesn't even line up across those seams. Unity 3D supports whatever type of normal map your shader requires. It is only the built-in shaders that use tangent space normal maps. You can modify them, or write your own shaders that use object space normals. All that said, I do think that object space normal maps are the appropriate method for your needs. You are right that object space normal maps will continue to look correct when used on a higher-detail mesh. Individually calculated mip levels for a tangent space normal map would probably achieve similar results, but I don't see any particular benefit if you are using a unique UV mapping.
Thanks for the reply I have tried to use object space normal maps, but I could not get object space normals to work correctly in Unity. I have tried to build a shader myself, but I couldn't. Maybe with some more knowledge of matrix conversions, I might be able to try it again . the other 2 points you raise are correct. I am aware you can tile tangent space normal maps, whereas you can only tile object space normals in a few cases, that is stated in the text (partially) about the seamlessness of tangent space normals, it is of course possible to get it to work, but it does take a bit more work, than with object space normal maps as you basically get the edge "for free". TLdr: I wanted to initially use object space normal maps, but I couldn't so I worked around that