Skip to content

feat(server): capture and serve real per-facade (front/rear/side) angle renders for the Building Customization Canvas backdrop #407

Description

@nigel-hall-codes

While verifying #392's fix (canvas now prefers a real render over the fake FacadeIllustrationView), we found the canvas only has ONE real image per building available — the whole-building GET /buildings/{osm_id}/thumb — so its use was restricted to Front/Street facades only. Back/Left/Right still fall back to the procedural illustration, since showing the front-ish whole-building render on those facades would be misleading.

The real gap: the per-facade backdrop endpoint (GET/PUT /canvas/{osm_id}/{facade}/backdrop) already exists end-to-end on the iPad client (ServerClient.fetchBackdrop/uploadBackdrop, FacadeCanvasViewModel.loadBackdrop) — but the server never auto-populates it. Today it only holds data if a user manually uploads a reference photo via the app. The endpoint's own code comment calls this out directly: "The G2 asset-binary endpoint (#300) will serve the real UV-mapped render once shipped; this returns nil gracefully until then."

Also worth noting: for this synthetic OSM-footprint city, even the existing whole-building /thumb render turned out to be a flat colored footprint extrusion, not a photographic/elevation view — confirmed visually on the simulator while testing #392. So "proper front/rear/side angles" most likely need fresh Unity camera captures per facade direction (straight-on orthographic elevation shots), not something we can just repurpose from an existing render.

Scope:

  1. Figure out how Unity can capture a straight-on elevation render for each of a building's facades (front/rear/left/right, plus the ranked street-facing edge where applicable) during the import/bake pipeline.
  2. Have the server pipeline store and serve these per-facade renders — via the existing /canvas/{osm_id}/{facade}/backdrop endpoint (auto-populated instead of upload-only) or a new dedicated endpoint if that one's semantics don't fit cleanly.
  3. Once real per-facade renders exist server-side, the iPad canvas (BuildingCanvasView.realFacadeImageData, added in fix(ipad): Building Customization Canvas shows generic placeholder illustration instead of the real building facade render #392) can drop its Front/Street-only restriction and show a real backdrop uniformly on every facade.

This is primarily Unity + server pipeline work — tracked here in UnitySF. The iPad-side follow-up (removing the facade restriction once real backdrops exist) is expected to be a small separate fix(ipad) issue once this ships.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions