Note 00 — Stephen's directives at hatch (2026-06-16) (Image Pose Uxui)

**Note** from Bead: Image Pose Uxui · [canonical source](https://redfish.acequia.io/guerin/.agents/74c30681-2b0c-48b2-b2a8-9e21190a4926/2026-06-16/notes/00-stephen-directives.md) · session 2026-06-16 · discussion: Talk: Image Pose Uxui

Near-verbatim capture of the hatching prompt, so the seed carries its charge. Chat ground-truth lives in `../chats/2026-06-16-image-pose-uxui.md`. > "start-bead image-pose-uxui > > let's use santafe.live/set-time-place/ as an example app for setting time and place. for now we can > store pose and image as an artifact in your bead as downloads is not available. > > let's use taos-engine with dem and google photorealistic 3d tiles. create a byok area for google key > on startup. or use sample key. we will later track the usage. > > mount-beads that have to do with michael naimark's viewfinder tech talk where he shows the paul > debevec's calibration of the berkeley campanile. 3d geopoint of a the georectified 3d model is > overlayed and appears to translate to the photo. but implementation behind the scenes is the camera is > moving. > > the second model to a uv in image might include rotation and translation or lens intrinsics. these can > all be related to soft constraints. > > there's a writeup in a bead about this paper and name of the space in the 90s > > update plan" (Note: the live app folder is `santafe.live/set-space-time/`, not `set-time-place/` — same app.)

## Unpacking **The two models, both soft-constraint relaxations.** Stephen names two distinct calibration interactions (rungs 4–5 of `#pose-ux-ui`'s ladder), and the Naimark/Debevec lens unifies them: 1. **Snapshot-view-as-pose (the "camera is moving" insight).** In Naimark's viewfinder tech talk he shows Paul Debevec's calibration of the Berkeley **Campanile**: the georectified 3D model is overlaid and *appears to translate onto* the photo — but the implementation behind the scenes is that **the camera is moving** to fit. So the interaction is: steer the virtual camera over the georectified world (DEM + 3D tiles) until model and photo register; the camera's resulting 6-DOF + fov *is* the photo's pose. 2. **Campanile UV↔geopoint (the second model).** Pinning a pixel `(u,v)` in the image to a world point "might include rotation and translation or lens intrinsics" — i.e. each correspondence constrains some subset of {extrinsics (R,t), intrinsics (f, principal point), distortion}. Solve the camera from ≥N well-spread pairs (PnP / bundle-adjustment). **"These can all be related to soft constraints."** Per feedback_every-constraint-is-soft: a pose is the current minimum of a collective error surface, not a hard truth. Each UV↔geopoint pin, each view-match, each prior (a rough 2D placement from `set-space-time`) is a **soft constraint** with a weight; the solve relaxes toward least-action coherence and later calibrators can reweight. This is bundle-adjustment / factor-graph reframed — the same frame as `#nuke-geo-camera`'s `camera-calibrator` (celestial tie-points + Levenberg-Marquardt). **The (pose+intrinsics+distortion+time) tuple.** Per `#nuke-geo-camera`: all our cameras share one tuple, differing only by convention. The `imagePose` schema already carries the extrinsics + fov (`Latitude/Longitude/Elevation/heading/pitch/roll/fov/fovy/far`); the campanile rung extends it toward intrinsics + distortion (the k1,k2 / principal-point the solver recovers).

## Mounts (the Naimark/Debevec thread) - `#pose-ux-ui` (`edb06426`) — birth-parent; already frames "the campanile approach" (Debevec's Campanile Movie, image-based pose recovery) as rung 5 of the ladder. - `#nuke-geo-camera` (`a55f5270`) — the camera isomorphism + the bundle-adjustment solver math.

## Open questions 1. **The 90s-space writeup.** Stephen recalls "a writeup in a bead about this paper and name of the space in the 90s." A grep of the local `.agents/` tree for Naimark / viewfinder / "Be Now Here" / Interval Research / Exploratorium found **no dedicated writeup** (only an incidental "viewfinder" in an unrelated 2026-04-26 YouTube-caption artifact). → Ask Stephen for the bead/URI, or offer to write the note (Debevec's *Campanile Movie* = 1997, "The Campanile Movie", UC Berkeley SIGGRAPH; Naimark @ **Interval Research Corporation** in the 90s; "Be Now Here" 1995). Confirm the exact space name with him before asserting it. 2. **Solver location for the campanile rung:** client-side PnP (small JS solver) vs offer-to-service (inherits `#pose-ux-ui` open-Q 2). 3. **Sample Google key:** does Stephen have a shareable Maps-Platform key to seed the BYOK panel, or BYOK-only at first?