Texture Compression for Triangle Meshes
By
Hayley Iben
Marci Meingast
Ali Lakhia
Background
- 3D city model generation
- Truck loaded with:
- Laser scanners
- Digital cameras
- Computers to capture data


- Large amount of data per city block
- Mesh: 100,000 – 300,000 triangles
- Texture: 20 – 48 MB
- Interactive walk-thru hard
- Need hardware acceleration
- Throw away four-fifths of texture
- Simplify meshes
- Only one block at a time
Motivation
- Texture data is the bottleneck:
- Graphics card video memory
is limited
- Reduce the amount of image
data and still be able to reproduce the image
accurately
- Enable walk-thru of more data since more texture memory is
available
Overview
- Compress the texture by using
the repetitious nature of buildings
- Find similar texture through
comparing the triangles (which are very small)
- Only keep the blocks of texture used by the triangles,
throw out the rest of the data
- Use the new triangle mapping
and smaller texture to display entire image
Preprocessing Stage
- Given the original triangle
mesh and original image:
- Convert the triangle coordinates to image
coordinates
- Pad the image so that data is not lost on the edges by
the Gaussian pyramid calculation
- Determine Gaussian pyramid of the image
Algorithm
- For each triangle:
- Look for a match in the smallest Gaussian level by
checking every possibility
- If there is a match, check the next pyramid level.
- Continue through the levels until there is a match at
every level of the Gaussian pyramid
- Otherwise, continue to the next possible triangle
location
- At each level, we are determining the triangle
coordinate in that image and checking for a match.

- Triangle comparison:
- Use a polygon fill algorithm to compare each pixel
value within the triangle bounds
- Special cases include testing a single point and a
line
- Measurement of the match is the squared color distance
between all of the pixels
- After all of the triangles in the image have been
processed for a match:
- Relevant blocks of texture are moved to form a new
texture
- Triangle coordinates are updated to their new
location and converted back to the correct format
- Remaining texture data is discarded
Results
- Before
- After

Note: 5,000 of 29,000 triangles moved
- Before

- After

Future Directions
- Try different traversal of
Gaussian pyramid
- Give preference to certain blocks to avoid scattering
- Pick starting blocks using RANSAC
- Optimization of parameters