Wednesday, February 25, 2009

Texture Optimization Class

Last Friday one of our artists, Taylor Eshelman, gave an excellent, in-depth class on texture mapping using 3DS Max and how to optimize it for a production pipeline. For those who are interested, here are the basic speaking points from his class (written by him):

1. Plan Ahead: Without a fairly clear idea of where you're going to want to wind up, you will waste a lot of time, and will probably wind up wasting vertices, pixels or both.

2. Reduce, Reuse, Recycle: We can and should recycle art assets when working in CG, not only because we can, but because it can reduce development time, asset generation and maintenance, and project data footprint. We should use the idea of "object oriented" texturing where possible.

3. Making the Most of Assets: A consistent philosophy of optimization will often mean the difference between high polish and "good enough", especially if you can squeeze in that last cool visual because your optimization strategy made room for it.

4. Vertex Count vs. Pixel Count and Tileability: Making the most out of assets will often mean finding ways to use the model, texture and vertex color (and maybe normals) together to produce effects that might otherwise be done independently, and more expensively. Tiling textures may get a lot more mileage with careful modeling. Every pixel and vertex needs a reason for existing.

5. Waste vs. Warp: Warping things this way can reduce the waste that comes from UV mapping anything more complex than a cube. That said, it's still best to minimize warp by "normalizing" the UV space for polygons, counterwarping the polygons into the UV interstitial spaces.

6. Decal vs. Wallpaper: Some UV layouts present the model as a series of "shells" that each have unique UV space. Contrary to that idea is the wallpaper method, where a texture is designed as a purely tiling bit of art, usable across any of the UV boundaries.

7. Detail vs. Budget: This is especially important if your texture will need to be used by more than one Level of Detail. Low resolution models often have different UV limitations, and the layout will change. Making textures that can be used by varied UV layouts will sacrifice some detail, but will extend usability, lowering processor, footprint and dev budgets.

8. Prerender vs. Pipeline: Even games can benefit from some prerendering, at least when it comes to baking lighting into vertex coloring. Any preprocessing that we can do will aid the game engine.

9. Schedule vs. Polish: Repeatable textures that get used in many different models (with clever cheats to disguise the reuse) means the asset management and art direction are often easier to work with, since things are centralized. (That's the object-oriented model again.)

The Golden Path: There isn't one! The concepts here are just guidelines that will inevitably need adjusting for each project. Even working for a consistent hardware platform doesn't ensure consistency, as the software engine you use may change over time. What I hope to give here is a toolset and principles rather than a blueprint that will inevitably be outmoded.

No comments: