Nodes/Doss-Node-Suite/Doss Resolve Motion Tracks | LTX 2.5
ComfyUI Node

Doss Resolve Motion Tracks | LTX 2.5

Turning your scribbled motion paths into the one coordinate per frame LTX actually reads

By JamesDanielDoss·Created 3 months ago·Updated 6 days ago· 1
Doss Resolve Motion Tracks | LTX 2.5
  • image
  • tracks
motion_plan
frame_count121

Here's the thing nobody tells you about the LTX motion track workflow: the model doesn't eat drawings. It eats coordinates - one pixel position per track, per frame, in a very specific JSON shape. Doss Resolve Motion Tracks | LTX 2.5 is the node that sits between "I drew a path" and "the model follows it." It's the boring middle step, and it's the one that makes the whole thing work.

This is the math node in the Doss LTX trio. Motion Studio is where you draw the paths; this is where the drawing becomes data. Feed it the image, the normalized motion_plan JSON, and a frame_count, and it spits out a single STRING output - tracks - that plugs directly into the official LTXVDrawTracks node from Lightricks' ComfyUI-LTXVideo pack. You never see the intermediate math, you never format the JSON by hand, and that's the point.

How it works

The plan's tracks live in normalized 0-to-1 space. This node takes each track's points and interpolates them across the requested number of frames, then scales back up to pixel coordinates using the actual image dimensions. The interpolation is resolution-dependent in a smart way:

  • One point - a static track: the same position repeated for every frame (that's how you hold a camera still).
  • Two points - straight-line movement from A to B.
  • Three or more points - Catmull-Rom spline interpolation, which gives you smooth, curved paths instead of jerky corner-to-corner movement.

The result is one integer pixel coordinate per track per frame, in exactly the JSON shape the official LTX motion track path consumes. And it's fully deterministic: same plan, same image, same frame count, same output. No seeds, no randomness, no "it changed between runs."

The inputs that matter

  • image - the starting frame. This node only reads its dimensions, but it needs the actual tensor, not just a number.
  • motion_plan - the JSON string from Motion Studio. If you feed it a plan from a different image, it refuses.
  • frame_count - default 121, range 9 to 10000. Normally you won't set this at all: you'll wire it to the frame_count output from the pack's Motion Settings node, which derives it from duration and FPS. Hand-typing it here is how you reintroduce the 8n+1 frame-math problem.

Install

It ships in Doss Node Suite, which has zero third-party runtime dependencies - the pack is stdlib Python plus browser JavaScript, so no pip requirements and no model downloads come from it. Install and restart ComfyUI:

  • ComfyUI Manager - search for "Doss Node Suite" and install.
  • Manual:
cd C:\AI\ComfyUI\custom_nodes
git clone https://github.com/JamesDanielDoss/Doss-Node-Suite.git ComfyUI-Doss-Node-Suite

Restart, search for Doss, and look under ⚡ Doss Node Suite/LTX-2.5.

Where people get burned

The error messages here are unusually honest, and they're telling you to go back to Motion Studio. "Motion plan source dimensions do not match the loaded starting image" means you swapped the image after drawing the paths - reopen Studio and pick Keep & rescale or Clear tracks. "Add at least one motion track" means the plan is empty, which happens when you bypass Studio and hand-type a plan that isn't valid.

The other classic: a frame count mismatch. If you hand-type frame_count here and it disagrees with what Motion Settings derived, your motion path either runs out before the clip ends or the coordinates alias weirdly. Feed the output of Motion Settings, not your own arithmetic. And remember this node is the last Doss piece before the official LTX machinery - the model files, the Motion Track IC-LoRA, and ComfyUI-LTXVideo are still required downstream. Resolve the tracks, and the tracks only.

Category⚡ Doss Node Suite/LTX-2.5

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
motion_planSTRING
frame_countINT1219–10000

Outputs (1)

NameTypeDescription
tracksSTRING