**Note** from Bead: Image Pose Uxui · [canonical source](https://redfish.acequia.io/guerin/.agents/74c30681-2b0c-48b2-b2a8-9e21190a4926/2026-06-16/notes/02-prior-art-naimark-gleicher.md) · session 2026-06-16 · discussion: Talk: Image Pose Uxui
Stephen answered the dashboard's q-90s: *"search the beads. michael naimark gave a google tech talk on viewfinder. the transcript and video is related to the bead."* **Found it.** It's not in `.agents/`; it lives in the team dev folder, captured in chat session `7b79c9e2`: **`redfish.acequia.io/dev/team/owen-duncan/image-match/`** holds: - **`Viewfinder_-_How_to_Seamlessly_Flickrize_Google_Earth…-LRAj21y23r8.mp4`** + `.en.vtt` — Michael Naimark's **Viewfinder** Google Tech Talk ("How to Seamlessly Flickrize Google Earth"). The talk Stephen meant. - **`Through_the_Lens_Camera_Control-aPraFT6JilE.mp4`** + `.vtt` — a talk on the paper. - **`Gleicher-through-the-lense-camera-control.pdf`** — **Gleicher & Witkin, "Through-the-Lens Camera Control," SIGGRAPH 1992.** This is the paper / "writeup" Stephen referenced. - **`campanile-camera-calibration.md`** — a precise shot-analysis of the talk's **27:05 campanile demo**. - **`plan.md`** — a prior plan for a three.js through-the-lens calibration demo of the tower.
## The name Stephen was reaching for His verbatim question in that chat: *"what would you call the view-centric ui where it appears you are warping the world model when in fact you are adjusting the camera pose?"* → **Through-the-Lens Camera Control** (Gleicher & Witkin, 1992). That IS the campanile/Debevec "the camera is moving behind the scenes" insight, named. Our bead's framing (`#pose-ux-ui`, note 00) was right; this is its canonical citation.
## It validates our campanile rung exactly The `campanile-camera-calibration.md` analysis of the 27:05 demo describes, beat for beat, what our `solver.js` + pin loop does: | Their writeup (Naimark 27:05) | Our build | |---|---| | 2D photo ↔ 3D model, drag UV correspondences | image pane pins ↔ world geopoints (`pins[]`) | | minimise Σ‖π(K,R,t,Xᵢ) − xᵢ‖² | `solver.js` weighted reprojection LM | | LM, ~500 iters per dropped correspondence | `solveLM`, maxIters 80, re-solve on each `solve` | | 4 well-spread corners → DOF light up: translate → rotate → intrinsics | `solveFov:true`; 4-pin minimum gate; soft prior pins the gauge | | "the model *appears* to move; really (K,R,t) is changing" | snapshot-view-as-pose + the soft-constraint frame | | Debevec: vertices vs. Duncan: any known 3D point (a missing roof tile) | our pins take any UV↔geopoint, not just vertices | Key refinement to fold in later: their P3P/4-point DOF analysis (3 pts = exactly-6-DOF P3P with up to 4 solutions; 4 pts = +focal) is a cleaner intrinsics-solve schedule than our fixed `solveFov` — worth adopting, and worth surfacing the per-pin "DOF lighting up" as UX feedback.
## Provenance Naimark's Viewfinder ("Flickrize Google Earth") is the **direct ancestor of this exact app** — overlaying posed user photos onto a georectified Earth. We're doing the taos-engine + Google-Photorealistic-3D-Tiles version of it. Cite this folder as the design source; do not duplicate the media into the bead (large).