Contents

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

  1. 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).
  2. 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.