Trim Textures - 3D Modeling and Unwrapping Trim Sheets

This article covers the topic of modeling and unwrapping meshes for use with trim textures (or trim sheets). Trim textures are a special type of texture design that you can reuse across multiple objects. This is a technique that can greatly simplify the process of making custom meshes and can save a tremendous amount on memory costs while unifying the aesthetics of an experience.

This article assumes that the reader has some basic knowledge of 3d modeling. If you’d like a refresher, please take some time to review my previous article, Modeling 101 in Blender (Box Modeling).

Table of Contents
  1. What are Trim Textures
  2. Why are they Useful?
  3. How are they Created?
  4. Modeling for Trim Textures
  5. Unwrapping UV to Trim Textures
  6. Conclusion

What are Trim Textures

Trim textures or trim sheets are game textures that combine multiple various elements of an object into a single texture. They are tiled either horizontally or vertically and can be applied to specifically designed 3D meshes that have been UV’d for trim sheets.

Not all textures are the same and it’s important to understand when to use the right type. Trim textures are textures that are designed to be reusable, performant, and high quality that can be applied to a designed set of meshes.

Other types of textures can include:

  • Tiling textures that can tile on both axes. This is useful on a wide variety of meshes and surfaces, such as terrain (grass, sand, mud) or repeatable surfaces like architecture (brick, plaster, marble). See How to Create Tiling Textures for a primer on creating this common texture type.
  • Unique 1-to-1 textures that don’t tile at all. These are completely unique and are designed for a very specific mesh, such as a character, clothing, or something with a uniquely sculpted shape, like a statue or tool.
  • Texture atlases like those used for foliage or other decorative elements meant for re-use with a specific shape.

Why are they Useful?

The primary reason to use trim textures is to create reusable high quality textures that don’t bloat your texture memory usage. Trim textures also help maintain visual or stylistic consistency across a full library of various 3D meshes. Once you become familiar with incorporating trim sheets, you can greatly accelerate your mesh creation and texturing process.


Trim sheets are an industry standard technique to create many unique, yet thematic, assets with minimal work and memory requirements.

How are They Created?

Trim sheets can be created in many different ways. Some artists create them using a combination of 3d modeling software like Blender or Maya, alongside Photoshop or GIMP. Others use procedural texture makers like Substance Designer or Material Maker. To learn a bit more about the process of planning and creating a trim sheet in large projects, you can read more from the Beyond the Dark writeup on Trim Sheets - or stay tuned for future articles here!

Modeling for Trim Textures

Now that you know what a trim sheet is, this lesson will now focus on modeling methods that make the best use of trim textures.

As always, when you first design your models, start by employing typical modeling methods by creating silhouettes and shapes that represent your vision. When designing with trim sheets in mind, you can begin implementing additional techniques for trim textures, such as:

  • Ensuring proper edge flow to accommodate trim sheet strips.
  • Set up edges to eliminate harsh UV terminations.
  • Design how tiling textures can supplement your trims.

The following are modeling tips and techniques to ensure your model can support trim textures:

Quads vs Tris

Model primarily in “quads” (four-sided polygons) that are connected linearly along one axis for effective unwrapping. Triangle polygons will interrupt many automatic unwrapping features, and also create stretching.

Adding Strips

As a general rule, I suggest terminating the edges of large, unresolved polygons as strips to help give the illusion of a built object, and to allow surfaces to have logical and believable terminations. Usually this can be done by inserting a loop.

Insetting for Edges

Sometimes when creating a mesh, you may have a large, blank area that doesn’t terminate logically into a looped edge. When this is the case, I recommend using the inset function across these large surface areas to allow you to UV a thin strip edge in a continuous ring of polygons. This is especially useful on content with large panel sections, or sections of a mesh that are continuous but do not have a shape that is easily UV’d to a section of trim. Insetting these polygons provides a newly created strip of quads that can be easily UV’d to a section of the trim map to create a satisfying edge or transition. By adding the inset, you create a naturally looking edge that can take advantage of your trim sheets.

Examples:

Pairing with Tiling Textures

If your trim sheet texture doesn’t have any areas that are large and featureless, consider using two materials on your mesh - a tileable texture and a trim texture. Obviously, it is more ideal to use less textures in an experience in order to keep the memory footprint as low as possible, but sometimes it is unavoidable in order to achieve a specific aesthetic goal. It can still be much more efficient to reuse 1-2 textures for multiple objects rather than creating unique textures for each object.

If you find yourself with objects with large featureless surfaces, use tiling textures across the lesser detail space, and then use trim textures to create paneled edges, junctions, details, etc. This is a powerful way to create great looking assets and enhance your scene.

Avoid Over Trimming

Be careful not to add TOO many loops to your meshes. Firstly, it’s important to be as efficient as possible and judicious with your vertex counts, since more vertices on a mesh translates directly into more memory consumed by each asset. Secondly, using too many trims across the surface of a mesh can lead to a stripey/banded aesthetic that is referred to as “over-trimming” where trim has been overused. This can look extremely busy and unrealistic.

Unwrapping UV to Trim Textures

After modeling your assets to take full advantage of trim sheets, use the following tips, videos, and instructions to properly unwrap UVs of those meshes in a process we’ll call trim mapping.

Laying Out Strips to the Trim Sheet

When unwrapping meshes to trim sheets, the fundamental principle at play is to lay out your UV islands along the strips. The modeling tips from earlier should help facilitate effective and efficient unwrapping to the very specific form factor of trim sheets (strips). Ideally, your meshes will be composed of four sided polygons (quads) that play nicely with many of the automatic unwrapping and straightening tools in Blender.

Texel Density

Texel density refers to a measurement unit that describes the number of pixels per unit of the the 3d surface area of your mesh. When unwrapping your mesh to trim sheets, it is important to keep texel density in mind, meaning that you want to try to keep a consistent scale of texture pixels across the surface of your 3d mesh.

However, due to the nature of using this method, sometimes texel density cannot be perfectly consistent across a mesh, but an effort should be made to minimize texel density inconsistencies. In these cases, one thing an artist can do is to author their trim sheet textures to contain as little surface detail as possible making the texel density disparity less obvious.

Window Layout for Effective Unwrapping

When unwrapping a mesh in Blender, drag out another ‘Area’ by splitting your 3d Viewport in half by holding the cursor over the area’s corner. The cursor will change to a cross (+), then click the LMB to activate the split, and drag the cursor to resize the area to your liking. Then, in the top left corner, click the Editor Type dropdown, and change it to UV Editor.

This arrangement will allow you to operate on your mesh, make selections, and see those selections updated and reflected in real time in the UV window while you unwrap your mesh.

Selecting Loops and Rings

One of the most important things to know how to do when unwrapping for Trim Sheets is how to make selections efficiently in Blender. To select the faces of a mesh, select the mesh in the 3d Viewport, enter Edit Mode by pressing [TAB], and press 3 to enter Face Selection Sub Mode.

Typically, faces are selected by using LMB clicks, or LMB drag selection. However, there are a few ways to select loops and rings of faces to speed up workflows:

  • Hold SHIFT while selecting individual polygons to add to your selection. Click a selected face, again, while still holding SHIFT to deselect a polygon in your selection.

  • Hold ALT while pressing LMB on a face will select that entire loop of faces, until the selection runs into any polygon that is not a four-sided quad (a triangle will interrupt/stop this selection). To select the correct direction for your loop selection, bias your cursor toward any edge of the polygon you’re starting your selection on, and the loop will select sequential faces in that edge’s direction.

  • Hold SHIFT in addition to ALT to combine your selections, and select a multitude of loops around your mesh.
  • Hold CTRL while selecting with LMB to execute the ‘Shortest Path’ selection. First, select any polygon, then, hold control and select any other polygon, and the shortest path of polygons between your selection will be selected.

Quick Workflow for Laying Out Quad Strips of UV’s

Creating strips can be daunting initially but can become VERY fast when you get the hang of selecting your intended strips. The following steps cover:

  • Smart unwrapping meshes.
  • Finding/verifying/adjusting a rectangular UV Polygon from your selection.
  • 'Following’ that polygon to make your strip.

When unwrapping your mesh,

  1. Identify the area of your mesh you want to UV to a strip on the Trim Sheet, and select those faces using the selection methods shown above. Those selected faces will then be reflected in the UV Editor Window.
  2. With your selection ready, mouse over the UV Editor Window and press A to Select All. This will select all of the polygons so you can operate on them.

  1. Press U to open the Unwrap Context Menu and press S to choose Smart UV Project.
    • A new dialogue will pop up to choose some parameters for the Smart UV Project operation - the default values should be fine. Press ENTER to accept. Your selection will be laid out in the 0-1 space of the UV Editor, with as little stretching/distortion as possible.

  1. Select one of the polygons by clicking the LMB. Right-click anywhere in the UV Editor Window to open the UV Context Window and press F to Follow Active Quads. This will automatically stitch together all of the polygons that you selected to edit, and arrange them in a straight line.

If the polygon you choose to “Follow” here is not perfectly rectangular

If the polygon you choose to “Follow” here is not perfectly rectangular (all sides are perpendicular to one another) then the resultant output will have a distortion that is proportional to the selected polygon. To fix this, simply select each edge of the polygon you want to use as your base polygon to ‘Follow’ and right-click to open the UV Context Window and press A to Align Auto. This will straighten out the edge to be either horizontal or vertical, depending on that edge’s current orientation. Once you have straightened out all four sides of the polygon, repeat the step above to follow that polygon for a consistent and rectilinear result in the UV window.

  1. Press A to Select All in your UV Editor Window once more to select your newly laid out strip.

    • If the Follow function has laid out your UV strip in the wrong direction (in the example above, the strip is laid out vertically, but the trim sheet’s strips are horizontal…) press R for Rotate and then type '90’ to rotate the strip 90 degrees so the orientation matches your trim sheet.
  2. Press G to Grab the strip and move it into position over your desired Texture area on the trim sheet,

  3. Finally, press S to Scale the UV strip to match your intended area.

Remember, this workflow can become extremely quick once you get the hang of selecting your intended strips, Smart Unwrapping them, finding/verifying a rectangular UV Polygon from your selection, and ‘Following’ that polygon to make your strip.

Manual Alignment for Non-Quad Polygons

Sometimes when creating a mesh and unwrapping, you may find that you simply cannot achieve the specific aesthetic you want without including some triangles or ‘n-gons’ (polygons with more than 4 vertices). In these cases, you will have to manually arrange some of your UV’s, since the Follow tool ignores anything that is not a four-sided polygon or “quad”.

When you encounter a triangle that interrupts the flow of one of your modeled strips, try to use the Follow tool as much as possible, and then manually align the triangle to your strips. The video below demonstrates. In the video:

  1. The video shows an artist using “Loop Select” at first, but notices that it selects too many polygons, so they deselect and use “Shortest Path” selection to get the specific selection area needed.
  2. The same process is repeated from the prior step [using the Smart Uv Project, followed by ‘Follow’ tool] but the single triangle is excluded from that operation as explained above.
  3. The artist arranges the two separate UV strips to be near one another, and then moves the triangle into position to match.
  4. Finally, by selecting the bottom row of vertices, and right clicking to show the Context Menu, the artist presses A to Auto Align that row of vertices, and repeats that process on the top row. This aligns both UV strips with one another, and also aligns the triangle to match, even though it is not a quad.

In this next video, the artist has moved the selected UV’s to a different part of the trim texture - an area that has a rapid series of vertical lines that looks like “vents”. Moving the UV island to this area highlights a few errors that need to be fixed; a polygon that has a lot of stretching/distortion, and an inconsistent texel density across the strip of UV’s.

To fix this, the distorted polygon is selected, and one of the vertices is repositioned to reduce the distortion introduced by the Follow tool. Then, the rest of the UV’s on that island are ‘Scaled’ horizontally, in order to match the texel density of its neighboring UV islands.

Note - When trim mapping, the best practice is to avoid UV seams wherever possible. In the previous example, moving the UV islands with the triangle connection to a part of the texture with vertical stripes makes it much more obvious that this UV method has introduced a visible seam in the mesh UV’s. Sometimes it cannot be avoided, but when possible, move your UV islands to parts of your texture that make these seams less noticeable, if your visual aesthetic allows for it.

Unwrapping Pie-Shaped Polygons to Trim Strips

Sometimes while creating a mesh, you may find that you have to terminate the tops of round objects or cylinders into ‘pie shaped’ collections of many triangles. This shape will obviously not be able to UV in a straight island over the top of a strip on a Trim Sheet, but you can still lay out all of these triangles together to achieve an interesting result

One way is to manually select and rotate each triangle so the the tops, or innermost vertices of the triangles are all in a line horizontally, and the outer vertices are in another line horizontally. You can even lay them all on top of each other:

  1. Arrange many triangles in this way to Smart UV Project them, which will create a circle.
  2. Select half of the triangles with a click-and-drag selection.
  3. Press Y to Split that selection off, and rotate them into position directly on top of the un-selected Triangles.
  4. Repeat, until they are all stacked on top of one another in a single “slice”,
  5. Select each grouping of vertices and press S to Scale and press ‘0’ to put them all on top of one another, so they are all perfectly aligned, and then move into position on a UV strip. You can get creative with the neat effect this method has by choosing an interesting spot on the Trim Sheet.

Conclusion

With the understanding of what a Trim Texture is, why it is a useful method for creation, along with the simple modeling techniques and UV techniques applied, your mesh modeling can be more successful than ever in terms of efficiency, variety, and simplicity.

While this article is by no means completely exhaustive, we hope that these techniques will be useful to you as you continue on your 3d modeling journey. If any clarifications are needed, or if there are any questions, please feel free to post them here and I will answer them to the best of my ability!

Hotkey Appendix

Select
Inset I
Loop Cut and Slide CTRL + R
Select Loop Hold ALT + LMB
Multi Select Hold SHIFT + LMB (combines with other selection methods)
Select Shortest Path LMB, then Hold CTRL + LMB Click on another face
Select All A
Unwrap Context Menu U
Smart UV Project S (with context menu open)
Follow Active Quads With a quad selected, press F (with context menu open)
Align Auto A (with context menu open)
Split Selection Y
Stitch Selection ALT + V
Grab (move) G
Rotate R
Scale S
17 Likes

This is awesome!
And quite frankly maybe also one of the most underrated and most underutilized techniques as far as I’m aware.

Learning how UV mapping works and how to reuse parts of a texture is such an useful thing.
Can be a bit tedious to do at times but it’s a great way to keep your textures looking sharp without needing high resolutions.

Low-resolutions + re-using same parts of a image = better overall performance + consistent look.

2 Likes

as a blender beginner, thanks, that pretty useful

one of my issue was texturing, I guess that it’s fixed now

2 Likes

Reusable texture shells are such an underappreciated optimization habit! Reduces the total number of unique Asset IDs in a game’s memory without sacrificing details.

3 Likes

Trim Textures is something advanced that I’ve seen around Source 2.

When combining this technique on 3D Models, they refer to it as “Hotspot Texturing”.

It was even taken to a higher level, where you’d have paintable Trim Textures that are overlaying trim textures. If you manage to standardize a Trim Texture layout, you can swap them out. But this can also be difficult to do. You’d literally have to standardize them. Because the positions have to match exactly.

In a way, where the Photo Editing Software does not Crash.

If I look at this I could imagine this as multiple textures combined into one, or similar, so you can use the same Material without separating the Mesh onto a different Material.

Now, this would depend on the Texture Resolution as well. A lot.

 

Though I do have something I wonder.

What was first, the Trim Texture or the 3D Model?

:thinking:

 

Trim Textures remind me of Tile Sets, and here it’s the exact same thing, except that you’re mapping things from the Trim Sheet onto a UV or on a 3D Model surface.

You can also probably save memory. Though if all the textures look the same for every metal object you have that is not somehow the same thing. THen maybe it’s going to be boring.

I think Trim Sheets are mostly used for the environment, e.g. Walls and Wall Decorations.

Great post - and to answer your question - it sort of depends. I tend to create my Trim Texture first and model to it. This helps me inform my mesh geometry more effectively and consistently across an entire suite of assets, and helps me maintain a consistent style.

It can be done in reverse though… and for those who prefer that method, this is why I suggest to leave some space open on your trim sheet to add more elements later on, in case you model something that you didn’t plan for beforehand, you can add it on to the empty part of the atlas later.

3 Likes