ComfyUI Node

Axis Unpack

Split one packed axis wire back into seven usable values

By kenjiqq·Created 3 years ago·Updated about a year ago· 76
Axis Unpack
  • axis
  • output_a
  • output_b
  • output_c
  • output_d
  • output_e
  • output_f
  • output_g

This is the other half of axis packing. Axis Pack bundles up to seven values - plus a label - into one AXIS_VALUE, so a single grid column can change several things at once (unet, clip and vae, in the README's example). But once that packed axis comes back out of the XY Grid Helper, you've got one opaque value again, and something has to split it. That something is Axis Unpack.

Input is one required axis (AXIS_VALUE). Outputs are seven, named output_a through output_g, each an AXIS_VALUE. Unused slots come back as None - the node pads the unpacked list to seven entries - so you can leave dangling outputs without an error. Each output then feeds its own Axis To converter to become a real type. Note what this node isn't: it's not a converter. It doesn't change types, it just splits a packed tuple back into pieces.

Why bother? Because grids are one-dimensional and your workflow isn't. Without packing, one grid column can only vary one thing. With it, a column labeled "model" can simultaneously swap the unet, the clip and the vae - all three change together per cell, which is how the axis-packing workflow gets a meaningful model A/B grid instead of a grid that varies half a mismatched model stack. The label you set on Axis Pack becomes the axis annotation in the final grid image, which is a small thing that saves a lot of squinting later.

The mechanical detail worth knowing: Axis Unpack literally computes padding = [None] * (7 - len(axis.value)) and returns your values plus that padding. So if you packed three values, outputs output_d through output_g are None. The usual far-side wiring is output_a → Axis To MODEL, output_b → Axis To CLIP, output_c → Axis To VAE, then into the checkpoint and VAE loaders. Don't skip the converters - unpacked outputs are still raw AXIS_VALUEs, and only the Axis To family accepts that type.

It ships with the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/kenjiqq/qq-nodes-comfyui

then restart (or install via Manager, search "qq-nodes-comfyui"). No models, no extra deps beyond ComfyUI's own. You'll want LEv145/images-grid-comfy-plugin installed for the final grid image - the pack calls its nodes in behind the scenes.

Common issues: the None padding trips people up. If you wire an unset output into something expecting a real value, the graph will choke - only connect the outputs you actually packed. And the pack-wide habits apply: Reset the XY Grid Helper before each run, queue one prompt per grid cell, and keep the pack current - older versions had a frontend crash around the reset button that's fixed in the shipped JS.

CategoryQQNodes/XYGrid Axis

Inputs (1)

NameTypeDefaultDescription
axisAXIS_VALUE

Outputs (7)

NameTypeDescription
output_aAXIS_VALUE
output_bAXIS_VALUE
output_cAXIS_VALUE
output_dAXIS_VALUE
output_eAXIS_VALUE
output_fAXIS_VALUE
output_gAXIS_VALUE