Draw Joint On Path (QQ)
Animate a rectangle along a path — the deprecated shape-drawing node
- bg_image
- path_frame_config
- image
- output_coordinates
DrawJointOnPath draws a rectangle and moves it along a path, over time, with easing. That's the whole pitch, and if you squint you can see the family resemblance to the pack's flagship Power Spline Editor - except the category literally says depr, for deprecated. This node is a survivor of the pre-spline era of siraxe/ComfyUI-WanVideoWrapper_QQ: before the multi-layer canvas editor existed, this was how you animated a shape as a motion reference.
Here's the honest take: if you're starting fresh, you almost certainly want the Power Spline Editor instead, which draws arbitrary paths on a canvas with per-layer controls and proper keyframes. Read this article to understand what the old node did (and to rescue an old workflow that references it) - not because it's the tool you should reach for in 2026.
How it works
The mechanism is old-school coordinate interpolation. You feed it a JSON list of {x, y} points, and it treats the first and last points as the ends of a rectangle: shape_width sets the rectangle's thickness, and the distance between the two endpoints sets its length. The node then slides that rectangle along the path frame by frame, driven by a PATH_FRAME_CONFIG (the pack's shared config object carrying total_frames, easing function, easing path, and easing strength). So the "joint" is a rectangle whose center travels from point A to point B while a config controls the easing and timing.
The extras are animation garnish. trailing leaves a fading trail behind the shape (0–2, higher = longer). bounce_between (0–1) makes the rectangle reverse direction partway. pivot_coordinates lets a second point list act as a pivot - with relative_pivot on, the pivot offsets the whole shape from its path position; off, it replaces the starting point. shape_width_end, blur_radius, and intensity let the shape taper, soften, and fade. The output_coordinates STRING output hands back the animated positions, so downstream nodes can use where the shape was at each frame.
Inputs and outputs that matter
coordinates- the JSON point list (multiline).bg_image- the canvas you're drawing on; also sets frame dimensions.path_frame_config- the pack's shared animation config (frames, easing).shape_width/shape_width_end- start and end thickness (end of 0 = constant).fill_color/bg_color- shape and background colors.
Outputs: image (IMAGE) and output_coordinates (STRING).
Installation
Same as the rest of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/siraxe/ComfyUI-WanVideoWrapper_QQ.git
Restart ComfyUI (or ComfyUI Manager → "WanVideoWrapper_QQ"). It's plain torch/numpy - no extra deps - and the pack's requirements.txt is empty anyway. Post-v1.3.4 remember to delete any old wanwrapper_qq folder after the rename to ComfyUI-SA-Nodes-QQ.
Common issues
Two realistic failure points. First, malformed coordinates JSON - the node does json.loads, and a stray quote or missing brace kills it instantly; the default [{"x":100,"y":100},{"x":400,"y":400}] is the format to match. Second, bg_image drives the canvas dimensions; if it's missing or a weird shape, you'll get the 512×512 fallback and wonder where your 1280×720 content went. And keep the deprecated status in mind: it still works, but don't build a new workflow on it - the spline editor path is the maintained one.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| coordinates | STRING | [{"x":100,"y":100},{"x":400,"y":400}] | — |
| bg_image | IMAGE | — | |
| path_frame_config | PATH_FRAME_CONFIG | — | |
| shape_width | INT | 201–4096 | — |
| shape_width_end | INT | 00–4096 | — |
| bg_color | STRING | black | — |
| fill_color | STRING | white | — |
| blur_radius | FLOAT | 0.00–100 | — |
| intensity | FLOAT | 1.000–100 | — |
| trailing | FLOAT | 0.000–2 | — |
| bounce_between | FLOAT | 0.000–1 | — |
| pivot_coordinatesopt | STRING | — | |
| relative_pivotopt | BOOLEAN | true | — |
| scaling_enabledopt | BOOLEAN | true | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| output_coordinates | STRING | — |