HowTo:FullUnwrap5Think

From VsWiki
Revision as of 19:56, 8 May 2007 by chuck_starchaser (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Think Hard First

Here's a list of constraints and requirements to get a "good unwrap" going:

The goals are:

  1. To have the least amount of stretching and deformations
  2. To have consistent scaling of the texture across the whole ship
  3. To minimize the number of seams and islands
  4. To have the arrangement of the islands so that locating a part of the ship in the textrure is intuitive, rather than requiring a throrough search.
  5. To have front and back view unwraps all together in one area of the texture, and all side views in another. The two areas of the texture should be well separated, hopefully across a single, horizontal line.
  6. To have all "side views" (including top and bottom) as a series of rotations, sort of like a cylindrical unwrap unrolling vertically.
  7. To align the front-to-back direction (z axis) horizontally on the texture (u-axis).
  8. To orient the front of the ship (positive z-axis) towards the left on the texture. This is so that, to produce dirt trails and scratches that should have front to back fading, we can do it in Gimp using horizontal motion blurs globally, rather than have to do laborious, region by region blurs, depending on the orientation of each island. Also, my texturizer software, when it's done, will assume that the front of the ship faces to the left on the texture, and produce dirt smears and scrathches by smudging dirt spots and impacts towards the right.
  9. To avoid "flipping" islands or polygons. A flipped island on the texture results in the polarity of the bumps on the normal map being reversed.
  10. To avoid overlapping or re-using islands (unless using dual UV-layouts) because radiosity baking and PRT bakings cannot work with overlaps.
  11. To avoid Islands touching, or even coming too close to each other; --except along an edge that they share on the model itself; --in which case they could (or rather should) be "stitched" together.
  12. To try to group islands by color or material, so that color "leakage" between islands due to gpu anisotropic filtering is of a similar color, and therefore less noticeable.
  13. To try to keep islands housed in rectangular areas, power-of-two pixels sized; and to ensure these areas have their starting x and y coords at an integer multiple of their x or y size respectively. I.e.: If a long strip island has a size of 64 pixels in x and 16 pixels in y, good placements for the rectangle in x, in the texture, ar at x=0, x = 64, x=128, x=192, etceteras. That is, 0, 1, 2, 3, etceteras, times its x-size, 64. Good placemtents in y are 0, 16, 32, 48 .... same idea. Why? To avoid, or rather minimize, mipmap color leakage between islands. Mipmaps are recursive reductions of a texture by powers of two, using block averaging (4 pixels are averaged into 1). So, if two islands are separated by a row of pixels at x or y = 77, mipmap leakage will start much earlier than if the boundary between them is at x/y = 64, for example.
  14. Finally, to, --as much as possible--, make efficient use of the texture, while upholding the previous standards.

Easier said than done, let me say it :) The day someone comes up with an automatic UV-unwrapper that takes all the above into consideration, that will be the day...

But anyhow, read and re-read the above list until you wake up in the morning thinking about it, and next we'll start placing seams, while thinking about all that...