The 3D Handbook
Key term

Convex decomposition

Splitting a concave mesh into a set of convex pieces so a physics engine can collide with it cheaply. How V-HACD, CoACD and the Unreal, Unity and Godot tools do it, which settings matter, and when to build the pieces by hand.

collisionphysicsengineoptimisation

Convex decomposition splits a concave mesh into several convex pieces that together approximate its shape. Physics engines collide convex shapes far more cheaply than arbitrary triangle meshes, so decomposition is how an archway, a chair or a broken wall gets collision that is both fast and fairly accurate.

The V-HACD library describes the problem: one convex hull approximates a concave shape poorly and causes false collisions, while a set of "near" convex parts gives a much better fit and stays fast enough for real time (GitHub: V-HACD: Volumetric Hierarchical Approximate…).

#How it works

Every method follows the same idea: cut the mesh into parts, wrap each part in a convex hull, and stop when the hulls fit closely enough. The settings decide how many parts you get and how tightly each one fits.

Three stone arches. Left, one orange hull covers the whole arch and fills the opening. Centre, three orange pieces follow the arch with some overhang into the opening. Right, seven thinner pieces follow the arch closely.
More pieces, tighter fit. Each piece is the convex hull of one slice of the arch, so it bridges the inner curve with a straight edge; thinner slices leave less overhang into the opening.Diagram by the handbook author

The arch shows the trade-off. One hull blocks the doorway. Three hulls open it, but each still bulges a little into the opening. Seven hulls follow the curve closely, at more than twice the cost of three. Most automatic tools let you choose a point on this curve with two kinds of setting: a limit on the number of hulls and a tolerance for how concave a piece may be before it is split again.

#The tools

Tool Where Main settings Notes
V-HACD Open-source library (GitHub) Maximum hull count (default 32) Its author calls the default 32 hulls "often way too high"; the project is archived and recommends CoACD
CoACD Open-source (MIT), Python via pip install coacd, C++ and a Unity package (GitHub) Concavity threshold (default 0.05, range 0.01–1), optional maximum hull count, preprocessing resolution, optional vertex limit per hull SIGGRAPH 2022 research; aims to keep the input's collision behaviour with fewer parts
Unreal Engine Static Mesh Editor, Auto Convex Collision (Epic Developer Community documentation) Hull Count, Max Hull Verts, Hull Precision (number of voxels) "The higher these values, the more precise your collision mesh will be, but also the more complex"
Godot Import dock, Physics, Shape Type: Decompose Convex (Godot Engine documentation); or the -convcolonly suffix (Godot Engine documentation) A Precision preset, or Advanced options Higher precision means slower generation and more CPU cost during simulation
Unity Mesh Collider with Convex ticked (Unity Manual); CoACD's Unity package for multiple pieces (GitHub) — Convex mesh colliders are "limited to 255 triangles"

CoACD's threshold works the other way round from a hull count: a higher threshold gives a coarser result (GitHub: CoACD: Approximate Convex Decomposition for…). Since April 2026 it can also read the threshold in metres, which makes values easier to reason about across assets of different sizes (GitHub: CoACD: Approximate Convex Decomposition for…).

The first step of a comparison in Epic's Auto Convex Collision how-to, at the tool's default settings. Compare how closely the hulls follow the mesh with the maximum-settings result below.Epic Games, Unreal Engine documentation
The same mesh after raising the Auto Convex Collision values to the maximum the tool allows. The hulls follow the shape more closely; Epic notes that higher values give more precise but also more complex collision (Epic Developer Community documentation: Setting Up Collisions With Static Meshes in…).Epic Games, Unreal Engine documentation

#Common mistakes

convex hull · collision meshes · player collision capsule · manifold and non-manifold geometry · decimation

#Further reading and watching

CoACD on GitHub
the current open-source decomposition tool, with parameters explained and links to the SIGGRAPH 2022 paper. Advanced, free.
WebAdvancedFree
V-HACD on GitHub
the older, widely integrated library, with a clear explanation of why decomposition is more accurate than a single hull. Advanced, free.
WebAdvancedFree

References

  1. Khaled Mamou and contributors · V-HACD: Volumetric Hierarchical Approximate Convex Decomposition · GitHub · tool · accessed 2026-10-21
  2. Xinyue Wei, Minghua Liu, Zhan Ling and Hao Su · CoACD: Approximate Convex Decomposition for 3D Meshes with Collision-Aware Concavity and Tree Search · GitHub (paper in ACM Transactions on Graphics 41(4), 2022), 2022 · tool · accessed 2026-10-21
  3. Epic Games · Setting Up Collisions With Static Meshes in Unreal Engine · Epic Developer Community documentation, 2026 · docs · accessed 2026-10-21
  4. Godot Engine contributors · Advanced Import Settings · Godot Engine documentation (source on GitHub), 2026 · docs · accessed 2026-10-21
  5. Godot Engine contributors · Node type customization using name suffixes · Godot Engine documentation (source on GitHub), 2026 · docs · accessed 2026-10-21
  6. Unity Technologies · Mesh collider component reference · Unity Manual, 2026 · docs · accessed 2026-10-21
  7. Epic Games · FBX Static Mesh Pipeline in Unreal Engine · Epic Developer Community documentation, 2026 · docs · accessed 2026-10-21

Also consulted

Last updated 2026-10-22