Low Poly Pixel Art Workflow
Tools Used
All listed tools, procedural and overrides can be found in Uniform's gallery
Extrude Graph Layout
Loop Graph Layout
Merge Graph Layout
Seam Edge Marking
Move Delta Deformer
Pixel Snap
Transform Uv Mapping
Pattern Uv Mapping
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
Manage your scene lighting in Uniform
Projection Painting using Stencils
Using References to share colors and materials
Viewport Shading with Surface Views