Recording-in-Progress Lights

WiFi-synced LED panels mounted at every entrance of the MoCap volume, mirroring Unreal's TakeRecorder state. Green when idle, red the instant recording starts.

Unreal EnginePlugin DevelopmentHardwareESP323D PrintingTool DevelopmentVirtual ProductionMotion CaptureEmbedded
Role
Realtime Supervisor
Client
Versatile Media
Year
Nov 2023
Status
In Production
Type
Hardware + Plugin
Recording-in-Progress Lights

Recording-in-Progress Lights are three door-mounted LED panels at the Versatile Media MoCap volume, synced over WiFi to an Unreal Engine plugin. The instant the operator hits Record in Unreal’s TakeRecorder, every panel turns red. When recording stops, every panel turns green. No manual switches, no verbal “we’re rolling”. Three doors, three glowing red squares, one source of truth.

I designed the physical device (the 3D-printed enclosures, the production tuning) and rebuilt the software side as a standalone Unreal plugin that talks to the panels over HTTP, replacing the original module that lived inside another studio plugin. Arthur Kazakov wrote the original firmware and soldered the boards. The system has been in continuous use since November 2023.

In short: when Unreal records, every door knows.

The problem

The MoCap volume at Versatile Media has multiple entrances, and shoots involve dozens of crew, talent, and visitors moving in and out across a session. A take in progress is fragile: someone walking through a door, opening it suddenly, or speaking above a whisper can ruin it. The existing signals were ad-hoc: a verbal “we’re recording” called by the operator, sometimes a manual sign on the door, sometimes nothing at all.

The need was an automatic, glanceable, synced indicator at every entrance, one that knew the exact moment the operator started a take in Unreal, with no human in the loop to flip a switch.

What it does

Three identical LED panels are mounted at each of the volume’s three entrances, roughly ten meters apart. Each panel is a 16×16 RGB LED matrix in a 3D-printed enclosure, connected to the studio WiFi.

  • Green = idle. The volume is between takes; the door is safe to use.
  • Red = recording. A take is live; do not open the door, do not enter.
  • State changes are instant and synced. All three panels flip together within milliseconds of the operator pressing Record in Unreal, with no per-device lag and no “oh, that one’s still green” mismatch.
  • Hands-off operation. No physical switch, no manual reset. The lights follow Unreal’s TakeRecorder, which is already the source of truth for whether the volume is recording.
  • Failure-tolerant. A panel that loses WiFi auto-reconnects on its own (checking once a minute). A panel that’s offline doesn’t block the others or freeze the Unreal editor; the plugin dispatches commands asynchronously, so a single dead device is invisible to the rest of the system.

Technical implementation

Hardware. Each panel is built around an ESP32 microcontroller driving a WS2812B 16×16 RGB LED matrix (256 individually addressable pixels). The enclosure is a 3D-printed two-piece case I designed and printed in-house, glued together around the assembled board and matrix. Arthur Kazakov soldered the boards.

Firmware. Arthur Kazakov wrote the firmware for the ESP32: a custom async web server that listens for HTTP commands over WiFi, with auto-reconnection logic that checks the link once a minute and recovers transparently from outages or power cycles. WiFi credentials are baked into the firmware; the panels announce themselves on the network with their IPs once connected.

The original firmware supported a countdown display (0–9 second pre-roll matching the TakeRecorder countdown) and a multi-color status range. In production we locked the panels to green-and-red only with no countdown: the simplest possible signal a person walking toward a door can read at a glance. The full feature set still exists in the firmware if a future shoot needs it.

Unreal plugin. Originally implemented as a module inside the studio’s VM_VirtualCamera plugin. I rebuilt it as a standalone Unreal plugin that drops into any project on its own and communicates with the panels over HTTP: one plugin folder, no external dependencies, no host-plugin coupling. The plugin adds a settings section under Project Settings → Versatile VAN → VCam → Recording-in-Progress Lights, where the operator can enable/disable the whole module, list devices by IP, toggle individual devices, set brightness, and toggle “green standby” (whether idle panels show green or are dark). State changes hook directly into TakeRecorder events and broadcast to every enabled device in parallel.

In production

Three units, three doors, one Unreal session driving all of them. The system has been running on every Versatile Media MoCap shoot since November 2023, and has effectively eliminated the “did somebody start recording?” question that used to come up multiple times a day. Crew approaching a door now glance at the light; if it’s red, they wait; if it’s green, they walk in. No verbal coordination needed.