Nodes/ComfyUI-SA-Nodes-QQ/Draw Joint On Path (QQ)
ComfyUI Node

Draw Joint On Path (QQ)

Animate a rectangle along a path — the deprecated shape-drawing node

By siraxe·Created 11 months ago·Updated 2 days ago· 72
Draw Joint On Path (QQ)
  • bg_image
  • path_frame_config
  • image
  • output_coordinates
coordinates[{"x":100,"y":100},{"x":400,"y":400}]
shape_width20
shape_width_end0
bg_colorblack
fill_colorwhite
blur_radius0.0
intensity1.00
trailing0.00
bounce_between0.00
pivot_coordinates
relative_pivottrue
scaling_enabledtrue

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.

CategoryWanVideoWrapper_QQ/depr

Inputs (14)

NameTypeDefaultDescription
coordinatesSTRING[{"x":100,"y":100},{"x":400,"y":400}]
bg_imageIMAGE
path_frame_configPATH_FRAME_CONFIG
shape_widthINT201–4096
shape_width_endINT00–4096
bg_colorSTRINGblack
fill_colorSTRINGwhite
blur_radiusFLOAT0.00–100
intensityFLOAT1.000–100
trailingFLOAT0.000–2
bounce_betweenFLOAT0.000–1
pivot_coordinatesoptSTRING
relative_pivotoptBOOLEANtrue
scaling_enabledoptBOOLEANtrue

Outputs (2)

NameTypeDescription
imageIMAGE
output_coordinatesSTRING