---
title: "Low Poly Pixel Art Workflow | Uniform | Sparseal"
url: "https://sparseal.com/uniform/tutorials/workflow-pixel-art/"
language: "en"
description: "Creating a low-poly pixel art model in Uniform involves procedural modeling, UV mapping, and texture painting. Begin by deleting the default object and adding a procedural mesh. Convert it to PolyMesh for editable topology. Use Extrude, Loop, and Merge tools for modeling. Mark UV seams, unwrap, and pack islands, ensuring pixel snapping for accuracy. Texture painting is done in 2D and 3D views with color adjustments. Multiple objects can share a texture set. Transparency is added via layer properties. Finally, export the model and textures using the GLTF exporter."
---

# Low Poly Pixel Art Workflow

Intermediate

pixel-art painting uv mapping modelling rendering

[YouTube video player](https://www.youtube.com/embed/EvFUPhjIr28?si=axroP1WnNiQnrx2h)

Creating a low-poly pixel art model in Uniform involves procedural modeling, UV mapping, and texture painting. Begin by deleting the default object and adding a procedural mesh. Convert it to PolyMesh for editable topology. Use Extrude, Loop, and Merge tools for modeling. Mark UV seams, unwrap, and pack islands, ensuring pixel snapping for accuracy. Texture painting is done in 2D and 3D views with color adjustments. Multiple objects can share a texture set. Transparency is added via layer properties. Finally, export the model and textures using the GLTF exporter.

## Tools Used

All listed tools, procedural and overrides can be found in Uniform's gallery

![Extrude Graph Layout](https://sparseal.com/uniform/assets/tools/extrude_graph_layout.png)

### Extrude Graph Layout

![Loop Graph Layout](https://sparseal.com/uniform/assets/tools/loop_graph_layout.png)

### Loop Graph Layout

![Merge Graph Layout](https://sparseal.com/uniform/assets/tools/merge_graph_layout.png)

### Merge Graph Layout

![Seam Edge Marking](https://sparseal.com/uniform/assets/tools/seam_edge_marking.png)

### Seam Edge Marking

![Move Delta Deformer](https://sparseal.com/uniform/assets/tools/move_delta_deformer.png)

### Move Delta Deformer

![Pixel Snap](https://sparseal.com/uniform/assets/tools/pixel_snap.png)

### Pixel Snap

![Transform Uv Mapping](https://sparseal.com/uniform/assets/tools/transform_uv_mapping.png)

### Transform Uv Mapping

![Pattern Uv Mapping](https://sparseal.com/uniform/assets/tools/pattern_uv_mapping.png)

### Pattern Uv Mapping

![Color Surface Pencil](https://sparseal.com/uniform/assets/tools/color_surface_pencil.png)

### Color Surface Pencil

This is how you can create a low-poly pixel art model from start to finish using Uniform. We will recreate a simple project while utilizing all the tools and features you’ll need to tackle more complex creations.

First, delete the default GeoMesh sphere. Open the outliner, select the object options, and delete it. Now, we can begin creating the model.

Open the Add panel. We will create a mesh object using a procedural mesh preset. All presets in this section provide a procedural mesh object with adjustable gizmos. For this example, select the Box.

As you can see, the dimensions of the cube can be adjusted non-destructively using the gizmos. To start poly modeling, we need to apply the procedural object. There are two options: Apply as GeoMesh and Apply as PolyMesh. Your choice will determine how destructive tools like brushes or trims affect the data. GeoMesh is used for high-poly sculpting with vertex painting, while PolyMesh is used for low-poly meshes with editable topology, UVs, and textures. For this example, and any texture-painting-related workflow, select “Apply as PolyMesh.”

For mesh modeling, you’ll primarily use the following tools: Extrude for extrusions and insets, Loop for adding, sliding, and deleting edge loops, and Merge for edge collapsing and splitting.

Start by selecting the Extrude tool. In Uniform, extrusions and insets work using regions. Regions are colored areas that define separate parts of an object. Currently, there is only one pink region, so using Extrude will attempt to extrude the entire cube at once. To create a new region, hold down M2 and draw over a face. Then, click and drag over that region to extrude it. Next, use the Loop tool while holding down M2 to insert an edge loop in the middle. Finally, use the Merge tool and drag between two vertices to collapse the short edges and create triangles.

Now, we’ll begin the UV unwrapping and mapping process. First, mark the UV seams for the mesh using the “Mark Seam” tool. Uniform offers multiple tools to mark data over edges, and they all work similarly.

Draw over an edge to mark it. Draw over a marked edge to unmark it. After marking an edge, tap to extend the marking using the shortest path. Draw a line upward over empty space to mark everything, or draw a line downward to invert the marking.

Using this tool, mark the seams for unwrapping the mesh into five islands.

To keep the workflow organized, create a new workspace tab for UVs and 2D painting. Select the plus icon, choose “New Arrange,” and then select “UV Paint.” This will set up an arrangement with a 3D view and a 2D texture view in this tab.

Next, create the textures for unwrapping and painting. Open the Object Inspector. The PolyMesh object we’re working on has two data types: a Mesh with 14 vertices and a 1x1 pixel Texture Set. To have more pixels for painting and packing pixel-aligned UVs, create a new Texture Set at the desired resolution. Select the TextureSet options, choose “New Texture Set,” set the resolution to 32x32, name the texture set, and confirm. Note that in Uniform, a Texture Set is not an image but a collection of all data related to layers, masks, and pixels that will generate the necessary images for all material channels upon export.

After this setup, select “Unwrap and Pack Islands” in the Object Inspector to generate an initial UV map. Ignore any artifacts in the 3D view; these are caused by a low-resolution normal map that was automatically created and will be disabled in the next step.

Now, you can manually edit the UV packing in the 2D view. Any deformation tool can be used to manipulate the UVs. However, for pixel art models, UVs should generally snap to the pixel grid. Open the Gallery, search for and select the “Pixel Snap Override.” This will ensure all UV manipulations in the UV editor snap to the pixel grid.

While you can use any deformation tool to adjust the UV map, Uniform includes specialized tools to streamline the process. The UV Transform tool allows you to quickly move islands by dragging from the center, rotate them by dragging from the top, and scale them by dragging from the bottom. Hold down M1 to tweak individual points. Pack the islands as needed.

Instead of manually packing the remaining islands, use the “UV Pattern” tool to copy existing UVs to matching topology. Select the Pattern tool, hold down M2 to match islands, and drag between the two islands to make them overlap.

Now, we’re ready to start painting the model. First, set up the 3D viewport for painting. Hold down the Surface View shortcut and drag to the “Solid Color” corner. You can now use any surface painting tool in the 3D or 2D view to paint the model. The default “Paint” brush, even with a small radius, can be difficult to control for individual pixels, as it’s designed for smooth strokes on high-poly meshes or high-resolution textures. For pixel art, open the Gallery and search for the “Color Surface Pencil” tool. Since this tool will be frequently used, you can hold it down and drag it to the bar launcher. Use M2 to sample colors and reuse already painted pixels.

You may notice that the painted colors don’t match between the 2D and 3D views. This is because Uniform applies a tonemapper by default to the 3D viewport to handle lights and PBR materials. Since most low-poly projects use NPR rendering pipelines, you can disable the tonemapper by opening the Viewport Modules panel and clicking on “Default Tonemapper” to turn it off. From the same panel, you can also tap “Clear Viewport Overlay” to hide wires and the pixel grid while working.

Next, let’s add the top part of the model as a separate mesh object. Follow the same process used to create the current mesh. Open the Add panel, select “Grid,” hold down M1 to transform and position the object, and hold down M2 to snap and rotate the grid. Adjust its size using the gizmos. Use the “Surface View” shortcut to disable viewport unlit shading, making this process easier. As before, apply the new object as PolyMesh.

Open the Object Inspector. If we follow the same process as before, we’ll create a different Texture Set for this new object, which would export to a separate texture. However, for such models, it’s often preferable to use the same texture for multiple objects in the scene. To do this, tap on the Texture Set data type field and select the texture created earlier for the cube. Now, unwrap and pack the islands. Both meshes will share the same Texture Set and layers.

You can now reposition the new UV island in the 2D editor and continue painting using the tools explained earlier.

Finally, you can use the following technique to make pixels transparent and add extra detail without increasing the poly count. Use the “Select” shortcut or tap on the grid object to select it. Open the Layers Inspector, select “Domains,” and set the Color domain’s transparent property to On. You can now use the Pencil tool and hold down M1 to erase a pixel’s alpha and make it transparent.

Once your model is complete, you can export it and its textures to a game engine using the GLTF exporter. In the 3D viewport, open the Exporters tab, add a new exporter, select GLTF, and click the export button in the corner of the GLTF exporter. This will include the mesh and generate all required textures.

This is the basic workflow for creating low-poly pixel art in Uniform. You can also explore other features like procedural layers, masks, color references, and instances to create more complex models. Additionally, you can use the same workflow without pixel snapping to create low-poly hand-painted models with higher texture resolutions.

## More Tutorials

[

![Dynamic brush effects with Brush Overlay modules](https://sparseal.com/uniform/assets/tutorials/brush-overlays.webp)

### Dynamic brush effects with Brush Overlay modules

Advanced

sculpting painting



](https://sparseal.com/uniform/tutorials/brush-overlays/)[

![Manage your scene lighting in Uniform](https://sparseal.com/uniform/assets/tutorials/light-mixer.webp)

### Manage your scene lighting in Uniform

Intermediate

rendering



](https://sparseal.com/uniform/tutorials/light-mixer/)[

![Projection Painting using Stencils](https://sparseal.com/uniform/assets/tutorials/projection-painting.webp)

### Projection Painting using Stencils

Intermediate

painting



](https://sparseal.com/uniform/tutorials/projection-painting/)[

![Using References to share colors and materials](https://sparseal.com/uniform/assets/tutorials/references.webp)

### Using References to share colors and materials

Intermediate

painting workspace



](https://sparseal.com/uniform/tutorials/references/)[

![Viewport Shading with Surface Views](https://sparseal.com/uniform/assets/tutorials/surface-views.webp)

### Viewport Shading with Surface Views

Beginner

workspace painting sculpting rendering



](https://sparseal.com/uniform/tutorials/surface-views/)[

![Setup for Retopology in Uniform](https://sparseal.com/uniform/assets/tutorials/retopology.webp)

### Setup for Retopology in Uniform

Advanced

modelling



](https://sparseal.com/uniform/tutorials/retopology/)

## Structured data

```json
[
  {
    "@context": "https://schema.org",
    "@graph": [
      {
        "@type": "Organization",
        "@id": "https://sparseal.com/#organization",
        "name": "Sparseal",
        "legalName": "Sparseal SL",
        "url": "https://sparseal.com/",
        "description": "Sparseal develops CGI software for digital content creation: sculpting, modeling, texture painting, retopology, UV unwrapping and baking.",
        "logo": "https://sparseal.com/assets/favicon/android-chrome-512x512.webp",
        "sameAs": [
          "https://bsky.app/profile/sparseal.bsky.social",
          "https://discord.com/invite/7ZSxK7MAkM",
          "https://www.youtube.com/@sparseal3016",
          "https://x.com/sparseal"
        ],
        "contactPoint": [
          {
            "@type": "ContactPoint",
            "email": "support@sparseal.com",
            "contactType": "technical support"
          },
          {
            "@type": "ContactPoint",
            "email": "info@sparseal.com",
            "contactType": "general inquiries"
          }
        ]
      }
    ]
  }
]
```
