Fixing facial texture on decompiled human models

From Obsidian Conflict Wiki
Revision as of 04:11, 3 May 2008 by Skidz (talk | contribs) (New page: This tutorial has been ripped from the steampowered forums to be kept arcived. It was written by Wunderboy. The problem comes from the fact that when Cannonfodder's decompiler creates th...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This tutorial has been ripped from the steampowered forums to be kept arcived. It was written by Wunderboy.


The problem comes from the fact that when Cannonfodder's decompiler creates the UV map, instead of keeping the values in the range 0 to 1, it moves the vertical, V, axis down into the -1 to 0 range. Effectively this makes your UV map appear below the normal UV mapping space.

The diagram from 3DS Max shows what I mean:

Cfvsnormuveb1.png

The UV map should be within the blue bordered square as show on the right. The left shows what CF's importer does, it moves it down below the square.

Now, normally in Source a texture will tile vertically and horizontally so this isn't too much of an issue. The face texture would be repeated vertically and line up with the misplaced UV so everything would appear normal.

However, if a texture has it's S and T clamp flags set, instead of tiling, it will repeat the edge pixels meaning anything not within the centre 0 to 1 UV range gets the striped texture problem.

The picture below explains what I mean:

Clampedvsnonclampedgd3.jpg

As you can see with a clamped texture and an out of bounds UV map your mesh gets covered with the repeated edge pixels a.k.a your "candy cane" probem.

While removing the S and T clamp flags on the texture is a quick solution the proper way to fix it would be to move the UV map back up into the position it's meant to be in.

In 3DS Max is actually fairly easy to fix. You just select your entire UV map, switch to relative co-ordinates and set the V value to 1. This will push your UV map back up into the correct co-ordinate space.

Maxuvfixqe1.png

Hope that helps explain it!