01

Marker detection

The camera finds a known image in the frame and reports its pose. Six frames of stable tracking before we accept it, so a glimpse across the room does not start a lesson.

~400 ms
02

Plane detection

A downward raycast finds the horizontal surface the marker is lying on. Two and a half seconds is the budget; past that we fall back to the marker pose alone.

~600 ms typical
03

World anchoring

The workbench is parented to a world anchor, not to the tracked image. That single decision is why it does not jitter when the marker leaves frame.

~120 ms
04

Live simulation

192 vertices per trace, recomputed every frame from a pure sampling function, pushed to the GPU in a single call. No allocation, no garbage, no stutter.

60 fps

Try it

The same maths, in your browser

These are the five sampling functions the Unity build runs, ported verbatim. Drag the sliders and watch the readouts follow.

Live signalSine

Frequency

3.0 Hz

Amplitude

0.70

3.0 Hz

Period 0.33 s · higher frequency packs the crests closer together

0.70

Headroom is fine — clipping starts above 0.94

Waveform character

Nyquist minimum
6.0 Hz
Third harmonic
9.0 Hz
Level
−3.1 dB
HologramGlass panel

Readout

3.2 Hz

Readout

0.72

Readouts are projected to screen space each frame, not world-space canvases — cheaper, and legible at every distance.

The workbench

Panels that never hide the instrument

The plot sits on a glass hologram above the marker. Four readouts float around it — frequency, amplitude, period, waveform — positioned so none of them can cover the trace from any viewing angle you are likely to take.

The control dock lives at the bottom of the screen rather than in world space, because a slider you have to reach into the scene for is a slider nobody uses. Drag its handle down and it collapses to a strip, leaving the whole view to the wave.

Hologram size
300 × 128 mm at the anchor plane
Hover height
160 mm above the marker
Readouts
Screen-space projection of four 3D anchors
Dock
Collapsible, drag threshold 30 pt

Phase 3

A face becomes a signal

The third phase is the one students remember. The AR session switches to the front camera, tracks a face mesh, and reduces it to 68 ordered landmarks. Those landmarks are then unrolled into a single one-dimensional trace.

That is the whole lesson in one gesture: a shape in space becomes a signal in time. Tilt your head and the trace shifts. Move closer and — because the vector is normalised by inter-ocular distance — it does not. Which is exactly the point about why normalisation exists.

No face data leaves the device, and none is stored. The mesh is computed, converted to a feature vector, drawn, and discarded within the same frame. There is no capture step and no upload path in the code.

Unrolled feature trace

Privacy

The camera is a sensor, not a recorder

0

frames written to disk

0

network calls during a session

0

third-party analytics SDKs

Marker detection, plane tracking and the face mesh all run in the device's own AR runtime. The app never gains access to raw frames it could store, and there is no code path that would send one anywhere.

Watch the whole sequence

The prototype runs marker scan, plane lock and workbench anchoring end to end.