Every node in Meshdraft
The full toolbox behind the drafts — 21 operations for repairing, optimizing, retopologizing and texturing real-world 3D models. Free, in your browser; models never leave your machine.
Each entry lists the node’s inputs and parameters, and which built-in drafts use it. Link to any node directly with its # anchor.
InspectUnderstand a mesh before and after you change it.
A mesh-quality report: holes, non-manifold edges, sliver faces, loose parts — see what's wrong before deciding how to fix it.
Metrics
| Metric | What it means |
| Zero-area faces | Faces with no area at all — three points on a line, or repeated points. They carry no surface and break normals, UVs and booleans. Clean removes them. |
| Sliver faces | Extremely thin, needle-like triangles. Legal geometry, but they wreck shading and make remeshing and simulation unstable. |
| Boundary edges | Edges with only one face attached — the rim of a hole. Any non-zero count means the mesh is not watertight, so it can't be 3D printed or used in a volume boolean. Fill Hole seals them. |
| Non-manifold edges | Edges shared by three or more faces, so the surface branches. No real solid can do this; it blocks watertight fills and booleans. Clean resolves them. |
| Non-manifold vertices | Vertices where two otherwise separate patches of surface meet at a single point (a bow-tie). The surface pinches to nothing there. Clean resolves them. |
| Seam edges | Edges where the UV layout is cut, so the two sides land in different places in the atlas. Expected wherever a model was unwrapped — a high count means a fragmented atlas. |
| Corner vertices | Vertices where several sharp feature edges meet. Remesh and Quad Mesher pin these in place, so they mark where hard detail is preserved. |
| Connected components | How many separate pieces the mesh is made of. More than one means loose parts — Combine can sew them together or drop them. |
| Debris parts | Separate pieces whose bounding box is under 1% of the whole model's — scan crumbs, stray triangles, floaters. This is exactly the size rule Combine's Remove debris strategy culls by, so the count predicts what that node would drop. The largest piece never counts. |
| Self-intersections | Pairs of faces that pass through each other — interpenetrating parts, folded-over surfaces, scan overlap. They break booleans, voxelization and printing. Clean with resolve self-intersections on repairs them; a very large count usually means an assembly of separate parts, which Voxelize rebuilds more reliably. Shows 'skipped' when the model is over the browser's face budget for this query. |
| Flipped faces | Faces wound the wrong way: either inside-out against their neighbours, or a whole closed shell wound inward. Zero on a consistently outward mesh. These are the faces Conform Normals would flip, so a non-zero count means that node is worth adding; a zero means it can be skipped. |
| Double wall | The surface is a thin hollow shell — an outer skin and an inner skin a hair apart — rather than one solid surface. Image-to-3D generators (Trellis and similar) emit these. Downstream it doubles the faces Decimate must spend, makes Voxelize read the model as hollow, and confuses baking. Visual Hull removes the hidden inner skin. Detected from the enclosed-volume ratio, independent of winding; two separate nested shells are not flagged. |
| Enclosed volume | The number behind the double-wall verdict: how much of the volume the surface sweeps it actually encloses. A solid sits between roughly 40% and 100%; a double wall encloses only the sliver between its two skins, around 3-5%. Below 15% reads as a double wall. n/a means every face was degenerate. |
Used in drafts: Fix & Clean 3D Print Prep
Open in the app →
Before and after in one viewport, split by a draggable divider — see exactly what a node changed.
Inputs
| Input | What to wire |
| A → left | Mesh shown on the left of the viewer divider — usually the "before". |
| B → right | Mesh shown on the right of the viewer divider — usually the "after". |
Parameters
| Parameter | What it does |
| Animate | Auto-sweep the compare divider right↔left at a constant speed (for demo/tutorial capture). |
Actions
| Button | What it does |
| Snapshot | Save a PNG of the 3D viewer exactly as shown — model, divider and overlays included. |
Used in drafts: Reduce Reduce & Bake Retopo 3D Print Prep Platform targets
Open in the app →
RepairTurn broken geometry into sound geometry.
One-pass repair for broken geometry — non-manifold edges and vertices, zero-area faces, and optionally self-intersections.
Parameters
| Parameter | What it does |
| Self-intersections | Detect and repair self-intersecting faces (delete → cap → verify). Off is faster on very large models. |
Used in drafts: Fix & Clean 3D Print Prep
Open in the app →
Seal every open hole with caps that follow the surrounding curvature — the step that makes a scan watertight.
Parameters
| Parameter | What it does |
| Smooth | Fair each cap so it follows the surrounding curvature instead of sitting flat (Liepa fairing). Off leaves a minimal flat patch. |
Used in drafts: Fix & Clean 3D Print Prep
Open in the app →
Rewind every face to point outward consistently — fixes inside-out patches and black-shaded regions.
No parameters — wire it in and it runs.
Used in drafts: Fix & Clean 3D Print Prep
Open in the app →
Merge loose pieces into one mesh: touching rims are sewn together, negligible debris is dropped.
Parameters
| Parameter | What it does |
| Strategy | Parts that touch or interpenetrate count as one assembly. Keep largest keeps only the biggest assembly. Remove debris keeps every real part and drops only true debris — assemblies under 1% of the model's size, and never more than 1% of the surface area combined. Keep all deletes nothing. Attached debris of negligible area is always dropped in every mode. |
Used in drafts: 3D Print Prep
Open in the app →
OptimizeFewer, better triangles.
Reduce triangle count to an exact budget. Curvature-aware collapse keeps detail where the surface bends.
Parameters
| Parameter | What it does |
| Strategy | How the cost of collapsing an edge is weighed. Uniform reduces everywhere evenly; Curvature makes curved regions expensive to collapse, so detail survives longer and flat areas absorb the reduction. |
| Type | How the budget below is read. Fixed uses the face count verbatim; Percentage keeps that share of the input's faces, so one setting works on any model. |
| Faces | Target triangle count. The result lands at or below this number, never above it. |
| Percent | Share of the input's faces to keep. 10 leaves roughly a tenth of the original triangles. |
Used in drafts: Reduce Reduce & Bake Retopo Platform targets
Open in the app →
Rebuild the surface with well-shaped triangles at a target count — uniform, or denser where the shape curves.
Parameters
| Parameter | What it does |
| Strategy | How the new triangles are distributed. Uniform gives one size everywhere; Curvature packs them tighter where the surface bends, keeping detail at the same budget. The Local method has no adaptive spacing and will warn. |
| Method | Which remesher runs. Local edits the existing mesh in place and stays closest to the original. Global rebuilds it from scratch for the most even result. Hybrid keeps high-curvature regions verbatim and rebuilds the rest. |
| Type | How the budget below is read. Fixed uses the face count verbatim; Percentage keeps that share of the input's faces, so one setting works on any model. |
| Faces | Target triangle count. The result lands at or below this number, never above it. |
| Percent | Share of the input's faces to keep. 50 targets roughly half the original triangle count. |
Open in the app →
Even out vertex spacing without pulling the surface off shape — a finishing pass for lumpy triangulations.
Parameters
| Parameter | What it does |
| Relaxation | Number of passes that even out vertex spacing without pulling the surface off shape. Higher values give a more regular mesh but blur small detail. |
Open in the app →
Seven smoothing filters, from plain Laplacian to edge-preserving bilateral — pick the noise-versus-shape trade-off.
Parameters
| Parameter | What it does |
| Filter | Which smoothing filter runs. Each one trades noise removal against how much of the original shape and volume it keeps — see the individual filter entries below. |
| Iterations | How many smoothing passes to run. Each pass is a full sweep over the mesh, so more means smoother and slower — and most filters shrink the model slightly as they go. |
Options
| Filter | What it does |
| Laplace (cotan) | Cotangent-weighted Laplacian: each neighbour is weighted by the mesh's own triangle geometry, so it respects element shape and shrinks the model least of the Laplacian variants. The general-purpose default. |
| Laplace (std) | Uniform-weight Laplacian: every neighbour counts equally. The plainest and fastest filter, but it drags vertices toward densely triangulated areas and shrinks the model more. |
| Bilateral | Edge-preserving smoothing: neighbours are weighted down the further they sit from the local surface, so noise is removed while genuine sharp edges survive. |
| Taubin | Alternating shrink and un-shrink passes that cancel each other out, giving Laplacian-quality smoothing with almost no volume loss. Use when the model's size must not drift. |
| Mean curvature | Moves each vertex along its normal in proportion to mean curvature, flattening bumps and hollows. The most aggressive at removing shape rather than just noise. |
| Median | Replaces each vertex with the median of its neighbourhood rather than the average, so isolated spikes vanish outright while edges stay put. |
| Preserve Normals | Filters the face normals behind a crease mask and then refits the vertices to them, so facet noise disappears while detected creases stay exactly where they are. The best choice on voxelized or boolean output. |
Open in the app →
UVs & TexturesUnwrap, transfer and bake appearance.
Unwrap the model into a fresh UV atlas — the prerequisite for baking and texturing a model that has none.
No parameters — wire it in and it runs.
Used in drafts: Generate UVs
Open in the app →
Carry UVs, textures and vertex colours from the original model onto its processed copy — repair without losing the look.
Inputs
| Input | What to wire |
| Target model | The processed mesh that receives the attributes — wire the end of your remesh / decimate chain here. Its geometry is what comes out of the node. |
| Original model | The original, unprocessed mesh the UVs, textures and colours are read from. Only used as a reference — its geometry is not part of the output. |
Parameters
| Parameter | What it does |
| Reuse UV islands | When baking, keep the source's UV islands (familiar layout, more seams) instead of generating a fresh, tighter, fewer-island atlas. Both bake the same appearance. |
| Consolidate materials | Multi-material only: fold every baked material into ONE material + one merged atlas (a single draw call). Trades a little atlas sharpness for fewer draw calls; leave off to keep one material per source material. |
Used in drafts: Fix & Clean
Open in the app →
Bake normal, occlusion, curvature, height and thickness maps from a high-resolution source onto a low-poly target.
Inputs
| Input | What to wire |
| Target model | The low-resolution mesh the maps are baked onto. It must carry a UV set — add a Generate UVs node before this one if it doesn't. |
| Original model | The high-resolution mesh whose surface detail is captured into the maps. Only used as a reference — its geometry is not part of the output. |
| Cage (optional) | Optional: an offset shell around the target (wire a Concave Hull of the target). Each texel then projects only as far as the shell — tight in crevices, generous over raised detail. Leave unconnected to use Max distance. |
Parameters
| Parameter | What it does |
| Normal | Bake the high-to-low normal map: the source’s surface detail (including its own normal map) re-expressed in the target’s tangent frame. |
| Occlusion | Bake ambient occlusion: hemisphere rays against the source at every texel. White = open, black = occluded. |
| Curvature | Bake surface curvature: convex edges white, concave cavities black. Exported as a sibling image (no glTF slot). |
| Height | Bake the signed distance between target and source along the normal, mid-grey = coincident. Exported as a sibling image (no glTF slot). |
| Thickness | Bake shell thickness (inward rays): black = paper-thin, white = thick. The map subsurface shaders expect. Exported as a sibling image (no glTF slot). |
| Resolution | Texels per atlas side. Auto matches the target's existing atlas when one is there, else derives from the source's texture density, else 1024. |
| Max distance | How far each texel may search for the source surface, as a fraction of the target's bounding-box size. Too small leaves unbaked gaps; too large picks up the wrong surface across thin parts. Ignored when a Cage is connected. |
| Normal format | Which way the normal map's green channel points. OpenGL (+Y) is the glTF convention; pick DirectX for engines that expect the flip. |
Used in drafts: Reduce & Bake Platform targets
Open in the app →
Volume & HullsRebuild shapes through volumes and hulls.
Rebuild the model from a voxel grid — anything becomes solid and watertight, whatever the input's topology.
Parameters
| Parameter | What it does |
| Isosurface | How the surface is rebuilt from the voxel grid. Smooth rounds everything off, Sharp recovers hard edges and corners, Voxel keeps the blocky grid faces. |
| Resolution | Voxels along the model's longest side. This sets the finest detail the result can hold — anything thinner than one voxel disappears. Cost grows roughly with the cube of this number. |
| Dilation | Grow the shape outward by this many voxels before the surface is extracted. Closes small gaps and thickens thin walls. |
| Erosion | Shrink the shape inward by this many voxels before the surface is extracted. A dilation followed by an equal erosion closes holes while keeping the original size. |
| Remove slivers | Merge surface crossings that fall very close to a grid point, eliminating thin degenerate triangles. |
Used in drafts: 3D Print Prep
Open in the app →
The tightest convex shape around the model — instant collision proxies and bounding geometry.
No parameters — wire it in and it runs.
Open in the app →
A shrink-wrapped shell offset outward from the surface — bake cages, shells and simplified covers.
Parameters
| Parameter | What it does |
| Offset % | How far the shell is pushed outward from the surface, as a percentage of the model's longest bounding-box side. Being relative, the same value works at any scale. |
Open in the app →
Remove every face that can't be seen from outside — strips the internal geometry scans and AI generators leave behind.
Parameters
| Parameter | What it does |
| Snapshots | How many viewpoints the model is looked at from. A face never seen from any of them is culled. More viewpoints means fewer faces wrongly removed, and a slower run. |
| Resolution | Pixel size of each viewpoint render. Higher catches small faces a coarse render would miss, at a proportional cost in time. |
Used in drafts: 3D Print Prep
Open in the app →