3ds Max fixing bad lighting along UV seams

From Nexus Mods Wiki
Jump to: navigation, search

Fixing bad lighting along UV seams

with Ghogiel


I am using 3dsMax 8 for this tutorial. But the information here is not really application specific. This is also true of models for both Fallout 3 and Oblivion. I had trouble thinking of a good title to be descriptive enough to find easily. The tangent space/UV seam issue isn't the easiest thing to diagnose, once you've seen it though...

The problem

3ds Max fixing bad lighting along UV seams image 1.jpg

If your 3d assets suffer from this phenomenon, continue reading

This is caused when tangent space binormals/tangents are calculated in nifskope. As I understand it, when the tangent space for the mesh is calculated, it needs to read not only the geometry vertices, but also the verts that are stored in the meshes UV. If 2 UV shells are mirrored down a middle middle seam and are sharing the same UV space, ie resting on top of each other, the resulting vertex normals can get confused and may end up pointing backwards. Not exactly sure what happens. But the effect is, it causes light to reflect very badly along the UV seams. To make it work correctly, you simply have to offset your UVs so they aren't completely mirrored-overlayed. But before I get to describing the fix, first let me show you the experiment I used to get the results in the image above.

I created a sphere.

3ds Max fixing bad lighting along UV seams image 2.jpg

Deleted everything but 1/4 of it, and then UV mapped it.

3ds Max fixing bad lighting along UV seams image 3.jpg

Then I mirrored it, z, then y axis, so I again had a completed sphere. Attached it all the pieces together so it's one object. Welded the vertices along the split seams. reset Xform.

3ds Max fixing bad lighting along UV seams image 4.jpg

To correct all you have to do is edit the UV mapping. in the UV editor, one by one select the quarters of the sphere where your UV seams run. Now offset each section to occupy its own unique UV space. In max this is done by putting any whole number(like "1") into the U or V boxs, as seen in this image.

3ds Max fixing bad lighting along UV seams image 5.jpg

The obligatory comparison shot Before/After fix:

3ds Max fixing bad lighting along UV seams image 6.jpg

I'm using a flat midtone grey diffuse map and a flat featureless normal map on both sphere. The sphere images are screenshots from nifskope, the issue won't show up on your meshes until after export.

This way you can maximize precious UV space and get more resolution into your textures.

If rendering normal maps from a high poly model, it's generally not advised to do a lot of UV mirroring. Like faces or down the middle of bodys. But arms/sleeves/legs/hands UVs can be overlapped without problems. You aren't really mirroring along UV seams in this case. You are just stacking UVs. Which is a good, cheap and easy way to increase texel density in you texture maps.