POLYMASON

How to make low poly trees

A low poly tree is recognized by its outline before anything else. At the distance most game trees are seen, a player can't count boughs or see bark. They see a cone, a ball on a stick, a flat umbrella or a column, and the color. So the method is to get the outline right with as few triangles as possible, then spend what's left on the canopy, because that's what fills the screen.

This guide goes through the method in the order the tree builder uses: species, trunk, boughs, foliage, export. Each step is the same decision whether you make the tree in the builder or by hand in Blender. The articles under it compare the tools that do this for you and cover making the result move in the wind.

  • SpeedTree alternatives for low poly treesWhat SpeedTree is, what it costs since Unity bought it, how Unity and Unreal import its trees, and when a low poly game doesn't need it. Then the free and cheaper tools that make low poly trees, what each exports, and what each is missing.
  • Tree generators compared for game developersEvery tree generator a game developer is likely to find, side by side: what it runs on, what it costs, what it exports, whether it makes low poly trees, and whether it handles levels of detail and wind. SpeedTree, PolyMason, Tree It, Sapling, EZ-Tree, The Grove, and the browser demos that come up in search.

Start from the species' outline

Before any modeling, decide what outline says "oak" or "pine" in your game. A few that matter:

  • Conifers (pine, spruce, fir) are a stack of cones on one straight trunk that runs to the tip. The cones shrink toward the top, and that taper is the whole shape. A fir's skirt reaches almost to the ground. A pine carries its foliage in the top half.
  • Broadleaves (oak, maple, beech) are a crown on a trunk that divides. An oak forks low into a few heavy boughs under a crown wider than it is tall. A birch has a long bare white trunk and a small, loose crown.
  • Columns (Lombardy poplar, Italian cypress) are taller than they are wide by four or five times. Get the proportion right and nothing else needs much detail.
  • Dry country trees (acacia, mesquite) have a flat umbrella on a short, leaning trunk.

The builder starts every tree from a species for this reason. Every control after it is limited to what that species allows, so a birch can't get as fat as an oak and a pine keeps its whorls.

The trunk

Three numbers make a trunk look right.

Height and diameter. Real trunks are much thinner than people draw them. A birch's diameter is about a fortieth of its height, an oak's about a twelfth. A trunk that's too thick makes the tree look like a toy, which may be what you want, but decide it on purpose.

Taper. The tip is narrower than the base, often by half. Without taper the trunk looks like a pole.

Sides. A trunk with five sides looks round from any angle at game distances, and it costs ten triangles per segment. Three looks like a twig, which is right for twigs and wrong for a trunk. More than seven is wasted in low poly.

A trunk that stops exactly at the ground line looks like a post pushed into soil. Sink its foot a little below the ground, so the base never shows as a cut edge on uneven terrain. A little lean and curve make it look grown instead of placed.

The boughs

The boughs decide the skeleton the canopy hangs on, and the species decides most of it.

Where they leave. An oak's boughs leave between about two fifths and half of the way up. A birch's leave in the top two fifths, which is what gives it its long bare stem. A spruce's start near the ground.

Spiral or rings. Broadleaves put their boughs in a spiral up the trunk. Conifers put them in rings, a whorl of four or five at one height, then a gap, then the next ring. Rings stacked as a spiral look wrong immediately.

How the trunk ends. A broadleaf's trunk doesn't run up through the crown. It divides into its top boughs, and they share its thickness between them. A conifer keeps one leader all the way to the tip. A broadleaf with a bare pole sticking up through its leaves is the most common mistake in procedural low poly trees. The builder's leaving from the top setting is how many boughs the trunk divides into, two by default for a broadleaf and none for a conifer.

Angle and length. A bough leaves the trunk at an angle and is shorter the higher it leaves. Upright boughs make a narrow crown, near-level ones a wide one.

Twigs are the same idea one level down: a few thin limbs off each bough, with three sides each. They mostly exist to give the foliage somewhere to hang.

The foliage

Most of a low poly tree's triangles are foliage, and it's what the player sees. There are three ways to build it.

  1. One closed mesh around the whole crown. A skin wrapped around the twigs, or the convex outline of them. This gives the cleanest silhouette for the fewest triangles and suits round-crowned trees seen from a distance.
  2. Separate meshes at the ends of the twigs. Clumps of faceted lumps, cones or crossed planes. This looks like the low poly packs: a canopy of separate angular masses with daylight between them. It costs more triangles and looks better up close.
  3. Tiers on the trunk. For a conifer, a stack of cones replaces the boughs. Five to ten tiers, shrinking toward the top.

Keep the meshes closed. A lump made of crossed planes needs a two-sided material and casts odd shadows, and an open dome shows its inside from below.

The builder's complexity slider is the triangle budget of each foliage mesh. At its low end a lump is a rough stone of a dozen triangles. At its high end it's close to a ball.

Color

Use two greens for the canopy, taken in turn between lumps and never mixed within one. A single green looks flat. Two greens one shade apart look like lighting, which the renderer already does, so make the second green a different green, yellower or bluer, rather than a darker copy of the first. The bark is one color. A birch's is white to silver-gray, an oak's never is.

Leave shading to the engine. Painting a highlight into the colors makes the tree look wrong as soon as the sun moves.

For a whole scene, put every color on one small palette texture so the trees share a material and the engine can batch them. The materials article explains the setup in Unity. Every color the builder proposes has a block of its own on the PolyMason palette, so it exports exactly.

Triangle budgets

Some numbers from the builder's species as proposed, foliage included:

treetriangles
pine132
oak312
birchabout 890
mapleabout 3,200

A background tree can be under 200. A tree the player walks past can be a few thousand. Far away, a tree should become a lower level of detail and then a billboard, which LODs and billboards for low poly models covers.

Export for an engine

Whatever made the tree, the file a game engine wants has the same properties:

  • One mesh and one material, colored from the palette texture.
  • Flat normals written into the file, so the engine doesn't smooth the facets away.
  • Meters as the unit, with the base at the origin and the tree standing upright.
  • The levels of detail as separate meshes, with a billboard for the distance.

The OBJ file format guide explains why each of those matters and how Unity, Godot and Unreal read it. The builder's export is a zip of OBJ, STL and 3MF with the levels of detail, billboards, and the tree's younger, dead, stump and felled versions.

By hand in Blender

The steps are the same with a modeling tool:

  1. Add a cylinder with five sides for the trunk. Scale it to the species' proportions, taper the top, and sink the base below the ground plane.
  2. Extrude the boughs from faces near the top of the trunk, or add three-sided cylinders and join them. For a broadleaf, end the trunk where the top boughs leave.
  3. Add an icosphere at the end of each bough for the foliage, at subdivision 1 or 2. Move a few vertices so no two lumps match. For a conifer, stack cones.
  4. Set every face to flat shading. Assign the bark and the two greens from one palette image.
  5. Apply the scale, put the origin at the base, and export as OBJ or FBX in meters.

An oak made this way takes a good while. The builder does the same steps in a minute, keeps the proportions inside the species, and writes the levels of detail for you.

The other guides

  • Flat shading in Unity for low poly modelsWhy a low poly model goes smooth when it lands in Unity, what the importer's Normals and Smoothing Angle settings do, the three places you can fix it, and how to keep the colors flat as well. Three articles underneath go into the detail.
  • The OBJ file format, explained for game enginesWhat's in an OBJ file and its MTL, what it leaves out (units, axes, colors), how it compares with FBX, GLB and STL, and how to import one into Unity, Godot and Unreal so the model doesn't arrive tiny, sideways or gray.
  • LODs and billboards for low poly modelsHow levels of detail work, what triangle counts are reasonable for low poly trees, rocks, buildings and characters, how to make the levels so the swap doesn't pop, billboards and impostors for the far distance, and the LOD setup in Unity, Godot and Unreal.
  • Free low poly assets for GodotWhere to get free low poly models that work in Godot 4, what each source's license allows, and which formats to prefer. It also covers importing an OBJ or GLB with its colors and flat shading intact, adding a collider, and scattering a forest.

Or build a tree and see what comes out.