Portraitist
Turn a phone LiDAR scan of a real place into a printable site portrait — entirely in your browser, with every step spoken. Import a GLB / PLY / OBJ / STL / 3DM scan and hear the mesh report (spans, holes, ground plane, resolution — the blind maker's viewfinder); then condition it: level the floor, scale it by a measurement you taped on site — never the file's own claim, and the disagreement is spoken — crop to a typed window in feet or keep the largest connected piece (every crop reports the percentage removed), and place it with typed offsets and a rotation. Then the handoff: the conditioned scan rasterizes to a heightfield at an imperial model scale and rides Relief's fabrication machinery out as watertight printer-bed STL chunks named like map squares (A1 is the north-west corner), zipped with the scan's caveats and an assembly map, plus the same ground full size as a Rhino .3dm in feet with contours. The honest limit is stated and measured, never hidden: a heightfield keeps the top surface, so canopies flatten — and the tool says which regions lost how much undercut. Client-side; nothing uploads, no sign-in.
Turn a phone or lidar scan of a real site into a touchable 3D-printed model — scan in, true it up, choose the print area, print and assemble. The four numbered steps below run top to bottom; none of them locks, and a step without data yet just says what it needs.
1 · Scan in
Import a phone or lidar scan. The tool reads it back as the spoken mesh report — triangles, spans, ground plane, holes.
No scan loaded
Nothing uploads — the scan stays in your browser. A phone scan over the triangle budget is simplified on import, with the cost spoken.
2 · True it up
Make the scan honest: level the floor flat, set true size from a measurement you taped on site, and crop to the part you want.
No dominant ground plane found yet.
Unverified — sizes rest on the file's own claim. Tape one span on site and type it here.
Import a scan to crop it.
Every crop is spoken with the percentage of surface it removed. Your file on disk is never touched.
3 · Print area
Place the scan, then pick a model scale and printer. The chunk grid in the viewport is what the STL and Rhino exports (top right) cut.
Stored as typed numbers and applied at rasterize time — the mesh itself is never re-baked by a placement change.
1″ of model = 20 ft of ground
Set by the printer above — pick Custom bed to type your own.
4 · Assemble
Print and put it together: the registration base, the fit coupon, found fragments mounted with their provenance, and the spoken assembly steps.
No base yet — import a scan (its chunk grid becomes the sockets) or type a plate size below.
From the fit coupon: the socket number where the pin seats snug without force. Stored in this browser, per printer.
F-series sockets hold found fragments — first-class on the base, the key map and the record, like every keyed socket.
Say mount F1 asphalt chip from the east lot — or use the form. Words after the socket are the material; from… starts the provenance.
Cradle for a fragment
Typed dimensions — inches, or feet and inches like 1′ 2″. The interior gains the coupon clearance plus ease; museum putty holds the fragment.
No scan yet — import a .glb, .ply, .obj, .stl or .3dm in step 1 and its terrain renders here in 3D: orbit, zoom, the crop window and the print-chunk grid drawn on the ground.
Scan report · step 1
Import a phone scan and this panel becomes its viewfinder: triangles, spans, ground plane, holes, coverage, resolution — the same sentences the tool speaks.
Heightfield handoff · step 3
Once a scan is conditioned, it rasterizes here to the grid the print chunks and the Rhino file are cut from — with the honest limit stated: a heightfield keeps the top surface.
Operations log
Nothing conditioned yet.