tangent vs object vs world (normal maps)

The Dark Elf

Newbie
Joined
Oct 5, 2003
Messages
16,077
Reaction score
2
part whine, part question.

Ok so I've been experimenting with these for realtime objects, having been using them for years in pre-rendered work and having no problem. And now im curious after reading so many conflicting articles on them. I get the impression nobody can really decide which is the best one to use.

tangent
the blue colored kind, and supposedly easiest to make. Needs UV's to be perfect and continuous, so can be easily edited later in photoshop.

object
rainbow colored and unlike tangent, includes information for the entire object, rather than just whats facing the camera. Every polygon has its own unique direction, can't use one side of the model mirrored as the other side for example. Works 100% of the time even when using discontinous UV maps.. Causes NO distortion, has no seams. Being discontinuous UV's it can make use of every pixel in the UV map.. But maps like that are a bitch to paint inside Photoshop

world
looks a lot like object space normal maps, the rainbow colored kind. Apparantly very little use though so assume it doesn't exist.

Now.. What I'm curious about, is the whole, everyone says different. Some claim you should only ever use tangent space, some claim object space is quicker because its already got all the information required. Others claim object space wont work on deformable objects, while others say it works fine (and experimenting with this, and having used object space normal maps for a while, I can't say as I've ever noticed them breaking on deformable objects)

Something else I've found.. tangent space normals are a bitch to generate without screwing up. Your UV map has to be _perfect_ and continuous. Fine on simple objects or if you have plenty of time to spare for creating a perfect UV map. But then with object space, you can generate a quick automatic UV map, discontinuous, and the result looks far better and more natural looking than a tangent space map.

I also noticed ZBrush 2 doesn't like to generate a tangent space normal map on one of the advanced UV methods it can create automatically. Which for anyone investing the time to make high poly models in ZBrush, is bound to find annoying.

Which kind of normal map does Source use? Can it use tangent and object space? Has anyone tested either in game, or just blindly going with the familiar blue kind.

So far the only real benefit I've found for tangent space is you can mirror objects and use mirrored normal maps, tiling area's and so on. Which you can't do with object space.. But how many 100% symmetrical characters do you want to see? Sure its ok in some cases, but really, with hardware today, is it _really_ that important to mirror sides of a character.

It would be helpful if a coder could jump in and explain all this in layman's terms. Because right now, I would be happy to stick with object space, having yet to get a tangent space normal map to look like it should, even with perfect UV mapping it seems to fall apart on anything more than being used for flat brush textures. While object space seems quite happy to work on anything, giving no distortion, no seams, no lighting errors whatsoever.

Which kind are you using? And why? And are you using them through ZBrush or another 3D app, or using the nVidia plugin for Photoshop to generate basic tangent space types from images.

object_space.jpg
Object space normal map.. Looks exactly like the original.. no seams, no distortion.

object_space_normal.jpg
Object space normal map​

tangent_space.jpg
Tangent space normal map.. ****ed to buggery and entirely unusable.

tangent_space_normal.jpg
Tangent space normal map​
 
Back
Top