Vision node
Vision Tracking
On-device body, hand and face tracking from a connected camera (or any node's image). Outputs landmark structures already aligned to where the image is drawn, so generators sit exactly on the tracked features. Body supports 2D (multi-person) and 3D (single-person, with depth). Fully private — all processing runs on your Mac.
Inputs
| Port | Type | Default |
|---|---|---|
| ImageThe picture to look at. Cable a Camera Input for the live path, or any other image node and it gets converted per frame. | image | — |
| EnableOff stops submitting frames and empties every output. | bool | true |
| BodyPose tracking mode: Off, 2D Pose for several people, or 3D Pose which adds depth but only for one person. Anything outside the list behaves as Off. | int | 0 |
| Body Without HeadDrops the joints above the neck from the Body output — handy for dancers when face points only add noise. | bool | false |
| Max PersonsHow many people the Body output reserves slots for, so you can address person3 before they walk in. 0 means unlimited, and only the people actually seen are emitted; applies to 2D Pose only. | int | 4 |
| OrderHow detections are assigned to slots: Track keeps a stable identity across frames, the spatial modes re-sort every frame by size or screen position. Values outside the list behave as Track. | int | 0 |
| HandsTurns on hand tracking — 21 landmarks per hand on the Hands output. | bool | false |
| Hand Tips OnlyKeeps only the fingertip landmarks, for a much lighter Hands structure when you just need five points per hand. | bool | false |
| FaceTurns on face landmark tracking on the Face output. | bool | false |
| QualityHow far the picture is downscaled before Vision sees it — full resolution finds small and distant subjects, lower settings cost far less. Values outside the list snap to the nearest entry. | int | 2 |
| Tracking FPSCaps how often frames are submitted. Auto follows the source as fast as it arrives; picking a lower rate frees CPU and the smoothing hides the gaps. | int | 0 |
| SmoothingTames landmark jitter and the strobe you get when tracking runs slower than the render. Clamped to 0…1; 0 is raw, above about 0.8 fast motion visibly lags. | float | 0.5 |
| ResponsivenessHow much the smoothing gets out of the way during fast motion — higher keeps quick gestures crisp while slow poses stay calm. Clamped to 0…1. | float | 0.5 |
| Hold TimeHow long, in seconds, a briefly lost person, hand or face keeps its last position instead of snapping to zero. Negative values count as 0; 0.2…0.5 covers normal detection gaps. | float | 0.25 |
| Max HandsHow many hands may be tracked at once. Values below 1 are treated as 1; each extra hand costs detection time. | int | 2 |
| MirrorFlips the landmark positions left to right so a front camera reads like a mirror. Turn it off when the picture is not mirrored. | bool | true |
| Flip YFlips the landmark positions vertically, for sources that arrive upside down. | bool | false |
Outputs
| Port | Type |
|---|---|
| BodyPose tracking mode: Off, 2D Pose for several people, or 3D Pose which adds depth but only for one person. Anything outside the list behaves as Off. | json |
| HandsTurns on hand tracking — 21 landmarks per hand on the Hands output. | json |
| FaceTurns on face landmark tracking on the Face output. | json |
| Person Count | int |
| Confidence | float |
What Is Tracking?
Vision Tracking watches a camera feed and finds landmarks — specific points on a person's body, hands, or face (a wrist, a fingertip, the tip of the nose). For each point it reports a position you can wire into anything in your graph.
Think of it as the camera "understanding" what it sees: instead of just pixels, you get coordinates that say "the right hand is here, the head is there."
The Key Idea: Aligned Coordinates
The single most useful thing about this node: the landmarks come out already lined up with where the camera image is drawn on screen. If you draw a dot at the "right wrist" position, it lands exactly on the wrist in the picture — no manual math, no matter how you've positioned, scaled or rotated the camera image.
Internally the node reads the source's position, scale and rotation and the frame's shape, then maps every point into Grafit's coordinate space for you.
How It Works
The heavy lifting runs on Apple's on-device Vision framework, off the main thread so it never stalls your visuals. Because recognition is slower than your render rate, raw points would jitter and strobe — so a One-Euro filter smooths them (you control how much). When several people are present, each gets a stable slot that follows them frame to frame, so "person 0" stays the same person.
2D body mode finds multiple people; 3D body mode finds one person but adds depth (how near/far each joint is). Hands and faces are tracked independently and can be attached to a person.
Parameters
| Parameter | What it does |
|---|---|
| Body | Off / 2D Pose (many people) / 3D Pose (one person + depth). |
| Hands / Face | Turn hand and face tracking on or off. |
| Smoothing | 0 = raw & twitchy, 1 = very smooth (but slightly laggy). |
| Responsiveness | How quickly smoothing "catches up" on fast motion. |
| Quality | Higher = more accurate, lower = faster. |
| Order | How people/hands/faces are numbered: Track (stable ID), Largest, Left→Right, etc. Stops them flipping between frames. |
| Hold Time | Keeps a person in place for a moment if tracking briefly drops out. |
| Mirror / Flip Y | Match the image orientation if the skeleton appears flipped. |
Examples
- Glowing skeleton — Camera → Vision Tracking (Body on) → Body Skeleton → Canvas.
- Hand-controlled circle — Vision Tracking (Hands on) → Hand Landmark (pick "index tip") → its X/Y into a Circle's position. The circle follows your fingertip.
- Face-pinned mask — Vision Tracking (Face on) → Face Landmark → drive an image's position and size from the face.
- Crowd colors — 2D Pose with Max Persons 4 → Body Skeleton with "Per-Person Colors" → everyone gets their own color.
Tips
- Start with Smoothing ~0.5. Raise it if points jitter; lower it if they feel laggy.
- If the skeleton is mirrored or upside-down, toggle Mirror / Flip Y.
- For lively crowds use Order = Left→Right so person numbering stays predictable.
- It can also track any image, not just a camera — feed it a Joint Crop output to track a zoomed region.
Open Vision Tracking in the interactive catalog →
Vision Tracking is one of 381 nodes in Grafit Pro.
Free download. Every feature for 7 days, no card. Then €99.99 once — or keep playing your projects as a Player.