Three Track
Point a camera at a moving object and stop hand-keying it
- target
- track
The fastest way to hate a 3D workflow is a camera that needs re-keying every time the subject moves. Three Track is WAS Node Suite's answer: instead of working out camera numbers by hand, you hand it the object and tell it what relationship to keep. It's one of the 43 nodes in the pack's Three.js group (this is WAS Node Suite v3, by the way - the author shipped a full 457-node rewrite in late 2026, so everything "Three" here is fresh territory).
Why you'd reach for it
The WAS Three system is a scene graph you build out of wires and watch in the browser. Normally you place the camera with numbers on Three Perspective Camera or Three Orthographic Camera: a position, and a fixed point to look at. That's fine for a static diorama and miserable for anything that moves - a turntable spin, a character walking, a plane gliding past. Track is the node for the moving case. It sits between the object and the camera and keeps the two locked together.
How it works
Track doesn't render anything itself. It's a tiny descriptor node: it records the mode, three offsets, an aim height and a damping value, plus the id of the object you're tracking, and hands all that to a camera's track socket. The scene itself runs in the browser on WebGL, so the aiming and following math happens there, each frame. Because it's a live reference, it follows the object as it is at that moment - something being spun by Three Animate Transform or walked by Three Play Animation is tracked straight through the motion. No bake, no re-run.
One gotcha worth repeating because the tooltip is blunt about it: the object is not copied. Track just stores the id and the browser finds that object in the scene. So the same object you feed Track also has to be wired into Three Group or Three Scene, or there's literally nothing there to find. Feeding it only the track node gets you a camera staring at nothing.
The inputs that matter
mode-aimturns the camera to face the object and stays put (a security-cam pan, or a product shot where the object spins and the camera holds).followmoves the camera with the object while keeping the orientation it had.aim and followdoes both - a camera rigged to the subject, which is what you want for a chased character.offset_z- how far back the camera sits;8.0trails by eight units.offset_xis sideways,offset_yis height (positive looks down).aim_offset_y- raises the point it aims at above the object's middle. Set1.5to aim at a figure's head when its center is at its waist, instead of framing the belt buckle.damping- how much the camera lags.0.0is locked tight;0.85drifts behind and smooths a jittery subject. This is your "handheld feel" knob.target- the object input itself, wired from whatever you placed in the scene.
The single output, track, goes into the track socket on either the perspective or orthographic camera node. Once it's wired it overrides the camera's own fixed target position - you don't set both.
Installation
This is a WAS Node Suite node, so you're installing the whole suite. In ComfyUI Manager, search for WAS Node Suite and install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui.git
then restart ComfyUI. Requires ComfyUI 0.14.0+ and Python 3.10+. Nothing extra downloads - three.js ships bundled inside the pack and the browser fetches it from your own server only when a scene runs. No API keys, no model files.
Where people get burned
- Camera not moving? Check
mode.aimdeliberately keeps the camera planted and only turns it; if you want it to travel with the subject, that'sfolloworaim and follow. - Nothing tracked? The object isn't actually in the scene - wire it into the group or scene too, not just into Track.
- Motion looks drunk? That's
dampingdoing its job. Crank it to0.0for a dead-locked shot. - The whole Three group is missing from your node menu? These 43 nodes sit behind the
features.threejsgate in your<user dir>/was-node-suite/config.yaml. It defaults on; if you (or an old config) turned it off, the nodes vanish.
The scene you're aiming lives in the browser preview, so you'll be watching it in Three Viewer - and when you want actual frames instead of a live look, hand the app to Three Render.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| target | THREE_OBJECT | The object to track. Wire the same object into Three Group or Three Scene as well, so it is actually in the scene to be found. | |
| mode | COMBO | aim | `aim` turns to face the object and stays put. `follow` moves with it and keeps facing the way it was. `aim and follow` does both, which is a camera rigged to the subject. |
| offset_x | FLOAT | 0.0-10000–10000 | Where the camera sits relative to the object, across. 0.0 is level with it. |
| offset_y | FLOAT | 0.0-10000–10000 | Where it sits above the object. 2.0 looks down on it, -2.0 up at it. |
| offset_z | FLOAT | 0.0-10000–10000 | How far back it sits. 8.0 trails the object by eight units. |
| aim_offset_y | FLOAT | 0.0-10000–10000 | Raises the point it aims at, above the object's own middle. 1.5 aims at the head of a figure whose middle is at the waist. |
| damping | FLOAT | 0.000–0.99 | How much the camera lags behind. 0.0 is locked to the object, 0.85 drifts after it and smooths a jittery subject. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| track | THREE_TRACK | The tracking, for a camera's track socket. |