02-19-09 - Tech Image Series 2

Tech image of the day :

This is an object-space normal map of the classic horse model, generated by Galaxy3.

The model is automatically UV mapped, the normals drawn into the texture at those UVs. This is an old version of the UV-charter that didn't force the charts to break when they had singularities, so you can see the poles in the image where the topology created charting singularity points. I believe this is one big chart for the whole horse, which of course is hard to UV map well.

The other thing you see is the extrapolator / pixel seam filler. When you make normal maps the triangles don't cover every pixel in the texture so you have blank spots. Obviously that's bad for making mips, but also bad because the bilinear filter sampler will be going outside of what you wrote and pulling junk. If you just extrapolate by copying the neighbor pixel values, you create flat spots at the seams that are very visible. (Ignacio has written about this in some more detail on his blog recently). You can hide the seams a bit better by using a planar (or 2nd derivative if you have enough support) extrapolator, which was done here. (see the new Lindstrom paper for a more rigorous approach).


castano said...

Your extrapolator does indeed work very well.

An even better approach is to use knowledge about the signal across the chart boundary. That's what the Voronoi-walk method in Pedro Sander's thesis does.

A more robust/simple way of doing that is computing a skirt or polygons around the seam and parameterize it while fixing the seam vertices to the boundary of the chart. Then you rasterize/sample the skirt triangles the same way you would handle the interior of the chart.

You can get overlaps between skirts of different charts, so you also have to compute the voronoi map of the chart to resolve conflicts.

ZBrush already seems to do something along those lines.

cbloom said...

Wow that Pedro Sander has a ton of good papers


I didn't mean to imply that the planar extrapolate is really the right thing to do for seam fixing, it's definitely not. But it makes pretty pictures.

old rants