Inspiration

Ebru is the Turkish art of paper marbling. A master sprinkles pigment onto a trough of thickened water, draws it into shapes with an awl and a comb, then lays a sheet of paper on the surface and lifts the pattern off. No two prints can ever be the same. UNESCO inscribed it on the list of the Intangible Cultural Heritage of Humanity in 2014.

Almost nobody gets to try it. It needs a trough, sized water, ox gall, pigments, combs, paper and, above all, a teacher. Yet its gestures are small and human: a pinch of paint released over water, a fingertip drawn slowly through colour, a comb pulled in one breath. Those are exactly the motions Quest hand tracking reads well. Ebru did not feel like something to port to a screen; it felt like something that had been waiting for mixed reality, where your own desk can become the studio and your own wall the gallery.

What it does

Tekne (the Turkish word for the marbling trough) places a tray of water on your real table.

  • Poke a paint pot to choose a pigment.
  • Pinch above the water and let go to drop paint. The higher you release, the wider the drop spreads, and every new drop pushes the older paint outward exactly as ink does on size.
  • Dip a fingertip and draw it through the paint to create gelgit, the back-and-forth pattern.
  • Pinch the comb off the rim and pull it through: twelve tines turn the pattern into a classic combed tarama.
  • Pinch the paper, lay it on the water and let go. The print lifts, the water clears, and the framed print flies to the real wall you are facing.

Prints hang at eye level and step around the windows, doors and pictures already on your wall. They are still there next time, so your wall slowly becomes a personal gallery.

There are no menus and no controllers: every tool is an object you pick up. On first launch a wordless five-step lesson shows each gesture with a ghost fingertip inside the real tray, and each step completes only when you do it yourself. Three engraved tiles on the rim switch on hover painting (no precise dipping needed), high-contrast pigments and sound.

How we built it

Tekne is a WebXR application built with Meta's Immersive Web SDK (three.js, entity component system), delivered as one URL with nothing to install.

  • An exact model of the craft. Paint follows the closed-form model in Lu, Jaffer et al., "Mathematical Marbling" (IEEE CG&A, 2012). Each drop is an area-conserving map; strokes and combs drag the fluid with a smooth falloff. Every operation is a single inverse-mapped GPU pass over a 1536 × 1088 texture, so patterns stay crisp and the simulation costs nothing while the water is still.
  • Hands, read directly. We read all 25 WebXR hand joints per hand every frame. Pinch uses hysteresis so drops never fire by accident; the stylus is lightly smoothed to steady tremor and tracking jitter.
  • The room as part of the work. Scene understanding finds a table at seated height for the tray and the wall the user faces for the gallery. A pure, unit-tested layout routine slides prints along the wall until they clear every detected window, door and piece of wall art.
  • Sound with no samples. Every sound (water bed, pitched drops, a swish that follows stroke speed, paper and bell) is synthesised live with Web Audio and spatialised at the tray.
  • Tested before it shipped. 27 unit tests cover the marbling maths, the lesson flow, the wall layout and hand-pose features. Every interaction was exercised end to end in the Immersive Web Emulator (Meta Quest 3 profile) by driving its hands through its remote-control API. The demo video is that real footage, labelled as such on screen.

Challenges we ran into

  • Keeping marbling sharp. Our first version blurred the pattern a little with every drop, because each GPU pass resamples the whole texture. We now leave any texel that moves less than a fraction of a pixel untouched, so only paint that really moves is resampled.
  • Performance on modest hardware. Strokes and combs originally redrew the whole 1.7-megapixel texture. We restricted them to the rectangle actually affected and copy it back, verified the output byte-for-byte identical, and cut the cost of a stroke from 2.1 ms to 0.3 ms and a comb pass from 7.6 ms to 0.8 ms (timed on a laptop's integrated Intel GPU).
  • Real rooms are messy. Walls carry windows, doors and pictures. Hanging prints blindly would cover them, so the gallery treats every other detected surface on that wall as an obstacle.
  • A lesson nobody can get stuck in. Filming the demo revealed that poking the already-selected pot did nothing, which would have frozen the lesson at step one. Every poke is now acknowledged.
  • Building without a headset in hand for most of the work. We built the testing around the emulator's scripted hands so every gesture could be repeated exactly, and we kept every measurement labelled by where it was taken.

Accomplishments that we're proud of

  • A heritage craft reproduced from its actual mathematics, not imitated: the patterns that appear are recognisably battal, gelgit and tarama.
  • A complete loop in the first few minutes: a new user goes from an empty tray to a finished print on their own wall, taught entirely without words.
  • Passthrough that truly matters: the table holds the tray, and the wall holds the work, steering around what is already there.
  • Hands only, end to end, with comfort built in rather than bolted on.
  • Honest engineering: an exact simulation, a measured optimisation with identical output, 27 tests, and a demo made only from real app footage.

What we learned

  • Hand tracking is at its best with small, deliberate gestures on physical-feeling objects, not with menus in the air.
  • The fastest onboarding is showing, not telling: a ghost fingertip and a ring of light teach faster than any panel of text.
  • Mixed reality earns its place when the room changes the result. Placing the tray and the prints by what the headset sees did more for presence than any visual effect.
  • An exact algorithm can be both more beautiful and cheaper than an approximation.

What's next for Tekne

  • Guided traditional motifs with ghost guides: the lale (tulip), şal and bülbül yuvası (nightingale's nest).
  • Serpme: flicking a horsehair brush to spray fine drops, as masters do.
  • A daily motif and seasonal palettes, so each visit offers something new to make.
  • Sharing a print as an image, and a shared table where two people marble together.
  • A free release as an installable web app, followed by a Meta Horizon Store listing.

Built With

  • accessibility
  • github
  • glsl
  • immersive-web-emulator
  • immersive-web-sdk
  • meta-quest
  • meta-quest-3
  • mixed-reality
  • passthrough
  • procedural-generation
  • spatial-audio
  • three.js
  • typescript
  • vite
  • vitest
  • web-audio-api
  • webgl
  • webxr
Share this project:

Updates

Submission history