Skip to content

Repository files navigation

Pixel UV Tools for Blender

A Blender addon for pixel-perfect UV editing. Every operator is reachable from the 3D Viewport's UV menu, so packing, snapping, and unwrapping pixel-aligned UVs never requires opening the UV editor. The same operators are also available from the UV Editor.

Installation

Two options:

From a release zip (recommended for most users)

  1. Download the latest pixel-uv-tools-vX.Y.zip from the Releases page.
  2. In Blender, open Edit > Preferences > Add-ons > Install from Disk... and select the zip.
  3. Enable Pixel UV Tools in the add-on list.

From source (for development or to track main)

Clone the repo directly into your Blender scripts/addons/ directory:

cd <blender-config>/scripts/addons
git clone https://github.com/Capacap/pixel-uv-tools.git

Then enable Pixel UV Tools in Edit > Preferences > Add-ons. Pulling the repo updates the addon in place.

Operators appear under UV > Pixel UV Tools in both the 3D Viewport (Edit Mode, U) and the UV Editor.

Recommended workflow

For a typical pixel-art model:

  1. Select the mesh faces you want to unwrap.
  2. Run Pixel Unwrap. For symmetric meshes Pixel Unwrap (Centerline) gives better results, and Pixel Unwrap (Active Edge) suits flat surfaces where a specific edge should define the UV baseline.
  3. If you re-edit the mesh or add islands later, run Pixel Pack Islands to re-pack to the pixel grid.
  4. For fine adjustments use Pixel Move UVs, Pixel Scale UVs, or the snap operators.

Every operator takes a Texture Size (or Resolution) parameter that defines the pixel grid. Set it to the resolution of your target texture.

Subpixel islands

At low texture sizes some islands come out smaller than a single pixel. Inflating them to a whole pixel count would turn long thin islands into squares, so every operator follows the same rule instead:

  • Islands with a side smaller than one pixel are scaled uniformly from their larger side, so their true proportions survive. Islands smaller than a pixel on both sides keep their exact size.
  • Subpixel sides are placed inside a single texel row or column, so they reveal as few partial pixels as possible.
  • Islands collapsed to zero width or height (a common trick for giving a face a single flat color) are never resized, and are centered inside a texel so they sample one color unambiguously.

Subpixel islands render as solid strips or single-texel colors. Pixel Pack Islands and the unwrap operators report a warning when this happens; increase the texture size if those islands need paintable detail.

Operators

Transform UVs

Pixel Move UVs

Translates the UVs of selected faces by an integer number of pixels. When invoked without arguments it enters an interactive drag mode where 20 screen-pixels of mouse movement equals one texture pixel. Confirm with LMB or Enter, cancel with RMB or Esc.

  • Texture Size: width and height of the target texture. Default 256.
  • Delta X, Delta Y: pixels to move on each axis. Default 0.

Pixel Scale UVs

Rounds the bounding-box size of the selection to an integer pixel count, then adds a pixel delta on each axis. Scales around the selection centroid.

  • Texture Size: default 256.
  • Delta X, Delta Y: additional pixels to add to the bounding-box width and height. Default 1.

Snap and pack

Pixel Snap UVs

Snaps every UV vertex of selected faces to the nearest pixel corner. Best for hard-surface meshes. Tip: run it at twice the target resolution to preserve features smaller than a pixel, then snap again at the real resolution.

  • Texture Size: default 256.

Pixel Snap Islands

For each selected UV island, rounds the bounding box to an even pixel count and centers the box on a pixel corner. Keeps island proportions pixel-perfect without squashing small details. Islands smaller than one pixel keep their true proportions (see Subpixel islands).

  • Resolution: default 256.

Pixel Pack Islands

Packs islands, snaps their dimensions to the pixel grid, re-packs to close the gaps created by snapping, then snaps island positions to pixel corners. A drop-in replacement for Blender's Pack Islands when the target is a fixed-resolution texture. Islands smaller than one pixel keep their true proportions (see Subpixel islands).

  • Texture Resolution: default 256.
  • Pixel Margin: margin between islands in pixels. Default 2.
  • UDIM Source: forwarded to Pack Islands. Default Closest UDIM.
  • Rotate, Scale, Merge Overlapping, Lock Pinned Islands, Pin Method, Shape Method: forwarded to Pack Islands. See Blender's Pack Islands documentation for details.

Unwrap

Pixel Unwrap

Runs Blender's angle-based unwrap over the selected faces (respecting seams and pinned UVs), then packs and snaps the result to the pixel grid with the same pipeline as Pixel Pack Islands. The simplest way to get pixel-aligned UVs on any mesh. Start here if you are unsure which unwrap operator to use.

  • Texture Size: default 256.
  • Packing Margin: pixels between islands. Default 2.

Pixel Unwrap (Active Edge)

Pins the active edge along the U axis using its 3D length, then runs an angle-based unwrap over the selected faces. Use this when a specific edge should become horizontal in UV space. If no faces are selected, the operator selects faces reachable from the active edge through non-seam edges.

Pixel Unwrap (Centerline)

Pins vertices on the X = 0 plane to a vertical line in UV space, runs an angle-based unwrap on each seam-delimited island, packs the result, and snaps everything to the pixel grid. Designed for symmetric meshes (characters, weapons) where the silhouette's center should land on a texel boundary.

  • Texture Size: default 256.
  • Packing Margin: pixels between islands. Default 2.
  • Shape Method: shape metric used by the packing step. Default Bounding Box.
  • Centerline Adjustment: Pixel Corner places the centerline on a texel boundary, Pixel Center offsets by half a pixel so the centerline runs through texel centers. Default Pixel Corner.

Pixel Smart Follow Quads

For each UV island, picks the quad whose 3D shape is closest to a regular rectangle, rebuilds it as a rectangle whose side lengths are rounded to an integer pixel count, then runs Follow Active Quads from that seed. The island is translated so the seed quad's anchor corner lands on a pixel corner, which keeps the full quad grid aligned to the pixel grid. Useful for gridded surfaces (tiled floors, machinery panels) where Follow Active Quads already gives a clean layout but you want the cells to match texel boundaries.

  • Texture Size: default 256.
  • Edge Length Mode: forwarded to Follow Active Quads. Even spaces all edges equally, Length and Length Average weight by 3D edge length. Default Even.

smart follow quads

Utility operators

Pixel Move Islands and Pixel Scale Islands are registered but not shown in the UV menu. They are used internally by Pixel Pack Islands and can be invoked by name through F3 search if you need them directly.


example 1 example 2

About

Tools for creating pixel-perfect UVs in Blender

Topics

Resources

Stars

11 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages