Skip to content

ADR-048 — Tiangong Explorer asset pipeline and nav placement

Status · Accepted Date · 2026-05-07 Closes · RFC-014 (with ADR-049, ADR-050) TA anchor · §components / primary-route-pages Related · PRD-011, ADR-040 (the ISS analogue), ADR-016 (build-time assets), ADR-017 (i18n), ADR-046 / ADR-047 (provenance)

Context

PRD-011 / GitHub #50 introduce /tiangong: a rotatable Tiangong with per-module panels mirroring the /iss playbook. RFC-014 OQ-1, OQ-4, OQ-7 asked where the mesh comes from, what the Earth backdrop is, and where Tiangong sits in nav.

The wrinkle vs RFC-013: NASA-3D Resources is unavailable for Tiangong. The Wolf Amendment legally prohibits NASA cooperation with Chinese space programmes, so no NASA-authored Tiangong models exist. Asset sourcing for any future GLB swap is harder, not easier, than ISS.

Decision

Model source (RFC OQ-1 — Option A)

V1 ships a code-built diagrammatic Tiangong in src/lib/tiangong-proxy-model.ts: Three.js cylinder + box primitives assembled at runtime so each canonical module id from tiangong-modules.json maps to a named pickable mesh (userData.moduleId). Identical pattern to ADR-040. No Node-side GLTF export (same constraint as ISS).

Rationale: The code-built proxy ships immediately, is MIT-licensed, has zero asset-sourcing risk, and renders the recognisable T-shape silhouette in ~2,000 tris (3 module cylinders + 8 solar wings + 5-segment Chinarm + 2 visiting vehicles). A future GLB swap (RFC-014 OQ-1 options B/C/D) is deferred to V1.5/V2 once the credits-rollout pipeline (ADR-046 / ADR-047) has matured for Chinese-state imagery + model provenance.

Budget: Proxy stays ≪ 50k tris (low thousands). A future CMSA / Sketchfab / Blender-authored GLB must stay within PRD ~50k tris and < 4 MB gzipped.

Earth limb backdrop (RFC OQ-4 — Option B)

Static Earth limb behind the station using existing texture static/textures/2k_earth_daymap.jpg (same asset as /iss + /earth + /explore): large textured sphere, no animated rotation in V1.

Insert TIANGONG after ISS, grouping the LEO crewed-habitat cluster:

EXPLORE → MISSIONS → PLAN → FLY → EARTH → ISS → TIANGONG → MOON → MARS

Earth-object panel migration

Tiangong currently lives as a 3-photo EARTH_OBJECT_QUERIES panel (static/images/earth-objects/tiangong/). On /tiangong ship the earth-object entry is removed and the asset folder deleted; gallery imagery moves under the station-modules pipeline (see ADR-049 + Phase G of the rollout plan).

Build hook

npm run build does not invoke Blender or mesh exporters. Adjust layout in tiangong-proxy-model.ts when module positions change.

Consequences

Positive: Predictable CI; no Wolf-Amendment-tangled asset checkout in V1; ships fast; clear path to swap to a vetted GLB once provenance work matures.

Negative: V1 silhouette is diagrammatic, not photoreal — acceptable for interaction proof; PRD "recognisable Tiangong" is met via the iconic T-layout and labelling, not film-grade mesh.

Implementation notes

  • Proxy builder lives in src/lib/tiangong-proxy-model.ts; shared station helpers (setShadowFlags, cylinderBetween, makeWingPair) in src/lib/station-geometry.ts (extracted from iss-proxy-model.ts).
  • Future GLB swap path: a separate RFC will revisit OQ-1 options B/C/D once static/data/image-provenance.json workflow has shipped a Chinese-source case.

Orrery — architecture documentation · MIT · No tracking