← Projects

Fog Mirror

Write a love note by clearing a live, fogged mirror

In progress

Started Updated

Problem
A video call shows someone, and a drawing canvas shows a message, but the two usually remain separate. The reference asks whether writing can instead reveal the person behind it, like a private note traced into steam on a mirror.
Approach
Render a mirrored camera beneath a soft, persistent fog layer, then composite the sharp live image through a feathered drawing mask. Establish the visual contract with mouse, pen, and touch before adding pinch and breath tracking as separate input adapters.
Outcome
In progress. A local TypeScript MVP now includes the camera permission gate, smooth fog compositor, persistent reveal drawing, adjustable brush, restore action, and local PNG capture. Earlier MediaPipe studies established stabilized pucker/funnel blowing plus locked pinch and fist erasers. Feature-by-feature validation now starts with an isolated blow lab: a fail-closed mouth gate requires valid lip landmarks, plausible mouth geometry, and the required blendshapes before any blow score is measured. Losing the mouth immediately stops fog generation and clears the lock, while a 250 ms freshness timeout prevents a stalled camera frame from keeping generation active. Blocked measurements display as unavailable instead of reusing a stale signal. Hand tracking is present only as a safety guard: stable, high-confidence palm overlap marks the mouth covered and cancels the blow signal, while a hand beside the cheek is ignored. Live validation confirmed the relaxed, cheek-side, and palm-cover cases. The compact lab exposes face auto-tuning and timing thresholds, keeps the dense landmark mesh hidden by default, and intentionally omits fog controls and hand gestures. Automated tests and the production build pass. Microphone-confirmed airflow and reconnecting the validated signal to fog accumulation remain upcoming milestones.
TypeScript Canvas WebRTC

The first milestone is a local, privacy-preserving prototype that makes the fog-and-reveal effect feel convincing before sharing or recording features are considered.