// ft-handpanel: the hand recorder's headset panel (hands/rec/DESIGN.md). A SteamVR overlay // fixed to the headset that tells the person what to do with their hands while the cameras // record. It sits --distance ahead (1.2 m), centred UP_DEG above straight ahead, so the hands // stay clear below it, WIDTH_DEG across (4:3), dim and see-through like the gaze quick check. // It's drawn on the CPU and takes no input: the session runner (hands/rec/session.py) drives it. // // It also does the two jobs that need SteamVR's poses: the "touch the dot" target, a second // overlay (frametop.handpanel.target) fixed in the room, and the pose log, the head and the // controllers 250 times a second into poses.jsonl, which goes with each take. // // Control socket: abstract unix datagram "@ft_handpanel" (--socket NAME); a sender with an // address gets "ok ..." or "error ...". UTF-8; "|" starts a new line in text: // show / hide the panel (a "show" makes it visible with its first picture; // the target is separate: "target off" hides it) // title the big line at the top (empty to clear) // step a small line at the top right, e.g. "Section 3 of 11" // text the instruction: large, wrapped to the panel's width, centred // note an orange warning line under the instruction (empty to clear) // countdown <0..1> | off a thin bar along the bottom: the share of the prompt's time left // hands the "Left hand" and "Right hand" chips: seen (green), lost // (orange) or off (hidden) // bar [|] / bar off // the near/far bar: a track with a ring at the target and a dot // at the hand's position (-1: not seen). The labels are split at // "|", or else at the first space (default "Near" and "Far") // paused on|off "Paused" over the picture // image [mirror|both] / image off // the pose picture (a PNG, square, RGBA, a right hand as the wearer // sees it) in a column on the left, the text moving right: mirror // flips it (a left hand), both shows a flipped copy on its left // where / where off // a small diagram under the picture: where to hold the hands, a // front view (centre, left, right, up, down; or the bar's chest, // desk, eye), and how far out (near, mid, far) // action a cyan line under the instruction: "Ready? Press Space ..." // big large, under the instruction: the countdown's 3, 2, 1, then "Hold" // keys a small faint line along the bottom: the window's keys // rec on|off a red "Rec" dot by the step line while recording // strip ||