June 18th, 2009
When I am designing levels, I always seem to need more big rocks. The tricky thing about making really massive rocks is that they require equally massive textures, which can use up too much texture memory. We can use tiling textures to use less memory, but they usually look bad because they don't match the geometry. However, a tiling texture seemed like my best bet, so I made a tiling rock texture from a photo I found at cgtextures.com using Photoshop (offset filter FTW!) The photo is on the left, and the tiling texture is on the right:
I was trying to think of better ways to make my huge rock when I remembered that I can use CrazyBump, the tool I use to make tangent space normal maps, to make decent displacement maps as well. Here is the displacement map that CrazyBump generated from my rock texture:
I tried using 3DS Max to subdivide my rock mesh and apply the displacement map to it, to see what would happen. Here is what that looked like:
The displaced model looked really cool, but it had way too many polygons for the game. 3DS Max has a simplification algorithm built-in, but it doesn't preserve UV texture coordinates. Here is the simplified rock mesh wireframe:
I needed some way to preserve the UV texture coordinates as well. Our OffTheGrid technology can do that, but we don't yet have a good interface for using it on non-terrain models. I looked around a bit, and found a plugin for 3DS Max called Polygon Cruncher. I was pretty happy with the results. Here is the simplified rock in the engine with its color and normal maps intact:
Now the final model has the best of both worlds -- the memory efficiency of tiling textures, and the geometric accuracy of unique textures. That is not even considering all the time saved with this technique.
Since I have my big rocks now, do you guys have any other ideas for assets that would be useful for Overgrowth level design?