Hand-gesture AR that runs entirely in your browser β frame a zone with your hands
and turn it into a black hole, an ocean, frozen time, molten lavaβ¦
No install. No account. Nothing recorded or uploaded.
Powers β’ Gestures β’ Run it β’ How it works β’ Development
Sixteen reality transforms, applied live inside the zone you frame β GRAVITY OFF, FREEZE TIME, SPACE TWIST, BLACK HOLE, OCEAN, NEON CITY, LAVA, PIXEL, VOID, THERMAL, HOLOGRAM, ANIME, MANGA, SKETCH, VHS β switchable by tapping a chip or by voice: "make this anime", "freeze time", "black hole", "clear".
The controls run at camera-native cadence with One-Euro-filtered landmarks β tracking is tuned to stay on MediaPipe's fast ROI path during quick pinch-drags, grabs bind to the hand that grabbed, and brief tracking flickers never drop your zone.
| Gesture | Action |
|---|---|
| β Raise an open hand | A zone appears around your palm and follows it |
| ππ Both hands | Stretch a panel wide between your palms |
| β Snap a fist (or π€ pinch) | Lock the zone onto reality |
| π€ Pinch inside | Drag the zone around |
| π€π€ Two-hand pinch | Scale + rotate |
| π Palm hold | Summon a new zone |
| β Fist hold | Erase |
Live demo: zakriaz.github.io/reality-editor β allow the camera, raise a hand.
Single file: download Reality Editor - Standalone.html and double-click it. React, the engine, and the runtime are all inlined β only the MediaPipe hand-tracker model loads from a CDN.
Local dev server:
python3 -m http.server 8899
# open http://localhost:8899/Reality%20Editor.dc.htmlgraph LR;
CAM[π· getUserMedia] --> MP[MediaPipe HandLandmarker];
MP --> FSM[Gesture FSM<br/>summon Β· shape Β· lock Β· drag];
FSM --> GL[WebGL warp pipeline<br/>12 effect shaders];
CAM --> GL;
GL --> FX[fx canvas];
FSM --> UI[ui canvas Β· zone chrome];
VOICE[π Web Speech Β· optional] --> FSM;
Hand tracking runs locally in the browser via MediaPipe Tasks Vision; a finite-state machine turns landmarks into summon/shape/lock/drag/erase intents; a WebGL fragment-shader pipeline warps the live camera feed inside the selected zone (with a 2D-canvas fallback). Voice is optional Web Speech β nothing ever leaves the machine.
| File | Role |
|---|---|
engine.js |
Core: camera, hand tracking, gesture FSM, WebGL effects, voice |
Reality Editor.dc.html |
UI component (template + logic) |
support.js |
Component runtime (generated β don't edit) |
build-standalone.py |
Bundles everything into the single-file standalone |
docs/index.html |
The standalone, deployed to GitHub Pages |
original/ |
Pre-tweak snapshot of the imported design |
index.html, css/, js/ |
Earlier prototype, kept for reference |
Rebuild the standalone after touching the engine or UI:
python3 build-standalone.py && cp "Reality Editor - Standalone.html" docs/index.htmlBuilt by Zakariae Belfkih Β· @7_akaria Β· MIT
