Updated

L.A.S.E.R. TAG

Laser-pointer graffiti, tracked by a camera and projected back, in a browser tab.

L.A.S.E.R. TAG: glowing laser strokes behind the Graffiti Research Lab logo

What it is

L.A.S.E.R. Tag is the Graffiti Research Lab's system for writing on buildings with a laser pointer: a camera watches the wall, software tracks the laser dot, and a projector paints glowing strokes wherever it went.

This repository keeps the original openFrameworks source alive, including a modernized 2026 build, and adds a browser version written from scratch that follows the original's structure. The browser version is what runs at laser-tag.localheist.com. Add a webcam and a projector and that is the whole setup.

How it works

  • The webcam feed is thresholded in HSV with OpenCV.js, tuned for a green laser by default, and candidate spots are scored by brightness and area to tell the laser from ambient light.
  • A Kalman filter smooths the tracked point, with optional optical flow and CAMShift on top. Tracking runs in a Web Worker so drawing stays smooth.
  • Two 4-point calibrations map camera pixels onto the projector's output and warp it for a projector standing at an angle.
  • Six brush modes (smooth, glow, basic, and the dope, arrow and fat ribbons) paint in the original nine-color GRL palette, with dripping paint, and a WebGL pass adds bloom.
  • The projector output opens in its own window, which the main page draws into directly and reconnects to over a BroadcastChannel after a refresh, while the controls stay on your screen. A mouse mode lets you draw without a laser.

Built with

  • JavaScript
  • OpenCV.js
  • WebGL
  • Tweakpane
  • Vite
  • openFrameworks

Started