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

Draw Shape On Path (QQ)

Preview your motion path with a bouncing circle before you spend GPU hours

By siraxe·Created 11 months ago·Updated 2 days ago· 72
Draw Shape On Path (QQ)
  • bg_image
  • image
  • mask
  • output_coordinates
  • preview
shapecircle
coordinates
shape_width40
shape_height40
shape_colorwhite
bg_colorblack
blur_radius1
intensity1.00
trailing0.00
border_width0
border_colorblack
frames
animated_fade_start1.00
static_fade_start1.00
preview_enabledtrue

Wan generation is slow, and the most expensive mistake you can make is discovering at the end that your camera move looks wrong. DrawShapeOnPath exists to catch that before you pay: it takes a set of coordinates and renders a circle, square, or triangle moving along them, one frame at a time, so you can watch the path play back in seconds. It's the dry-run for motion work - and it doubles as a way to build control masks (white shape on black, with blur, fed into a VACE or control pipeline).

The node works the way you'd hope: coordinates (a STRING of points, which is exactly what PowerSplineEditor outputs) defines the path, bg_image is your backdrop (or use bg_color for a solid one), and shape picks circle/square/triangle. shape_width/shape_height set the object size, shape_color its fill. Locations are center locations, and the author explicitly allows coordinates outside the frame for "fly-in" effects - an object entering from off-screen is just a coordinate past the edge.

The dials worth knowing

  • frames - how many frames the animation spans. Tie this to your target Wan frame count so the preview matches the real render.
  • blur_radius and intensity - soften/harden the shape. For a control mask you'll want blur; for a raw position preview, keep them minimal.
  • trailing (0–1) - leaves a fading trail behind the moving shape, which is genuinely useful for eyeballing velocity and easing: if the trail spacing bunches up, your path's timing is uneven.
  • animated_fade_start / static_fade_start (0–1) - fade the shape in/out across the animation, or across static frames.
  • border_width / border_color - outlines, mainly for contrast on busy backgrounds.
  • preview_enabled - toggle the live preview widget.

Outputs: image (the rendered frames), mask (the shape as a mask - feed this into masking/control nodes), output_coordinates (the path echoed back, so you can chain), and preview (an IMAGE for viewing without saving).

When it earns its keep

Two patterns. First, motion preview: wire PowerSplineEditor → DrawShapeOnPath, set frames to match your render, and you've got a cheap animated mockup of the exact trajectory before the 25-minute 720p pass. Second, control prep: render a white blurred dot chasing a path over a black background and use the mask/image as a VACE control input or a regional mask. The "fly-in" support means you can rehearse entrances and exits too, which most simple drawing nodes can't.

Installing it

Part of siraxe/ComfyUI-WanVideoWrapper_QQ - install via ComfyUI Manager (search WanVideoWrapper_QQ/SA-Nodes-QQ), or:

cd ComfyUI/custom_nodes
git clone https://github.com/siraxe/ComfyUI-WanVideoWrapper_QQ.git

Restart ComfyUI. No extra deps.

Gotchas

  • Coordinate format matters. Coordinates come from PowerSplineEditor (or are hand-written) in the same canvas space - mismatched scales produce paths off-frame. If nothing shows, check the format against output_coordinates.
  • frames of 0 renders a single static frame - set it explicitly if you want motion.
  • Pack note: repo renamed to ComfyUI-SA-Nodes-QQ in v1.3.4; delete any stale wanwrapper_qq folder in custom_nodes if old workflows reference it.
CategoryWanVideoWrapper_QQ

Inputs (16)

NameTypeDefaultDescription
shapeCOMBOcircle3 options: circle, square, triangle
bg_imageIMAGE
coordinatesSTRING
shape_widthINT402–1000
shape_heightINT402–1000
shape_colorSTRINGwhite
bg_colorSTRINGblack
blur_radiusFLOAT10–100
intensityFLOAT1.000.01–100
trailingoptFLOAT0.000–1
border_widthoptINT00–100
border_coloroptSTRINGblack
framesoptINT
animated_fade_startoptFLOAT1.000–1
static_fade_startoptFLOAT1.000–1
preview_enabledoptBOOLEANtrue

Outputs (4)

NameTypeDescription
imageIMAGE
maskMASK
output_coordinatesSTRING
previewIMAGE