You retopologised it. Is it still the same shape?
You spend a day laying quads over a sculpt. It looks right in the viewport.Then you bake the normal map and the shoulder has a smear across it, the ear issoft, and one spot on the jaw is dark for no reason you can see. Now you have toguess: is the cage too tight, did a vertex get left behind, or did you simplynever cover that fold at all?
RetopoProof answers that before you bake. It measures your new mesh againstthe original surface, in millimetres, and tells you which vertex. Then itmeasures the other way round — the original against your new mesh — because thatis the only way to find something you did not cover at all.
Both directions, because one of them is blind
Every tool that checks a retopology measures from the new mesh to the oldone. That direction cannot see a missing ear. Where a feature is absent, yourretopology is not wrong: there is simply nothing of it there, and every vertexyou do have sits perfectly on the surface. The number comes back clean and theear is still gone.
So the original is measured back against the retopology as well. On ameasured case with a sculpted lump the forward number was 0.00 mm — perfect —and the reverse measurement found two uncovered patches, 4.6 and 2.6 edgesacross, the deepest point 523 mm from anything in the new mesh.
The vertex that passes every tolerance and is still wrong
One vertex the snapping missed sat 0.393 mm off the surface, under aone-millimetre tolerance. RetopoProof named it anyway, because it does notcompare that vertex to a threshold — it compares it to the rest of your ownmesh, whose middle sits at 0.000 mm. The line falls at 0.192 mm, and past itthis mesh has stopped being consistent with itself. That vertex is not a shapeyou chose. It is one that got left behind.
Where the line falls is measured, not decided. Comparing a vertex to itsneighbours is meaningless when every distance is rounding noise: on twelve realproduction models with a snapped retopology, the worst vertex already sitsseven to two hundred and forty times above the average, and a tool judging onthat ratio alone shouts at ten of the twelve. So the line carries a floor takenfrom the mesh itself — a thousandth of its own edge length. Below that, nothingis claimed at all.
And it is measured from the middle of the mesh, not its average, for areason that only shows up when the work is bad. Every vertex left behind dragsthe average up with it. Judged against the average, fifteen stragglers lookmilder than one, and twenty look like nothing at all — the tool goes silentexactly where it is needed most. Judged against the middle, fifteen out ofthree hundred move nothing, all fifteen are found, and the report says how manythere are instead of saying "one".
Why it does not judge you in millimetres
A millimetre means nothing until you know how big the model is. A percentageof the model means nothing until you know how dense the mesh is: any polygoncuts the corner off a curve, and by how much depends on edge length againstradius. A tool that picks a number and calls everything past it a defect willshout at every honest low-poly mesh on earth.
So the second half of the measurement is judged against your own mesh — itsmedian edge length. A mesh cannot carry detail finer than its own face, andcalling that a defect would be a lie. What it could carry, and does not, isreported.
That rule was not guessed, it was measured. Four densities of mesh over anoisy sculpt, a smooth sculpt, a hard-surface model, an honestly decimatedorganic form and eleven real production models: zero uncovered patches on everyone of them. A tree with three million vertices: 368 specks of foliage, the largest0.38 of an edge across — correctly reported as detail, not as loss. Real missingfeatures: 2.0, 3.1, 4.6, 6.0 and 6.5 edges across. There is clean daylightbetween the two, and in millimetres there is none.
It is tested on being quiet, too
A diagnostic that always finds something is as useless as one that neverdoes, so silence is tested as hard as noise — and each half of the measurementgets its own healthy sample, because they are not the same thing. A retopologysnapped to the surface reads 0.00 mm, on all twelve real production modelstried, with no stray vertex reported. A retopology of the same shape but coarserleaves nothing uncovered, on eleven of those twelve.
The twelfth is worth saying out loud. It is an assembly of thin pipes, andcoarsening it that far genuinely destroys it: the new mesh runs beside the piperather than along it, 42.07 mm off at an edge length of 13.0 mm. RetopoProofreports it, and that is the right answer. A sample you demand silence on has tobe a sample of finished work — otherwise you are not testing the tool, you aretraining it to lie.
It measures what your bake will see
- The evaluated mesh, not the file. A live Shrinkwrap,Subdivision or Mirror is part of the shape, so it is part of the measurement.If anything other than a shrinkwrap is shaping your retopology, that is said inits own line, because then the number describes the whole stack.
- World coordinates, all the way down. Object scale is partof the answer, and non-uniform scale is where naive tools break: finding thenearest point inside the object and only then converting to world gives a pointon the surface that is not the nearest one in world at all. Measured on a meshscaled (1, 1, 8) that mistake reports 199.62 mm where the truth is 54.05, and on(0.2, 1, 5) it reports 126.94 where the truth is 26.25 — two and a half tonearly four times too much, a pure generator of false alarms, on exactly theunapplied scale that scans and blockouts arrive with. Every distance here comesfrom a tree built on world-space triangles, and matches an independent worldmeasurement to the third decimal at (1,1,1), (1,1,8), (0.2,1,5) and(100,100,100) alike.
- Inside versus outside. A vertex sunk inside the originalbakes worse than the same distance outside, so those are counted separately —and only where the distance is real, because at zero distance the direction isjust rounding noise.
- Big scans. A very dense mesh is sampled deterministically,and the number of points actually checked is printed, so you always know whatwas looked at. The sample is drawn by a mixed hash, not by taking every Nthvertex: vertex numbers in a scan run in rows, an every-Nth sample lands in neatcolumns, and a stripe missing between those columns is then never looked at. Ona 400 by 400 scan that mistake reported full coverage over a gap 399 edgeswide.
- It refuses rather than guesses. A mesh switched off in theviewport, or in a collection that is switched off or excluded, has no evaluatedmesh at all — Blender simply does not build one. RetopoProof says so and stops,instead of failing halfway through. A mesh with vertices but no faces gets thesame treatment: distance to a surface needs a surface.
- Numbers you can act on, or a warning that you cannot. Whena live Subdivision or Mirror changes the vertex count, the worst vertex numberbelongs to the evaluated mesh and is not one you can select — so the report saysthat in the same sentence rather than sending you to a vertex that does notexist, for the original as well as the retopology.
- The mesh that gets baked, not the one on screen. Asubdivision set to one level in the viewport and three in the render is the mostcommon setup in Blender, and both of its switches are on — so nothing flags it,and every measurement you take describes a surface that will not be rendered. Ona measured case that gap was 25.81 mm while the report read 0.00. RetopoProofcompares the viewport and render settings of every modifier on both objects andsays which ones disagree.
- Depth as well as width. A feature narrower than one facecannot be carried by the mesh — but a bolt recess 133 mm deep is not surfacegrain, and calling it that would be a lie. Anything deeper than two of your ownedges is reported on its own, even when it is too narrow to be a patch.
- Patches, not speckles. A region only counts as uncoveredwhen the points inside it are actually far — measured, as a share of everythinglooked at there. Even surface grain used to weld into one report-wide "missingpatch"; now it is counted as grain, because half of what sits inside it isclose by.
It changes nothing
RetopoProof reads. It does not snap, relax, project or fix. Every findingcomes with one line of what to do and the number of the vertex to go to; whethera gap is a mistake or a decision is your call. A fingerprint of the session istaken before and after every measurement and compared, and the panel prints theresult of that comparison every time — not only when something went wrong.
Tested
229 checks on each of Blender 4.2.9, 5.1 and 5.2, zero problems. Includingsixteen deliberate sabotages of the product itself, to prove the tests can fail:all sixteen turn the suite red. The proof that nothing in your scene changed isitself tested by sabotage — moving a vertex, moving the object or clearing itsmaterials during the measurement all make the fingerprint differ, so theguarantee is not one that cannot fail.
Requires
Blender 4.2 or newer. No internet connection, no external libraries, nothingwritten to your file system.
And now it pulls them back onto the surface
Measuring how far the new mesh drifts from the sculpt is only half the job.One button now moves every vertex that sits outside your tolerance onto theclosest point of the original surface and measures again. Measured: worstdeviation 50.000 mm before, 0.000 mm after, with the topology completelyuntouched — not one face, loop or UV moves.
Vertices that are off by more than the mesh's own edge length are left aloneon purpose. A vertex that has to travel further than the distance to its ownneighbours usually belongs to a different feature — a sleeve instead of an arm —and pulling it to the nearest point folds the mesh. RetopoProof names those andleaves them to you.
A mesh with shape keys is refused outright: moving vertices while shape keysexist pulls them away from the basis and quietly breaks them.
Whole deliveries, not one file at a time
- Check a folder. Point it at a delivery and every .blend inside is checked, each in its own background Blender. The scene you have open is not touched — not opened over, not saved, not changed. A file that hangs or crashes takes only its own process down; the other thirty-nine still get checked.
- A report you can send. One self-contained page: verdict first, one sentence a lead can read, then the numbers, then every finding with its address. No internet, no fonts to load, no dependencies — it opens in six months on a machine with no network, which is exactly when someone asks what you delivered.
- Runs without a person. A single command from your pipeline writes the report and returns a code: clean, something blocking, or could not be checked. Those are three different codes on purpose — a check that did not run has not passed, and a gate that treats them the same is worse than no gate at all.
- Remembers last time. Save today's numbers as a baseline and a later run tells you what moved, in which direction, and which findings are new. A measurement that went up is not automatically bad: each product says which way is worse for its own numbers.
- One verdict for the whole delivery. If you own more than one of these tools, one run puts every check you have over every file and answers the only question that matters before you send it: can this go out? Each file is opened once and all the checks see the same state of it.