ComfyUI Node

MyXYZSuperStacker

Collects your XYZ grid cells into the finished sheet

By DemonAlone·Created 7 months ago·Updated 22 days ago· 3
MyXYZSuperStacker
  • image
  • XYZ_GRID_CONTROL
  • images

This is the other end of the pipe from MyXYZHelper - the node that turns "here's an image, here's which cell it belongs to" into a finished grid you can actually save. If MyXYZHelper is the bookkeeper, tracking position and generating labels, MyXYZSuperStacker is the one doing the physical assembly: it collects every rendered cell as your loop runs, and once the last one lands, hands back the complete multi-page sheet.

Like its sibling, it's credited straight to kenjiqq's qq-nodes-comfyui in the README rather than being original DemonAlone work - same DIY-XYZ-plot lineage as MyXYZHelper (split the sampling from the grid bookkeeping so you can plot literally anything, not just what a monolithic plot node hardcodes). If you haven't read that article, its framing carries over here too.

How it works

Each time your loop finishes rendering a cell, you feed the resulting image into this node along with the XYZ_GRID_CONTROL bundle that MyXYZHelper (or the pack's accumulator node) produced for that same cell. It's effectively stateful across the loop - appending cells into position as they arrive - and on the final iteration it outputs the assembled result as a single image batch, one entry per page if you're using a page_list. This is also the real reason the pack ships a Helper-and-Stacker pair instead of one big node: position-tracking and pixel-assembly are genuinely separate jobs, and keeping them separate is what lets you drop your own sampler in the middle without either one caring what it is.

The inputs and outputs that matter

  • image - required, IMAGE. The rendered result for whatever cell you're currently on, typically straight out of your VAEDecode for that iteration.
  • XYZ_GRID_CONTROL - required, the layout bundle from upstream in the same pipeline. It's what tells this node where the incoming image belongs and how to label it.

Output: images (IMAGE) - the assembled grid, ready for a Save Image or Preview node. Don't route it anywhere until the loop has actually finished; mid-loop it isn't the finished picture yet.

How to install it

Same pack, same steps: ComfyUI Manager, search "DemonAlone-nodes-ComfyUI", or cd ComfyUI/custom_nodes && git clone https://github.com/DemonAlone/DemonAlone-nodes-ComfyUI, then restart. No models, no extra Python dependencies for this node specifically - it's pure image/tensor manipulation on data your own pipeline already produced.

Common issues & troubleshooting

Grid comes out with missing or duplicate cells. The usual cause is a loop that doesn't run exactly once per sweep combination - if your iteration count doesn't match row_list × column_list × page_list from MyXYZHelper, cells get skipped or overwritten. Get the loop math right before blaming this node.

Nothing happens until the very last iteration. That's expected, not a bug - this is an accumulator, and there's no partial-grid preview by design. If you want a mid-run sanity check, preview the raw image output before it hits this node instead.

Memory climbs the longer the sweep runs. It's holding every rendered cell until the grid is complete, so a large sweep - a 6×6 grid, or several pages - means a lot of images sitting in memory simultaneously before the final assembly. Keep sweeps modest while you're dialing in a workflow, then go wide once you know it's the comparison you actually want.

XYZ_GRID_CONTROL type mismatch. Same story as on MyXYZHelper - it's a custom type unique to this node family. Mixing this with a different XYZ-plot pack (Efficiency Nodes, qq-nodes itself, whatever) won't work; their grid-control types aren't interchangeable with DemonAlone's, even though the concept is identical.

CategoryUtils

Inputs (2)

NameTypeDefaultDescription
imageIMAGE
XYZ_GRID_CONTROLXYZ_GRID_CONTROL

Outputs (1)

NameTypeDescription
imagesIMAGE