Is there anywhere I can find a comprehensive list of what tangent basis various apps use for rendering normal maps? If not, could we create one here?
For instance, I know 3ds Max uses +X and -Y, which is different from some other apps. With all the programs I use, it can become slightly confusing trying to remember if I need to flip the green channel or not. Any insight is appreciated.
Replies
Every program for rendering normal maps lets you decide how you want that.
AFAIK, xNormals uses the same basis as Max; if you're saying Max is +X/-Y, then xNormals is the same thing. I believe the Photoshop plugin defaults to the +X/+Y. So,
Maya: +X, +Y
xNormals : +X, -Y
Photoshop nVidia Plugin : +X, +Y
Some other good reading on how the Tangent Basis is calculated in several different packages (in case your developer starts shaking his fist at you): http://www.polycount.com/forum/showthread.php?t=84616
If Handedness = Polygon Winding direction, then I believe it depends. Our software derives tangents from the winding direction, but I guess that's not always standard, which freaks my devs out whenever they run across it (sort of like calling the sky Green or something).
like, if i remember rightly, i read on the UDN site some time that they used an in-house app for generating their normals (makes sense), but that means that potentially there is no app on earth that would generate normals the same way Epic do.
which is of course, a problem.
edit:
http://udn.epicgames.com/Three/ImportingStaticMeshTutorial.html
apparently the tool they used is called "SHTools".
Alternatively, if, say, Maya tangent generation differs from Max tangent generation, then that would still be a good thing to have a list of somewhere. A list of tangent/inversion compatibilities.
I've used SHTools a long time ago. We don't use it anymore even for unreal games.
I believe it was developed when epic was first using normalmaps because you couldn't bake normalmaps in max. It was that long ago.
Max X+Y-Z+
Maya X+Y+Z+
ZBrush X-Y+Z+ (not 100% sure)
UDK X+Y-Z+
Marmoset X+Y+Z+
IDTech X+Y+Z+
CryEngine 3 X+Y-Z+
Blender 2.4x+ X-Y-Z+
Blender 2.57+ X+Y+Z+ (now uses mikktspace by default)
xNormal X+Y+Z+ (also uses mikktspace by default)
CrazyBump X+Y+Z+
Nvidia Filter X+Y-Z+
PixPlant X+Y-Z+
nDo2 X+Y+Z+
Feel free to correct them, if i got any wrong
While the axis that different programs use are insignificant when compared to the other complications, i still think it would be a good idea to get these on the Wiki, as when i was first starting out it used to drive me crazy trying to find them all out.
Fifth row, take a good look and try again
Also...isn't tangent basis something completely different?, isn't this swizzle coordinates?.
We also had a long conversation about this not so long ago, comparing different tangent basis inbetween softwares here: http://www.polycount.com/forum/showthread.php?t=68173
Swizzling (as it applies to images) is swapping color channels around when exporting said image, such as DXT5NM
@metalliandy, Blender pushing for a tangent space standard is pretty cool
that was my understanding. folks seem to be mixing it up with every other normal map buzz word.
Yea Axis and Tangent space are different. I posted the axis values, because i knew what Sean meant and its good to finally get a list of these down somewhere
He corrected himself in post 4 too
@Sean, maybe message a mod to change the thread title and edit your first post?
Yea, its a move in the right direction