Nodes/ComfyUI-SA-Nodes-QQ/Power Spline Editor (QQ)
ComfyUI Node

Power Spline Editor (QQ)

The canvas node that lets you draw the motion Wan should follow

By siraxe·Created 11 months ago·Updated 2 days ago· 72
Power Spline Editor (QQ)
  • bg_image
  • ref_images
  • bg_image
  • coord_out
  • frames
  • debug_scale
points_store[{"x":200,"y":240},{"x":304,"y":240}]
coordinates
mask_width640
mask_height480
bg_opacity1.00
frames

This is the pack's flagship, and the node the author (u/sir_axe) is actually known for - his TTM timeline-integration showcase drew a couple hundred upvotes and the "what is this blackmagic" reactions that custom-node devs live for. PowerSplineEditor is a full canvas-based path editor inside a single ComfyUI node. You draw splines on a background, animate them over frames, and it spits out per-frame coordinates that you feed into Wan motion/control pipelines - think TTM physics, object movement, camera moves, or VACE control. It's marked "WIP" in the code, which should tell you both that it's ambitious and that you're riding the bleeding edge.

The mechanism is straightforward once you see it: you define paths as points in the node's canvas, the node interpolates them across the requested frames count (linear, plus cardinal/Catmull-Rom, basis/B-spline, and static "points" modes), and emits the resulting coordinate sequence as coord_out (a STRING). Other nodes in the pack - DrawShapeOnPath, DrawImageOnPath - consume those coordinates to render what the motion looks like, and then the coordinates or rendered frames drive the actual Wan pipeline via the wrapper's TTM/move nodes. The README's example workflows (rabbit_control_wan_move, ttm) show exactly this chain.

The inputs that matter

  • points_store - the path data as JSON (the canvas writes this for you; don't hand-edit unless you know the format).
  • coordinates - a string you can also feed in from elsewhere, e.g. to replay a path another node generated.
  • mask_width / mask_height - the working canvas resolution (default 640×480).
  • bg_opacity (0–1) - background brightness in the editor preview.
  • bg_image / ref_images (optional) - a background image to draw over, and reference images (e.g. a character cut-out) to preview against.
  • frames (optional) - how many frames to interpolate the path over.

Outputs: bg_image (the composed editor preview), coord_out (the per-frame coordinate string - the thing you actually use downstream), frames (echoed), and debug_scale (a diagnostic string for when coordinates look wrong).

The features people actually use

Multi-layer canvas with per-layer controls, interpolation modes, a repeat system with closed-path handling for loops, easing functions, driver/driven paths (one path controls another with rotation, scaling, smoothing), offset timing with pause frames, and the timeline hotkeys (Shift+Spacebar play/pause, Shift+Drag on the [/] markers to adjust loop boundaries). There's also a backend Canvas button that triggers reference prep without starting a ComfyUI run. It's a lot, and honestly the learning curve is real - but this is the rare custom node with an actual interactive UI, which makes iterating on camera moves dramatically faster than typing coordinates.

Installing it

Ships in siraxe/ComfyUI-WanVideoWrapper_QQ. 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. You'll also want Kijai's ComfyUI-WanVideoWrapper installed (the pack's README says it's required; the TTM/move nodes live in that world), plus cv2 (pip install opencv-python) if you use the reference-prep features.

Gotchas

  • WIP means WIP. The node has been through heavy refactors (hand-drawn spline layers, driver/driven, independent layer point control). If a downloaded workflow references an older layout, update and re-save.
  • Coordinate scale. debug_scale exists because coordinates can silently be in the wrong canvas space when you change resolution - always check coord_out against your actual frame size before running a long Wan pass.
  • Pack note: the repo was renamed to ComfyUI-SA-Nodes-QQ in v1.3.4; delete any stale wanwrapper_qq folder in custom_nodes if old workflows point at it.
CategoryWanVideoWrapper_QQ

Inputs (8)

NameTypeDefaultDescription
points_storeSTRING[{"x":200,"y":240},{"x":304,"y":240}]
coordinatesSTRING
mask_widthINT6408–4096
mask_heightINT4808–4096
bg_opacityFLOAT1.000–1Background opacity (0 = black, 1 = full brightness)
bg_imageoptIMAGE
ref_imagesoptIMAGE
framesoptINT

Outputs (4)

NameTypeDescription
bg_imageIMAGE
coord_outSTRING
framesINT
debug_scaleSTRING