Necklace
JTON · five falsified anchors, then a tracker that holds still
July 2026
The story
Necklace tracking looks like a face problem. Find the chin, hang the necklace below it, done. Five successive anchor designs were built on that assumption, each one smarter than the last, and every single one failed the same live test: the necklace swings when the head turns. The reason is anatomical, not mathematical. A necklace rides the body. The head rotates freely above it.
Accepting that changed the question from "how do we smooth the face anchor harder" to "what does a necklace actually follow". The answer is the shoulders, and the anchor moved there. Then came the second problem: a tracker can be smooth or it can be responsive, and every naive setting trades one for the other. The hook engine ends that trade.
drop at public/jton/necklace/media/tracking-demo.mp4The hook engine
Three mechanisms, one behaviour:
- Adaptive smoothing. Heavy when the neck is still, so jitter dies. Light when it moves, so nothing trails. The blend is keyed to measured speed.
- Velocity lead on the raw signal. The prediction term reads velocity from the unsmoothed input, so it ramps the instant real motion starts. This is the fix for "trails at onset, then catches up".
- A lock state machine. At rest the position hard-locks; that is the measured zero. Entry needs consecutive quiet frames, exit needs both speed and distance, so noise cannot unlock it and real motion unlocks it in one frame.
The turn layer
Making a torso turn feel three-dimensional while rendering a flat product image is a texture problem. The necklace's footprint stays anchored while its texture flows around the neck, driven by torso yaw, with the jaw acting as a soft occluder. The layer passed its offline checks on real pose frames.
It runs deliberately isolated from the production engine. Sharing code between the turn experiments and production broke production twice, so the two stacks were separated permanently. That separation is an architectural rule now, not a leftover.
drop at public/jton/necklace/media/turn-demo.mp4Guards, found the hard way
Live failures on this engine were handled by finding the root cause first and fixing second. One example shaped the design. The necklace kept hiding when the user turned their head, and the cause turned out to be a guard reading face yaw while the necklace rides the torso. The fix keys hiding to shoulder foreshortening and shoulder visibility, so a head turn no longer hides a necklace that is still plainly visible. The close-up guard works in three zones by face size, and its position hold uses the last confidently seen shoulder line rather than extrapolating anatomy that has left the frame.
Performance
Pose and face inference run in a Web Worker with a six-second watchdog and an automatic main-thread fallback, so a stalled worker degrades instead of freezing. Detection input is capped at 480 pixels on the long edge. Compositing reads back only the pixel band around the necklace. Pixel ratio is capped on mobile.
Open items
- A final live hardware pass on hook feel and turn smoothing. That is the last check before the turn layer graduates from demo to product candidate.
Nawaz Labs