← Catalog

Camera presets

A shared vocabulary of six camera roles. Numeric values differ per lab bench, but each role's pedagogical reason is constant: orient, work, read a flat surface, read an instrument, observe a phenomenon, compare results.

Presets only set the starting vantage at each authored moment; the student can freely rotate, zoom, and pitch (mouse wheel / arrows / right-click drag) between them.

Vocabulary — 6 roles · Rules — 7 · Applied examples — 3

The six preset roles

intro

Opening establishing shot. Whole bench in frame so the student can orient.

pitch 25–35° · distance 2–3 m

working

Hands-on vantage for drag, placement, connection. Most steps live here.

pitch 45–65° · distance 0.5–0.9 m

overhead

Near top-down. Flat surfaces — paper drawings, field maps — where perspective distortion hurts legibility.

pitch 70–85° · distance 0.4–0.7 m

instrument

Tight on a single readout — digital scale, thermometer scale, ruler tick. Pitch matches the readout's face normal so digits read head-on.

pitch 10–70° (follows face normal) · distance 0.15–0.4 m · orbit_target override

phenomenon

Tight on a region being observed — compass cluster settling, thermometer stabilising. Typically time-paused.

pitch matches phenomenon · distance 0.2–0.5 m · orbit_target override

compare

Two artifacts framed side-by-side, equal weight. Neither dominates; often overhead or steep working angle.

pitch 60–85° · distance tuned to fit both · tight fov ~40°

Rules — when each role applies

  1. Every authored vantage has a pedagogical reason.

    Don't add a preset because "the scene looks nicer from there". Add one because there is a specific thing the student must see. If you can't answer what must be visible in one sentence, the preset isn't earned.

  2. Pitch is chosen by the face being observed.

    Match the camera's pitch to the readout's face normal so the student reads it head-on: flat/top-facing surfaces (paper, top-facing digital scales) want steep pitch 70°+; volumetric objects (cups, coils) want medium 45°–65° for depth cues during drag; vertical-face readouts (thermometer scales, upright dials) want shallow 10°–25° — a thermometer standing in a cup is unreadable from above. Working steps stay above 25° for desk context.

  3. Distance is chosen by the legibility requirement.

    If digits or needles must be read, distance must make them legible without further zoom. If an object must be grabbed, distance must make it grab-size. Ballpark: intro 2–3 m, working 0.5–0.9 m, instrument / phenomenon 0.15–0.5 m.

  4. Override orbit_target only for off-centre framing.

    Unity owns the orbit target by default. Override it only when the thing framed sits away from the scene centre — an instrument cluster, a paper corner, one compass out of four. The camera snapshots the previous target on override so it can restore on exit; don't rely on the next preset to also override.

  5. Lerp durations communicate intent.

    Step-to-step: 300–400 ms, trackable. Opening intro → working: 1000–1500 ms, cinematic. Reading zoom-ins: 400–600 ms, slightly slow so the student registers their action caused it. Exits back to working: 250–350 ms, snap-back feel.

  6. Readings that would be illegible at a shared vantage get their own step.

    If two instruments are too far apart — or too small at one zoom — to read together, split them into separate steps. Each uses instrument or phenomenon, with Continue or Unpause. Exit lerps back to working before the next step's preset takes over. Full rule in the authoring-patterns section.

  7. Student freedom is never suspended.

    After a preset lerps into place, the student can rotate, zoom, and tilt — even during paused_reading. Time is frozen, the camera isn't.

Applied — 8.3 L4 D3 coil magnetic field

intro role

initial_view

Purpose

The wide shot the student sees on load. Orientation, not interaction — the camera lerps inward to a working angle on step 1.

Why this zoom

distance 2.77 m fits coil, battery, four compasses and every clip with breathing room. pitch 27° reads as "standing at the desk" — physically present, not schematic — priming a hands-on expectation.

What the student must see
  • Whole desk in one frame — nothing cropped.
  • Spatial relationships: coil centre, battery right, compasses back.
  • Enough empty surface to read as a room.
{ yaw: 90.3, pitch: 27.1, distance: 2.768, fov: 55 }
Applied instantly via altsel initial_camera; step 1 lerps into setup_view over 1.2 s.
working role

setup_view

Purpose

The "doing work" angle — clip connections, compass placement. The camera rests here after the opening lerp and returns here after every observation.

Why this zoom

distance 0.70 m makes the coil and clip targets grab-sized (1:1 drag feel) while the far end of the coil stays in frame — no mid-task rotation needed. pitch 58° gives depth cues for clip placement while still revealing the flat desk for compass positioning.

What the student must see
  • Coil, both wire ends, battery terminals — all at once.
  • Clip home positions along the front edge.
  • Full compass-placement zone around the coil.
  • Enough desk that "where does this go?" needs no rotation.
{ yaw: 89.7, pitch: 57.9, distance: 0.698, fov: 50 }
Target of the opening cinematic lerp on step 1; implicit base that reading_view returns to on Unpause (steps 9, 15).
phenomenon role

reading_view

Purpose

Active only on reading steps, when the circuit is closed and compass needles align. The only preset that recentres the orbit target — onto the compass cluster rather than the coil, because the needles are the object of study.

Why this zoom

distance 0.42 m: each compass face fills a chunk of screen so needle direction is legible with no further zoom. pitch 65° (steeper than working) minimises perspective skew across four faces at different depths — at shallow angle their needles would skew unevenly.

What the student must see
  • All four compasses with equal emphasis — none dominates.
  • Needle orientation distinguishable, including subtle differences.
  • Coil in the background — needle deflection must tie to the energised coil.
  • Attached clip–battery connection — "why is this happening" stays in frame.
{ orbit_target: [0.019, 0.770, -0.104], yaw: 89.4, pitch: 65.4, distance: 0.424, fov: 50 }
Applied on paused_reading steps 9 and 15. Transient — on Unpause the camera lerps back to setup_view over 300 ms.

Applied — C.1 L10 D1 warm + cool water energy transfer

Proposed mapping — not yet authored

Four roles, heavy on instrument

Dominated by numeric readings — mass on a scale, temperature on a thermometer — repeated across trials. Both readouts are small and sit in different places, so working can't serve them alone. The camera zooms into each instrument individually and returns to working between.

The mixture-temperature phase is time-dependent (digits keep changing until equilibrium). That's the one reading that uses phenomenon with time paused; everything else uses instrument with Continue.

Procedure momentRoleNotes
Investigation loadintroWide shot of cups, scale, thermometer, baths.
Fill cups, place on scaleworkingMedium pitch — see fill depth.
Read scale massinstrument → ContinueTop-facing digital display — angled-down camera, pitch 50–70°, orbit target on scale.
Read starting temp (each cup)instrument → ContinueVertical thermometer face — near-horizontal camera, pitch 10–25°, orbit target on the scale's middle tick. One step per probe (R6).
Mix + insert probeworkingBack to the bench for the pour.
Watch temperature stabilisephenomenon → UnpauseSame shallow-pitch framing as the starting-temp read — the thermometer is still vertical. Time paused until equilibrium.
Repeat trialre-uses aboveNew condition, same camera sequence.
Compare trial valuescompareSide-by-side framing of the two recorded readouts.
Vertical thermometer framing: per Rule R2, the thermometer's readout face is vertical — the camera pitch must be shallow (10–25°) so the scale reads head-on. An overhead or steep angle foreshortens the tick marks and makes it guesswork. This is the canonical non-flat instrument / phenomenon case.
Schema gap: Scale and starting-temperature readings are not time-dependent, so they need a Continue button (not Unpause). ui: button (description-only) covers this; the investigation can be authored against it.

Applied — P.4 L4 D1 orbital shapes

Circle portion authored (orbits.html); ellipse pass pending

Overhead-heavy, with compare at the end

The whole activity happens on butcher paper — flat surface, perspective distortion would undermine the learning. overhead dominates; students drop to slight perspective only for pushing pins. Measurements and shape comparisons need near-top-down so circles read as circles.

Procedure momentRoleNotes
Investigation loadintroWide shot of paper, pins, ruler, string loops.
Tape paper, gather toolsworkingSlight perspective for tactile setup.
Place pin, trace circleoverheadNear top-down so the circle reads true.
Measure radius with rulerinstrument → ContinueTight on ruler tick. One step per measurement (R6).
Calculate eccentricity(UI side)No camera change; widget interaction.
Place two pins, trace ellipseoverheadSame vantage; watch the ellipse form symmetrically.
Measure major axis, foci distanceinstrument → ContinueOne step per measurement.
Label features, add arrowsoverheadStudent draws; camera fixed.
Compare circular vs ellipticalcompareBoth drawings together, overhead, equal weight.
Note: No phenomenon role needed — nothing time-dependent. Pattern: setup → overhead for construction → repeated instrument measurements → compare for the pedagogical payoff.

Authoring patterns for future investigations

Rule

Split one step per reading

When to apply

When an investigation has multiple readings too far apart — or too small at any shared vantage — to be legible at once. Collapsing forces the student to zoom around (breaks flow) or squint (breaks trust). Split each reading into its own step.

The rule
  • One step per reading. Each gets its own altsel step with its own zoom preset, tight enough to read without further zoom.
  • Continue or Unpause, never both. Continue when the reading is static, Unpause (paused_reading) when the value would keep changing if time ran.
  • Exit lerps back to working. Continue/Unpause lerps to setup_view before the next step's preset, giving a clean breathing moment between readings.
  • Keep the object in frame, not just the readout. Frame instrument and phenomenon together so the value ties to the physical thing, not an abstract dial.
  • Camera stays static during the reading. No mid-step animation; the vantage holds until the student acts.
What this is not
  • Not an excuse for a single "wide" zoom-in over multiple readings. If you need a magnifier to read it, so will the student.
  • Not a replacement for the notepad. The step frames the value; the notepad records it.
Schema today: ui: paused_reading (Unpause) + ui: button (Continue, description-only) cover both variants.