ADR-0004: 3D stage, 2D characters on camera-facing cards
- Status: Accepted (2026-09-29)
- Date: 2026-09-29
Context
The brief starts with 2D cutout characters (Skeleton2D, named parts) and adds 3D later. It also asks for camera type, lens and move per shot; marks, entrances and sightlines; the 180-degree rule, shot/reverse-shot and coverage as validator constraints; and set "lighting presets".
In a purely 2D world a "camera angle" is a different background painting, a reverse shot needs a second painting of the same room, and the 180-degree rule has no geometry to check. Every one of those features needs spatial data that a flat layer stack does not have.
Decision
- Sets live in 3D stage space (meters, +Y up), built from parametric kit pieces into meshes. The StyleSpec decides the look: flat, cel or painterly shading, ink on silhouettes and creases, paper texture, atmospheric fade.
- Characters stay 2D cutout rigs (Skeleton2D + Bone2D + skinned Polygon2D). Each is rendered at 1:1 screen resolution into its own SubViewport and shown on a camera-facing card standing on its mark. The card receives style lighting and casts a ground shadow.
- View selection is geometric. The rig draws the character at character yaw minus camera yaw, choosing among front, three-quarter, profile and back body views and a continuous 2.5D head. The staging picks the right view automatically.
- Distant scenery is backdrop cards at real distances, so parallax comes from actual camera motion.
- The framing solver and the film-grammar validators work on floor-plane geometry: marks, camera positions, and the axis of action between characters.
Alternatives considered
- Pure 2D multiplane (layered backdrops per angle, characters on layers).
- For: the classic look, and simple for a single fixed angle.
- Against: every new angle needs new background art; occlusion is manual layer sorting; camera moves are fake; the 180-degree rule cannot be computed.
- Rejected as the model. It remains possible as a style ("backgrounds: painted" plus a long lens flattens the 3D set).
- 3D characters from day one.
- Against: contradicts the brief's 2D-first plan, and 3D character generation from parameters is a much larger problem.
- Deferred to M10, where this ADR makes it a card swap.
Consequences
- Real cameras, occlusion and film grammar from M1. The brief's "3D later" becomes incremental.
- Kit pieces need 3D recipes. M1 uses primitives (box, cylinder, ring, extrude, panel); M2 adds kits as data.
- Painted-looking backgrounds depend on style shaders now and on Tier 2 matte paintings projected onto the set geometry later (M9).
- One SubViewport per visible character per frame. That is fine offline; interactive previews may render cards at reduced size.