Nodes/Gimbal-ComfyUI/πŸ—ΊοΈ Gimbal Manifold Explorer
ComfyUI Node

πŸ—ΊοΈ Gimbal Manifold Explorer

Generate a whole grid of variations in one pass

By FormAndNoiseΒ·Created about a month agoΒ·Updated 19 days agoΒ· 0
πŸ—ΊοΈ Gimbal Manifold Explorer
  • center_latent
  • x_vector
  • y_vector
  • mu_override
  • latent_batch
  • grid_meta
  • grid_report
β—„grid_size_x3β–Ί
β—„grid_size_y3β–Ί
β—„x_strength1.00β–Ί
β—„y_strength1.00β–Ί
β—„interpolation_modeLinearβ–Ί
β—„normalize_vectorstrueβ–Ί
β—„clamp_outputfalseβ–Ί
β—„clamp_min-10.0β–Ί
β—„clamp_max10.0β–Ί
β—„enable_perf_loggingfalseβ–Ί

The Manifold Explorer is what you use when you want to see a concept's neighborhood all at once. Instead of running nine separate KSamplers and crossing your fingers, you give it a center latent plus two axis vectors, and it returns a full 2D grid of latents - the center, plus every combination of stepping up/down along both axes. Batch-generate those with one refinement sampler and you've got a contact sheet of variations instead of nine separate gambling sessions.

How it works

You provide center_latent (your starting point), then x_vector and y_vector (the two directions of variation you want to explore). Those axis vectors are typically target_vectors from a Cross-Modal Bridge - "warm earthy" on X, "cool obsidian" on Y, that kind of thing. The node builds a grid where each cell is center + (i * x_strength * x_vector) + (j * y_strength * y_vector), orthonormalized so the two axes don't overlap.

grid_size_x and grid_size_y set the resolution (default 3Γ—3 = 9 latents, up to 16Γ—16). x_strength/y_strength are how far each cell steps along its axis. interpolation_mode switches the stepping from Linear to Slerp or Slerp_Origin - for the same reason Slerp matters everywhere else in this pack: linear steps through high-dimensional space drift through low-density regions and come out muddy, while the ΞΌ-centered arc keeps every cell on the manifold. There's also a normalize_vectors toggle (on by default) and a mu_override if you want to supply your own centroid for the Slerp anchoring.

What you get

Three outputs: latent_batch (all grid cells, ordered row by row), grid_meta (the dict with coordinates and strength info), and grid_report (a human-readable string describing what each cell represents). The batch feeds straight into a KSampler at low-ish denoise (0.5 or so), then through VAEDecode, then into GimbalGridStitch - which arranges the decoded images into a neat contact sheet so you can actually see all nine variations at once. That pairing (Explorer β†’ KSampler β†’ Decode β†’ Grid Stitch) is the pack's tutorial workflow and it's a genuinely pleasant way to survey a concept.

Installing

Same as every node in the pack: ComfyUI Manager β†’ search "Gimbal-comfy" β†’ install β†’ restart, or

cd ComfyUI/custom_nodes
git clone https://github.com/FormAndNoise/Gimbal-comfy

Dependencies are torch/numpy/pillow - already in ComfyUI, no downloads, no keys. (The README's clone URL is stale; FormAndNoise/Gimbal-comfy is the live repo.)

Where people get burned

Two classic mistakes. First, grid sizes explode fast - 16Γ—16 is 256 latents, each of which needs a full refinement sampler run. A 3Γ—3 or 5Γ—5 grid is where the value is; past that you're rendering a wall of near-identical variations. Second, if your two axis vectors aren't meaningfully different, every cell looks the same and you conclude the node is broken. They're not. Generate the axes from distinct prompts via the Cross-Modal Bridge (or manual JSON) so the X and Y directions actually point at different things.

Also set expectations on the pack itself: Gimbal is a polished, heavily AI-assisted suite with almost no community footprint, so there's no army of shared workflows to crib from - you're largely on your own wiring this up. The good news is the wiring is short, and this node is one of the two or three in the suite that visibly earns its keep on the first try.

CategoryGimbal/Flight Instruments

Inputs (14)

NameTypeDefaultDescription
center_latentLATENTβ€”
x_vectorLATENTβ€”
y_vectorLATENTβ€”
grid_size_xINT31–16β€”
grid_size_yINT31–16β€”
x_strengthFLOAT1.00-10–10β€”
y_strengthFLOAT1.00-10–10β€”
interpolation_modeCOMBOLinear3 options: Linear, Slerp, Slerp_Origin
normalize_vectorsBOOLEANtrueβ€”
clamp_outputBOOLEANfalseβ€”
clamp_minFLOAT-10.0-100–0β€”
clamp_maxFLOAT10.00–100β€”
enable_perf_loggingBOOLEANfalseβ€”
mu_overrideoptLATENTPopulation centroid for ΞΌ-centered Slerp. If absent, center_latent is used as the anchor.

Outputs (3)

NameTypeDescription
latent_batchLATENTβ€”
grid_metaDICTβ€”
grid_reportSTRINGβ€”