Production
Four stages, and what
each one is bad at.
Every pipeline page you have ever read lists what its stages do well. That list is not useful, because the stages all do their jobs. What decides whether the output is any good is knowing precisely where each stage fails and routing around it.
Design
one locked reference
A single reference interior sets the style, and every prop is designed against it.
One room becomes the style bible for the whole pack: one walnut value, one sage, one brass, one bone, one leg taper, one edge radius. Every prop is then designed against that reference rather than against somebody’s memory of it, which is what makes a hundred-odd objects designed separately still read as one catalogue. Consistency that depends on discipline erodes at asset nineteen; consistency that comes from a locked reference does not.
style-lock.json — the palette, taper and radius the whole set is held to
Form
parametric builders
Most of the set is built by parametric code — a slat exists because a loop put it there.
Repeating parts, woven surfaces, thin plates with real thickness and precise joinery are built parametrically in Blender, so shelf spacing is equal because it was computed, a mitre closes because it was constructed, and nine books on a shelf are nine separate books. That also makes a correction cheap: change a number and the piece is the same piece with the defect gone, rather than a different piece that no longer matches the credenza you already approved.
Five-view audit: every parametrically built piece has passed at first audit
Finish
in-house tooling
Cleanup, real-world rescale, pivots, collision, LODs, export — about a second per asset.
The finishing stage is deterministic code, not judgement. It welds and cleans the mesh, rescales to true metres, drops the pivot to the bottom centre, applies transforms, builds the convex collision hull, generates the LOD chain, collapses the asset to a single material and writes the FBX. It runs in about a second per asset, which means a fix upstream costs nothing to re-propagate across the whole set.
finish_line2 — ~1 second per asset
Audit
five-view gate
Front, back, left, right, top. Any visible flaw on any angle and the asset does not ship.
Every asset is rendered from five camera angles and looked at — not scored by a heuristic, actually looked at, with a written verdict per angle. A single visible defect on a single angle fails the whole asset. This gate is why the pack is not on a storefront yet: the assets it fails are rebuilt rather than shipped, and every verdict is published while the asset is still failing.
Five verdict ledgers — 136 pass, 4 repairable, 0 rejected, of 140
Stage 04, in detail
The check that changed
what we thought we had.
This is the part of the pipeline that took the longest to get right, and the part we got wrong first.
For a couple of weeks we believed the pack was nearly finished. Every asset had been inspected and every asset had passed. The remaining work was colour, layout and the storefront listing.
Then somebody asked the obvious question: inspected from where?
Every asset had been checked from a front three-quarter view — the angle you naturally point a camera at an object, and the angle a prop is easiest to make look right from. So we built a fixed rig instead: five cameras, lights bolted down, the object rotating rather than the camera orbiting, so every face is lit identically and no angle is flattered by a convenient shadow. Then we rendered the whole set and wrote a verdict per angle.
The pass rate went from what we thought was most of the set to 11 of 27.
Nothing new had broken. Every one of those defects existed the whole time, in files we had already called finished, in a set we were about to price. What changed was the angle we were willing to look from.
What it cost, and what it bought
It bought a routing rule. The failures were not random — they clustered on woven surfaces, thin plates with real thickness, repeating parts and precise joinery. Those are now built parametrically, where a slat exists because a loop put it there and shelf spacing is equal because it was computed. Seven pieces the gate had rejected were rebuilt that way and all seven passed.
It cost the launch date. That is the trade, and we would make it again: a pack is bought once and looked at for the length of a project.
The rule in full is on the standard page, and every asset’s verdict — including the ones still failing — is on the pack page.
- pieces clear the audit today
- 136/140
- the first time the rig ran
- 11/27
- angles per asset
- 5
- per asset, finishing stage
- ~1s
the rest have a located defect and are in repair
same files, stricter look
front, back, left, right, top — never the underside
so an upstream fix costs nothing to re-propagate
The limit
What the machine
doesn’t decide.
Automated checks catch what they can measure: geometry that is not manifold, a pivot in the wrong place, a triangle count over budget, a material count above one, a texture that failed to embed. All of that is worth automating and all of it is a floor.
None of it can tell you whether a chair looks good. Whether the walnut is the right walnut. Whether the whole set reads as one catalogue or as a jumble. Whether a pack is worth paying for.
Those are taste, and taste has no proxy. Every quality gate here reports what it did not check alongside what it did, so a green run is never mistaken for a verdict on whether the work is any good.
the honest ledger
- Checked by machine
- Manifold geometry · real-world scale · pivot placement · applied transforms · convex hull present · LOD chain present · one material · texture embedded · triangle budget · engine import round-trip
- Checked by eye, per angle
- Back faces · fused repeating parts · plate edges · seams and gaps · pseudo-text · silhouette at close range
- Not checked by anything but taste
- Whether it is beautiful. Whether the set is coherent. Whether it is worth money.