Technology

How the archive is made

From photographs to a published record: the capture methods, reconstruction tools and checks behind the collection.

From capture to collection

  1. PhotographCapture overlapping views of the object or space.
  2. ReconstructBuild a mesh or a Gaussian splat from the images.
  3. ReviewCheck the result and document its limitations.
  4. PublishPrepare a record and suitable viewing or download files.

Equipment

Capture and processing tools

Equipment used for object photography, scene capture and reconstruction. The notes describe its role and current limitations.

Capture equipment

Detail camera for objects

iPhone 15 Pro Max with RealityScan

What it is
The phone camera, driven by the RealityScan capture app, which records position data alongside every photo.
How it works
48-megapixel stills, walked around the object at three heights with heavy overlap. The app logs where each frame was taken, so alignment starts from a prior instead of from nothing. Through glass, on some sessions, only a gravity prior survives and the images have to carry the solve on their own.
How and when it is used
Every object on this site so far. Capture access and equipment rules must be established for each museum or site. The current released object records report 21–63 stills each; the Minbar spatial pilot uses 136 phone stills.
Where it stands
Primary and only capture device for objects. The Fujifilm bridge camera below is the fallback when the phone cannot get close enough.

Coverage camera for spaces

DJI Osmo Pocket 4

What it is
A pocket gimbal camera: one-inch sensor, fixed 20 mm-equivalent f/2.0 lens, 4K video, three-axis mechanical stabilisation. Standard Combo, 107 GB internal.
How it works
It films continuous video while walking a room slowly, and the frames are pulled out afterwards at about three per second with the blurriest of each window dropped. It also works as a tripod scanner: over USB it exposes pan and tilt controls, so a script sweeps 12-degree pan steps across four tilt rows and grabs 88 stills per station.
How and when it is used
Rooms and sites only, never objects. Everything manual: shutter fixed at 1/120 indoors and 1/250 outdoors, ISO and white balance fixed, focus locked, 4K at 50 or 60, no digital stabilisation, and the 2x zoom is never touched mid-pass because it changes the lens model.
Where it stands
Three walking clips and one four-station scan so far, all test spaces. The findings from them are the two field-log posts on frame density and the loop-closure recipe below. These walking and station-scan tests remain separate from the viewing-only Minbar pilot made from phone stills.

Highlight and reflection control

Filters for the Pocket 4

What it is
A magnetic K&F Concept set: ND16, ND64, ND256 and a circular polariser.
How it works
Neutral density stops highlights blowing out on limestone under Cairo midday sun while the shutter stays fast. The polariser cuts specular reflection on marble, glazed tile and glass cases, which otherwise breaks feature matching.
How and when it is used
ND when the fixed shutter would overexpose. Polariser on single-direction passes only: on a full orbit the gimbal rotates the lens, the polarisation angle drifts against the scene, and that inconsistency is worse than the reflections.
Where it stands
In the bag with the camera. The lens itself is fixed; there are no interchangeable lenses on this camera.

Structured-light scanner for objects at home

Creality CR-Scan Otter Lite (wireless)

What it is
A handheld scanner that projects a light pattern onto the object and reads the distortion with its own cameras, building geometry directly instead of matching photographs.
How it works
Sweep the object slowly while the software tracks and fuses frames into a mesh. Fine surface detail comes out cleaner than photogrammetry on small, matte objects; dark, shiny or translucent surfaces need spray or patience.
How and when it is used
Object-level scans in controlled, permitted settings, mostly for print masters. It does not go to museums or sites: a handheld scanner draws attention from staff and security in a way a phone does not.
Where it stands
Processed in Creality Scan for tracking, fusion and export, then cleaned in Blender. None of the records on this site came from it yet; they were all museum captures.

Backup stills camera

Fujifilm FinePix HS35EXR

What it is
A bridge camera with a fixed superzoom lens, inherited rather than chosen.
How it works
Manual exposure and focus, stills only, used the same way as the phone: overlapping orbits at several heights.
How and when it is used
When an object is behind a barrier the phone cannot reach across, or when a longer focal length is needed for a detail pass.
Where it stands
Its lens has not been tested or benchmarked, so soft results from it are treated as a lens question first.

On the desk

On-site checks and object meshes

Mac

What it is
The laptop that travels.
How it works
Runs a first alignment on site to confirm a capture worked before leaving, then processes object captures into meshes.
How and when it is used
Every museum visit, and every object mesh on this site.
Where it stands
Object meshes are built with Apple's PhotogrammetrySession (Object Capture) at raw detail, then cleaned and compressed for the web here.

Print-grade meshes

HP Omen laptop

What it is
Ryzen laptop with an RTX 4070.
How it works
Runs RealityScan for photogrammetric mesh extraction tuned for maximum detail, because those meshes feed 3D printing rather than a viewer.
How and when it is used
When a record needs a print master or a higher-detail pass than the phone pipeline gives.
Where it stands
Second machine in the pipeline; the tower below took over the heavy space reconstructions.

Space reconstruction and splat training

Windows tower

What it is
i9-13900KF, RTX 4090 with 24 GB, 64 GB of RAM, driven over SSH from the Mac.
How it works
COLMAP solves camera poses for the extracted video frames; Brush trains the Gaussian splat from them. A typical 1,275-frame walk solves in about eleven minutes and trains in about the same.
How and when it is used
Every walking clip and station scan since August 2026.
Where it stands
The whole splat investigation ran here: 33 recorded phases, 167 logs, kept in the research folder with the scripts.

Software

Mesh engine for objects

Apple PhotogrammetrySession (Object Capture)

What it is
Apple's built-in photogrammetry, run at its raw detail level.
How it works
Reconstructs a textured mesh from overlapping photographs. The project reports raw-detail outputs of about 126k faces for the Thuya mask and 223k for Aphrodite with the dolphin; triangle counts alone do not establish accuracy, observed detail or watertightness.
How and when it is used
Every object mesh on this site.
Where it stands
Processing may include removing debris, repairing topology and closing holes, followed by texture compression and web packaging. Filled surfaces are inferred, not photographed. Per-file topology reports and scale checks are needed before asserting printability or measurement suitability.

Print-grade photogrammetry, and a tested aligner

RealityScan

What it is
Epic's desktop photogrammetry (formerly RealityCapture), run on the Omen.
How it works
Aligns the image set, builds a dense mesh, and lets each pass be treated as its own camera group with its own lens model, which matters for video frames with no EXIF.
How and when it is used
When the goal is a print master at maximum detail. Ingest rules for video: one camera group per pass, set the focal prior by hand for the Pocket 4 (one-inch sensor, about 7.4 mm actual focal length), Brown3 distortion, higher detector sensitivity for low-texture limestone.
Where it stands
Tested as a pose solver for the walking clips too: version 2.2 registered 557 of 1,275 frames in six components, worse than COLMAP on the same clip, so it stays a mesh tool here.

Camera poses for spaces

COLMAP

What it is
Open-source structure-from-motion, used for the project’s experimental space reconstructions.
How it works
Finds matching features across frames and estimates camera poses and sparse geometry. Project experiments compare sequential matching, loop closure, mapping and bundle adjustment; the appropriate settings depend on the scene and coverage.
How and when it is used
Every walking clip and station scan.
Where it stands
Project tests with reduced frame sets of roughly 680–1,275 images reported improved registration. Those results do not isolate frame density as the sole cause. Loop closure was assessed against each dataset’s path and overlap.

Gaussian-splat trainer

Brush

What it is
Rust, command-line first, runs natively or in a browser through WASM.
How it works
Turns COLMAP poses and frames into a Gaussian splat. One tested configuration: 25,000 iterations, 2,400-pixel resolution, spherical harmonics degree 3, growth threshold 0.005, refine every 400, four levels of detail.
How and when it is used
The trainer for every space on this site once one is released.
Where it stands
Chosen over splatfacto, gsplat MCMC and OpenSplat on the same footage: best SSIM and LPIPS on both capture types at half the file size. Every training-side change since moved quality by under half a decibel; changing the capture moved it by ten.

Benchmarked, not adopted

gsplat and OpenSplat

What it is
Two other open-source trainers: gsplat from the nerfstudio project (Python), OpenSplat (C++ and CUDA).
How it works
Both ran on the identical decimated reconstruction and iteration budget as Brush for a fair comparison.
How and when it is used
Reference points only.
Where it stands
gsplat trained cleanly after several Windows build fixes but its default densification did not suit these captures. OpenSplat produced the fastest and smallest output, 3.7 minutes and 13 MB, but visibly soft. The table below carries the numbers.

Cleanup and repair

Creality Scan and Blender

What it is
The scanner's own software, and Blender for everything after it.
How it works
Creality Scan tracks, fuses and exports Otter scans. Blender is where meshes from any source get repaired: holes closed, debris removed, orientation fixed, hollowing and orientation for print.
How and when it is used
Every mesh that goes to print, and any web mesh that needs more than the automatic cleanup.
Where it stands
Active post-processing, not a pass-through export step.

Web packaging

The site's own scripts

What it is
Small Python and Node scripts in the site repository.
How it works
Convert opaque PNG textures to JPEG, pack web copies of each GLB with meshopt, build 160-pixel thumbnails for released photos, record download sizes, clean and strip splat files, and sync everything to object storage.
How and when it is used
Every deploy.
Where it stands
Web meshes went from 329 MB to 64 MB across the collection with no visible texture change.

On this site

The object viewer

model-viewer

What it is
Google's web component for glTF on top of three.js.
How it works
Loads the meshopt-packed GLB, lights it with a neutral studio environment, and handles orbit, zoom and the wireframe toggle.
How and when it is used
Every record page and the embeddable viewer museums can frame on their own pages.
Where it stands
Phones wait for a tap before downloading a mesh; released records can be embedded anywhere with credit and a link back.

The space viewer

SuperSplat viewer

What it is
PlayCanvas's self-hosted Gaussian-splat viewer.
How it works
Streams a cleaned, lighter copy of the splat and lets the visitor look and move as if in the room.
How and when it is used
Viewing-only spatial previews, including the Minbar pilot.
Where it stands
The Minbar pilot is available for exploration with documented gaps. Two separate walking tests scored well on paper but still looked wrong in the viewer.

Hosting

Cloudflare Worker and R2

What it is
The site runs as a single edge worker; meshes, photos and downloads live in R2 object storage.
How it works
Released files are public; unreleased ones are served through short-lived signed links so viewing stays open while downloads follow release.
How and when it is used
archaeoarchive.com, with the old heritage.atabany.net address forwarded to it.
Where it stands
Deployed by one command that also rebuilds thumbnails and sizes and syncs storage.

The finding that changed the pipeline

How frame selection improved one reconstruction

In one project comparison, resampling the same handheld footage to roughly 680 frames improved registration from 50% to 100% and reduced processing time. Near-duplicate viewpoints were a working explanation, not an independently isolated cause. These measurements describe that dataset and configuration; they do not establish a universal frame budget or a limit on what longer footage can capture.

100%frames registeredup from 50% on the same footage at full density
0.786pxreprojection errorreported for this reconstruction and configuration
10.8 minreconstruction timedown from 189 minutes at full frame density
Read the capture-protocol writeup →

Head-to-head

Same footage, same reconstruction, three trainers

All three run against the identical 680-frame decimated reconstruction above, the first fair comparison in this investigation. Numbers land here as each run finishes.

TrainerConfigurationTimeOutputNotes
Brushgrowth-grad-threshold 0.005 · refine-every 400 · sh-degree 3 · LOD ×410.0 min98.9 MBLOD tiers down to 10.2 MB
gsplatdefault strategy · sh-degree 3 · 25,000 steps10.5 min118 MB524,262 Gaussians · PSNR 27.078 · SSIM 0.879 · LPIPS 0.297
OpenSplat25,000 iterations · sh-degree 33.7 min13.2 MBBuilt from source (libtorch + OpenCV + CMake/MSVC) for this comparison. Fastest and smallest of the three.

All three ran against the identical decimated dataset and iteration budget, the first fair comparison between them in this investigation.

What didn't work

Tried and ruled out

Mapper tuning
Leaf size, overlap, loop-closure detectionExtensive parameter tuning on the reconstruction software's clustering step never fixed fragmentation at scale. These attempts did not resolve the observed fragmentation; the comparison did not isolate a single cause.
Manual sectioning
Splitting footage into overlapping chunksReconstructing sections independently and merging them found and fixed a real bug in the merge step, but most section pairs still fail to merge: real geometric drift between independently solved sections, not a settings problem.
Still open
Fresh feature-extraction runs reproducibly divergeIdentical input images, re-run from scratch, measurably diverge from the original extraction on a small subset of high-detail frames. Narrowed to a likely GPU truncation behaviour, but not fully explained. Flagged as open, not resolved.