Wooden Box Non-Squared Unwrapping

Making Of / 05 July 2021

- Non-Squared UVs -

My typical approach to UV unwrapping props in the past has been; I figure out the texel density for a 2k texture and fill the 0-1 space as much as I could, if a lot of space was left empty I would fill it with other props and take them as a group to be baked and textured collectively.

This did reduce waste with regards to texture amounts across several assets and such but carried more issues in terms of performance in Painter texturing so many props at once and in-engine if one asset had some changes made to it within the shader unless I wanted that change across all of the assets I would need more than one instance of the said shader. I typically didn't even fill out the space of the UV's.

The example below demonstrating as such.

There isn't a lot of information online as far as I could find talking about this approach, I first learned about it with some of Assassins' Creed Odysseys trim sheets, but really started to understand its implementation when looking at asset work for Dishonored and putting my work into action.

[Asset work by Adrien Thierry - Link]

- Making non-squared Uvs -

For the Corridor Scene which this asset is a part of, I had established a texel density of 1024 pixels per meter.

In Blender, using a 2048 texture with this texel density, the UV unwrap on the box leaves a lot of unused space. Meanwhile, going for a 1024 texture with the same texel density, the UV extends outside of the box 0-1 space. See below:


Knowing I am keeping the width 1024 pixels I set the texel density as such and then pack. I keep the UVs within the width of the texture and extend out vertically. It's then a matter of scaling vertically by half and then go about manually packing. So long as the texture remains a power of 2, i.e. 1024 x 2048/512, etcetera mipmapping will work in the engine and the texture quality won't appear squashed or distorted.

In Painter, it's important to export as the final resolution so that the texture on import to the game engine registers it as such. Substance painter will still display the texture as a squashed square in the UV screen, but it does not negatively affect the texturing.

- Lightmap UV's -

My typical approach to lightmap uvs of the past has been to do an unwrap and then automated pack in a second UV set. If the bake didn't work I would up the lightmap resolution though that wouldn't fix the issue 100% of the time.

I started to appreciate lightmaps once I understand that the grid present in UE's lightmap viewer is representative of the pixels for the texture resolution. Using grid textures taken from the video below I have started to take a better approach to my UV packing.

Depending on the scale of the asset I'll typically start with a 64x64 texture, 2 pixels at least of padding between each island and around the edge.

A useful video on lightmapping: https://youtu.be/pUk-EUV_pbo