The 3D Handbook
Topic

Anatomy of a polygon mesh

What a polygon mesh is made of, how a game engine stores it, and why the vertex count in the engine is higher than in your modeling tool.

modelingfundamentalstopology

A polygon mesh is a 3D surface built from three kinds of element: points called vertices, straight lines between them called edges, and flat areas between those lines called faces (Blender 3.1 Manual: Mesh Structure). Every model you put in a real-time game, from a pebble to a cathedral, reaches the graphics card in this form.

The mesh in your modeling tool and the mesh the engine draws are not quite the same thing. Knowing the difference explains a lot of puzzling numbers, shading problems and export settings.

A cube drawn in perspective. One corner point is labelled vertex, one line along the bottom right is labelled edge, the top square is shaded and labelled face, and two arrows sticking straight out of the top and right faces are labelled face normal.
The parts of a mesh on the simplest closed shape. A cube has 8 vertices, 12 edges and 6 faces.Diagram by the handbook author
Three identical grid cubes; the first has one vertex marked, the second one edge, the third one face.
The three building blocks of a mesh, each marked in orange on the same cube: a vertex (a point), an edge (a line between two vertices) and a face (a surface bounded by edges).Rendered in Blender 5.2 (Cycles) by the handbook author

#The three building blocks

A vertex is "a single point or position in 3D space" (Blender 3.1 Manual: Mesh Structure). On its own it is a coordinate, with no size or surface.

An edge "always connects two vertices by a straight line" (Blender 3.1 Manual: Mesh Structure). Edges are the wires you see in wireframe view. There are no curved edges in a polygon mesh; a curve is only ever an approximation made of many short straight edges.

A face is the area enclosed by three or more vertices. Blender's manual names the three cases: three vertices make a triangle, four make a quad, and more than four make an N-gon (Blender 3.1 Manual: Mesh Structure). Faces are what actually render. A mesh of only vertices and edges is invisible in a game.

These three elements describe the shape. The way they are connected is called topology: which vertices are joined, how edge loops run, and where poles interrupt them (Blender 3.1 Manual: Mesh Structure).

#Vertex attributes

To a game engine, a vertex is much more than a position. Unity describes vertex data as "a collection of positions in 3D space, with optional additional attributes" (Unity Manual 2022.2: Anatomy of a mesh). The common attributes are:

Unreal's static mesh editor shows how many UV channels a mesh has and notes that "unique, non-overlapping UVs are required for shadow mapping" (Unreal Engine Documentation: Static Mesh Editor UI). That second UV set is the lightmap UV channel, and it is another attribute every vertex must carry.

A small patch of surface with one highlighted vertex and its normal arrow. A dashed line leads to a card listing the vertex's data - position, normal, tangent, UV sets, colour and bone weights.
In the engine, each vertex is a bundle of values. If any value must differ between faces that meet at a corner, the corner needs more than one vertex.Diagram by the handbook author

#Triangles on the graphics card

Modeling tools let you work with quads and n-gons, but the GPU draws only triangles. Epic's import documentation states that meshes "must be triangulated as the graphics hardware only deals with triangles" (Unreal Engine Documentation: FBX Static Mesh Pipeline). Direct3D, for example, lists only points, lines and triangles (as lists or strips) as its basic primitive types; there is no quad (Microsoft Learn: Primitive Topologies).

Triangles have a useful property: three points always lie on one plane. As Blender's manual puts it, "Triangles are always flat and therefore easy to calculate" (Blender 3.1 Manual: Mesh Structure). A quad's four corners can be bent out of plane, and then there are two different ways to split it. That choice is the subject of triangulation.

#How the engine stores a mesh

You do not need to write graphics code to follow this. A mesh is stored as two lists.

  1. The vertex buffer is a list of vertices. Each entry holds all the attributes above. Unity keeps them in parallel arrays of equal length, so a mesh with 10 positions also has 10 normals, 10 UVs and so on (Unity Manual 2022.2: Anatomy of a mesh).
  2. The index buffer is a list of whole numbers that point into the vertex list, three at a time, one triangle per three numbers. Unity's example: indices 0, 1, 2, 1, 2, 3 form two triangles that share two vertices (Unity Manual 2022.2: Anatomy of a mesh).

The index buffer exists so that shared corners are stored once. A rectangle drawn as two separate triangles needs six vertices, but with indices it "only needs four vertices" (OpenTK Learn: Element Buffer Objects).

#Split vertices

A vertex in the vertex buffer can hold only one value per attribute. As one Polycount poster summed it up, "A single vert can only have one normal and one UV coordinate" (Polycount forum: Vertex Count vs Triangle Count). Unity's manual says the same: "a vertex must be split if it has multiple normals, UV coordinates or vertex colors" (Unity Manual: Modeling characters for optimal performance).

So wherever faces that meet at a corner need different values, the engine stores extra copies of that corner. The usual causes are:

The result is that "the vertex count in Unity is usually higher than the count given by the 3D application," because modeling tools count "distinct corner points" (Unity Manual: Modeling characters for optimal performance).

Left, a cube with 8 corner dots labelled 8 vertices. An arrow points right to an exploded cube net of six separate squares, each with four corner dots, labelled 24 vertices equals 6 faces times 4 corners.
With every edge hard, each corner of a cube must carry three different normals, so the engine stores it three times.Diagram by the handbook author

This is why smoothing splits and UV seams are often placed on the same edges. If a vertex is already split for a seam, also making the edge hard costs nothing extra. Polycount posters recommended exactly this, placing hard edges along UV borders (Polycount forum: Vertex Count vs Triangle Count). The baking and smoothing, hard edges and smoothing groups pages explain why this also helps normal maps.

#Counting in different tools

Every tool shows counts, but they count different things.

  • Blender. Turn on the Statistics overlay. It shows "information about the amount of objects and geometry" for the current mode, such as vertices, faces and triangles (Blender 3.5 Manual: Viewport Overlays). These are modeling-tool counts: corner points and faces before splitting.
  • Maya. Display > Heads Up Display > Poly Count lists "Vertices, Edges, Faces, Triangles, and UVs", in three columns for the whole scene, the selected objects and the selected components (Maya 2026 Help: Heads Up Display (HUD) Options).
  • Unreal Engine. The Static Mesh Editor shows Triangles, Vertices and UV channels for the imported asset (Unreal Engine Documentation: Static Mesh Editor UI). This vertex count is after splitting, so it is the number that reaches the GPU.

#Common mistakes

#Further reading and watching

References

  1. Blender Foundation · Mesh Structure · Blender 3.1 Manual, 2022 · docs · accessed 2026-10-20
  2. Manifold (3D glossary) · Meshy · web · accessed 2026-10-20
  3. Unity Technologies · Anatomy of a mesh · Unity Manual 2022.2, 2022 · docs · accessed 2026-10-20
  4. Unity Technologies · Model tab (FBX Importer settings) · Unity Manual 2018.2, 2018 · docs · accessed 2026-10-20
  5. Epic Games · Static Mesh Editor UI · Unreal Engine Documentation · docs · accessed 2026-10-20
  6. Epic Games · FBX Static Mesh Pipeline · Unreal Engine Documentation · docs · accessed 2026-10-20
  7. Microsoft · Primitive Topologies · Microsoft Learn (Direct3D 11) · docs · accessed 2026-10-20
  8. OpenTK · Element Buffer Objects · OpenTK Learn · web · accessed 2026-10-20
  9. Vertex Count vs Triangle Count · Polycount forum, 2014 · forum · accessed 2026-10-20
  10. Unity Technologies · Modeling characters for optimal performance · Unity Manual · docs · accessed 2026-10-20
  11. Vertex count and smoothing groups · Unity Discussions, 2021 · forum · accessed 2026-10-20
  12. Vertex Count & Light Map Vertex Count · Unreal Engine Forums, 2014 · forum · accessed 2026-10-20
  13. Blender Foundation · Viewport Overlays · Blender 3.5 Manual, 2023 · docs · accessed 2026-10-20
  14. Autodesk · Heads Up Display (HUD) Options · Maya 2026 Help, 2025 · docs · accessed 2026-10-20

Last updated 2026-10-22