Nodes/ComfyUI-MotionCtrl/Select Image Indices
ComfyUI Node

Select Image Indices

The boring node that makes MotionCtrl + AnimateDiff scribble work

By chaojie·Created 3 years ago·Updated 2 years ago· 142
Select Image Indices
  • images
  • IMAGE
selected_indexes1,2,3

Of all the nodes in this pack, this is the one that isn't really about MotionCtrl at all. Select Image Indices is a plain frame picker: give it a batch of images and a comma-separated list of indices, and it gives you back just the frames you asked for. Its job in this pack is specific, though - it's the hinge of the "MotionCtrl deployed on AnimateDiff" workflow, which is honestly the coolest thing this pack does.

That workflow goes: generate a 16-frame MotionCtrl clip (camera or object motion already baked in), then use those frames to drive an AnimateDiff pass through AnimateDiff's SparseCtrl scribble control. But you don't feed AnimateDiff all sixteen frames - you feed it a few keyframes, converted to scribbles. That's what this node is for: pick frames 1,2,3 (or 0:4 for a range), they get scaled and turned into scribble sketches, and AnimateDiff animates between them. The README's summary is literally "Select Images → Scribble."

How it works

You give it a batch of images and a string of indices. It splits the string on commas and, for each entry, either grabs that exact frame or - if the entry contains a : - expands a start:end range. Malformed entries are silently skipped. If nothing ends up selected, it passes the original batch through untouched rather than erroring.

The inputs and output

  • images (IMAGE) - a batch of frames, typically the output of Motionctrl Sample Simple in the AnimateDiff workflow, or a VHS_VideoCombine-style frame stream from any video source.
  • selected_indexes (STRING) - comma-separated list, default 1,2,3. Supports ranges like 0:4 too.

Output is IMAGE - the selected frames as a new batch, wired into the scale/scribble preprocessing of the AnimateDiff side.

Where people get burned

Two things, and both are indexing traps. First, it's zero-based: 1,2,3 skips the first frame, it doesn't select frames one through three. If you meant "the first three frames," write 0:3. Second, silent failure: if you type a garbage index or one past the end of the batch, the node just ignores it - you can get back fewer frames than you asked for with no warning, and the downstream scribble pass will happily run on whatever it got. Check your index list against the batch size if output frames go missing.

It's a 30-line utility node, not a marquee feature, but it's the piece that ties the pack's best workflow together. And if you ever just need "subset of a frame batch" in another context, it works fine for that too - it doesn't care that it lives in a motion-control pack.

Installing it

It's part of ComfyUI-MotionCtrl, so it installs with the pack - see the install steps in the Load Motionctrl Checkpoint article. No extra model downloads, no dependencies of its own. That's part of why it's so easy to overlook: it's the least demanding node here, and the one that quietly enables the most interesting output.

Categorymotionctrl

Inputs (2)

NameTypeDefaultDescription
imagesIMAGE
selected_indexesSTRING1,2,3

Outputs (1)

NameTypeDescription
IMAGEIMAGE