Meshes from image-to-3D generators and photogrammetry or LiDAR scans usually look fine in a render and then fail the moment you try to use them. Booleans give strange results, the 3D printer slicer complains, normal maps bake with black blotches, or a game engine imports the model with holes. The reasons are almost always the same: duplicate vertices, flipped faces, holes, loose fragments, edges shared by more than two faces and surfaces that pass through each other.
This guide is a practical order of operations using Blender's built-in tools, plus the free 3D Print Toolbox extension. It also covers the step most tutorials skip: checking how far your cleanup moved the surface. Menu paths are from the Blender 5.2 manual and also apply to recent 4.x versions.
#Before you start: keep the original
Duplicate the object (Shift D), hide the copy and name it something like original. Every cleanup operator changes geometry, and some changes are only visible later. With the original kept, you can compare, measure and go back.
Also apply the scale (Ctrl A, Scale) before using distance-based tools. A "merge distance" of 0.0001 means something very different on an object scaled to 0.01.
#Step 1: Look before you fix
Turn on Statistics in the Viewport Overlays to see vertex, edge and face counts. Then enable Face Orientation in the same menu: front faces show blue, back faces red. On a closed model you should see only blue from the outside. Red patches are flipped normals or inside-out shells.
In Edit Mode, the Mesh Analysis overlay (Overlays, Mesh Analysis) colours the surface by overhang, thickness, intersections, distortion or sharpness. It works in Edit Mode with Solid shading and is aimed mainly at 3D printing, but the Intersections and Distortion modes are useful for any messy mesh.
#Step 2: Merge duplicate vertices
Scans and generated meshes often contain vertices stacked on top of each other, which split the surface into disconnected strips even though it looks continuous.
In Edit Mode, select all (A) and use Mesh, Clean Up, Merge by Distance (also in the Merge menu, M, By Distance). Start with a very small Merge Distance and raise it slowly while watching the reported count of removed vertices. Too large a value welds together details that should stay separate, such as fingers or thin lips of a cup.
If the mesh has custom split normals, the Sharp Edges option keeps hard edges sharp after merging. The Weld modifier does the same job non-destructively if you want to experiment first.
#Step 3: Remove loose and degenerate geometry
- Mesh, Clean Up, Delete Loose removes vertices and edges that are not connected to anything, and optionally loose faces.
- Mesh, Clean Up, Degenerate Dissolve collapses edges shorter than a given length, which also removes tiny sliver faces. It does not merge nearby vertices that are not connected by an edge; that is what Merge by Distance is for.
- Select, Select All by Trait, Loose Geometry selects the loose parts first, so you can see what will go before deleting it.
Floating fragments of a scan (dust, the turntable, a piece of the floor) are not "loose" in Blender's sense when they are made of several connected faces. Select one face, press L to select its linked island and delete islands you do not need. Separate by loose parts (P, By Loose Parts) helps to see them all at once.
#Step 4: Fix normals
Select everything and use Mesh, Normals, Recalculate Outside (Shift N). It flips selected faces where needed so they all point outward. The mesh does not need to be closed for this, but results are only reliable when faces are properly connected, which is why merging comes first. Check Face Orientation again afterwards. Faces that are still red usually belong to a separate shell or sit inside the model.
#Step 5: Find non-manifold geometry
A manifold, or "watertight", mesh is one that could exist as a real solid object. Printing, booleans and many bakers need it.
Switch to vertex or edge select mode and use Select, Select All by Trait, Non Manifold. Its options let you narrow it down:
- Wire: edges that belong to no face.
- Boundaries: open edges around holes.
- Multiple Faces: edges shared by three or more faces, typical of internal walls in scans.
- Non Contiguous: edges between two faces with opposite normals.
- Vertices: vertices where two parts touch at a single point (bow-ties).
Select All by Trait, Interior Faces finds faces that sit inside the volume, another common scan artefact.
For holes, Mesh, Clean Up, Fill Holes fills each selected hole with a face, up to a maximum number of sides. For large holes, the manual suggests Grid Fill or Face Fill instead, because one big n-gon is hard to shade and deform.
#Step 6: Run the 3D Print Toolbox checks
Since Blender 4.2, the 3D Print Toolbox is an extension: install it from Edit, Preferences, Get Extensions. Its Analyze panel has a Check All button and separate checks:
- Solid: non-manifold geometry and inconsistent normals.
- Intersections: faces that pass through each other.
- Degenerate: zero-area faces and zero-length edges.
- Non-Planar: faces that are not flat.
- Thickness: walls thinner than a value you set.
- Sharp and Overhang: angles that cause problems in printing.
Each result has a select button that selects the problem geometry in Edit Mode. The Make Manifold tool cleans up loose geometry, interior faces, non-manifold vertices and inverted normals in one go. Use it on a copy, and compare afterwards.
#Step 7: Measure how far the cleanup moved the surface
Cleanup should make a mesh usable without changing its shape. After merging, dissolving and filling, check that.
A simple method with Geometry Nodes: add a node tree to the cleaned mesh, use the Geometry Proximity node with the hidden original as the target, and store the distance as a named attribute. Display it as a colour, inspect the values in the Spreadsheet editor, or get the maximum with an Attribute Statistic node. The node measures from each point of the cleaned mesh to the closest point of the original, so it shows where the surface moved. Swap the roles to check the other direction, which also reveals areas that were removed. Comparing the Statistics overlay before and after tells you how much geometry went.
Decide an acceptable tolerance before you start, relative to the model size and the use. A game prop and a part for a printed assembly have very different limits.
#When the built-in tools fall short
Built-in operators are reliable for the problems above, but they work one at a time and leave the judgement to you. They fall short when:
- You have many objects, such as a batch of generated assets, and need the same checks on all of them.
- Self-intersections are everywhere, as in generated meshes where shells pass through each other. Blender can show them, but untangling them by hand is slow.
- Holes are large or irregular. Fill Holes makes n-gons, and Grid Fill needs a border with matching sides.
- You need a record, for example a report for a client showing what was fixed and how much the surface changed.
At that point there are two broad options. Remeshing (Voxel or Quad remesh in the Object Data properties) rebuilds the surface into clean, watertight topology, at the cost of the original edge layout and any UVs tied to it. Retopology, which the manual describes as building a new mesh over the original with Poly Build and snapping, gives the best result for animation, but is manual work.
PN Scripts makes two Blender add-ons for the middle ground. Both are coming soon to Superhive and Blender Extensions, with a free Lite edition and a paid Full edition each:
- MeshTriage inspects meshes for the problems in this article (duplicate, loose and degenerate geometry, non-manifold edges, bow-tie vertices, flipped normals, stacked faces, holes, n-gons, non-planar faces), gives a select button per problem and repairs them in one click. Every repair reports how far the surface moved and how much area was removed. The Full edition adds checks for floating fragments, interior faces and self-intersections, presets such as "AI / scan", report export and a safety guard that leaves a mesh unchanged when a repair would go too far.
- QuadMend fills holes, n-gons and boolean cuts with all-quad patches, keeps UVs and avoids folded faces. It is useful after cleanup, where Fill Holes would leave large n-gons.
Neither replaces the judgement described above: they automate the checks and record the numbers.
See also: Browser games with Three.js and WebGL.
#Frequently asked questions
Why does Merge by Distance remove so many vertices on a scan?
Scans and generated meshes are often exported as separate triangles, with each corner duplicated. Merging reconnects them. If the count looks too high, lower the Merge Distance, because a large value can also weld nearby parts that should stay separate.
What does non-manifold mean in Blender?
It is geometry that cannot exist as a real solid: open edges around holes, edges shared by three or more faces, wire edges without faces, edges between faces with opposite normals and vertices where parts touch at one point. Select, Select All by Trait, Non Manifold finds them.
Is the 3D Print Toolbox still included with Blender?
Since Blender 4.2 it is an extension you install from Get Extensions in the Preferences. It needs Blender 4.2 or newer.
How can I check that cleanup did not change the shape?
Keep an untouched copy, then use the Geometry Proximity node in Geometry Nodes to measure the distance from the cleaned mesh to the copy, and the other way round. Compare the maximum with a tolerance you set for the model.
Should I remesh instead of cleaning up?
Remesh when topology does not matter and you need a watertight surface quickly. Clean up when you need to keep the original edge layout or UVs. For animation, plan a retopology.
Comments
Comments
Be the first to leave a comment.
Leave a comment