Home Technical Talk

Maintaining Texel Density Across Multiple Props - How To

PredatorGSR
polycounter lvl 14
Offline / Send Message
PredatorGSR polycounter lvl 14
The recent thread asking how to maintain texel density got me thinking, as many of the answers were needlessly complex or the opposite, i.e. just eyeball it.

There is actually a fairly accurate and artist friendly way to match a specified texel density, so I thought I would take the time to explain the method as well as upload the materials required.

Texel density targets are usually given by art directors or documentation as being relative to ingame units. For example, you should use 1024 of texture space per 256 unreal units.

The first step is to create a plane in your 3D package that is the equivalent of 256 unreal units, and assign a 1024x1024 grid to it. Then import your asset that has already been uv mapped into the scene. At this point, you simply need to assign another grid texture to the object. You usually have a good idea on the size you'll need, so for example assign a 1024 grid to the object. In an orthographic view, view both the plane and the asset and see how the grid squares compare. If the asset has too large of a texture, assign a smaller grid, such as a 512, until you match them as close as possible.

Remember, you can use rectangular/half sized textures as well, even if if you create a square texture. For example, you can work at 1024x1024, and then resize the output texture to 1024x512, and the square uv layout will stretch it back, and give you the equivalent of a 768x768 texture. This allows you to more precisely match the texel density target. Knowing this, you can assign a 768x768 grid for texel density matching to see if you should use a half size texture. If you actually layout out your uvs as a rectangle, that is slightly different, as it will require an actual rectangle grid for viewport matching. I've included the psd so you can create rectangle grids as need, remember to crop to the specified size, instead of resizing the image, so that the squares remain the same size.

Here is an example of a fairly complex prop that needs to be matched to a texel density. I duplicated and scaled it multiple times to make it more difficult and demonstrate the flexibility of this method. I simply created a bunch of lambert shaders and applied different sized grid textures. Using the floor plane as my texel density target, I applied different shaders to the objects until they roughly matched the floor.

persp.jpg

topview.jpg

When starting a large project or working with multiple people, it is beneficial to create a scene with the texel density target, as well as shaders that have all the grid sizes. That way any artist can bring their asset into the scene and assign shaders to the object until they match the specified texel density. It would also be a good way for a lead to check texel density across a scene to spot any assets that stray too far from the standard.

I've included a zip file that includes color coded grid .tgas from 128 - 2048 with all half sizes. I've also included the source photoshop file so people can edit it at will. There are no limitations on what you can do with it.

http://www.konradbeerbaum.com/texturegrid.zip

Any suggestions or clarifications are welcome. This can also be added to the wiki if requested.

Replies

  • moof
    Offline / Send Message
    moof polycounter lvl 7
    To be honest, I think it's more important that things look about right than maintaining texel congruence between assets.

    Everything doesn't need the same texel density throughout. What you really want to watch out for are having little details muddied by texture size. If you have tons of little bolts for example all over your model, and they are getting shredded by your texture size; make a plane with transparency and have a high res bolt decal on your texture to stick over all over.
    At the end of the day mipping eats everything up anyways, it only matters when you're near your assets and you can compare the details.


    So what I guess I'm getting at is keeping the fidelity levels congruent (where you can see the comparisons). Texel Density /= Fidelity, but it's a start.

    So for example, your big satellite tower- in an fps, depending on how big the thing is, if the top pieces are a story or more above you, you never really need to see them at full rez. You could keep the bottom half a bigger texture than the top, and you'd probably never notice. This way you're saving memory by not having to load in a 2048 every time you see this thing.
  • PredatorGSR
    Offline / Send Message
    PredatorGSR polycounter lvl 14
    Sure, you don't always want the same texel density. But if you vary the texel density, it should be done on purpose, not because 2 artists aren't using the same standard. This is just a good way to accurately view and compare texel density. Thats all.

    In the example, the radar array is roughly 1.5-2x the height of a character. it's just an example that I grabbed though.
  • throttlekitty
    Offline / Send Message
    throttlekitty ngon master
    Thanks for the info, good stuff!

    Since not everyone works with Unreal, how big is an Unreal Unit compared to centimeters or inches?
  • PredatorGSR
    Offline / Send Message
    PredatorGSR polycounter lvl 14
    I don't know off the top of my head, I just used Unreal as a hypothetical example. The UDK master thread is probably a good place to check. You typically have to set up your 3d package to use the same unit scale as the engine you are using.

    UDK Master Thread
    http://boards.polycount.net/showthread.php?t=67290
  • mukuluppal
    Wow man! You did explain this very well.Thanks. :)
Sign In or Register to comment.