πΊοΈ Gimbal Manifold Explorer
A 2D map of every variation of your idea, in one render
- center_latent
- x_vector
- y_vector
- mu_override
- latent_batch
- grid_meta
- grid_report
Instead of generating nine images with nine random seeds and hoping the dice scatter somewhere useful, Gimbal Manifold Explorer generates nine arranged images: a 2D grid that spans two independent directions through latent space at once. One axis might be "warm earthy β cool obsidian," the other "close β distant," and the node hands you every combination as a single batch. You get a map of your idea's neighborhood instead of a grab bag.
It's the survey instrument of the Gimbal-comfy suite by Form & Noise, and the workflow pattern is the pack's signature: let the Cross-Modal Bridge produce the two axis vectors from text, hand them here as x_vector and y_vector, and read the whole terrain off one output.
How it works
You give it a center_latent (your starting point), an x_vector and y_vector (the two directions to explore), and grid dimensions. The node builds offsets across each axis - grid_size_x positions from one side of the x-vector to the other - and for every (x, y) cell it displaces the center latent by x_strength Γ offset along x and y_strength Γ offset along y. The interpolation_mode picks whether that displacement is a plain Linear nudge or a Slerp walk along the geodesic arc (Slerp_Origin for the simpler anchor). normalize_vectors (on by default) keeps the axis vectors unit-length so strengths behave consistently, and the clamp toggles keep wild outputs from flying out of range.
The result comes out as latent_batch - a single LATENT whose batch dimension is grid_size_x Γ grid_size_y, ready for one KSampler pass. You also get grid_meta (a DICT) and grid_report (a STRING describing the layout), and the optional mu_override lets you supply a custom centroid anchor for ΞΌ-centered Slerp instead of defaulting to the center latent.
The inputs that matter
grid_size_x/grid_size_y- 1 to 16 each. Keep them small at first; 3Γ3 is the tutorial default and a fine place to start.x_strength/y_strength- how far each axis reaches. β10 to 10, and negative strengths explore the opposite direction, which is genuinely useful for "warm β cool" sliders.interpolation_mode- start withLinear; reach forSlerpwhen midpoints look washed out.
Then decode the batch through a KSampler β VAEDecode β Gimbal Grid Stitch to see the whole map as one contact sheet.
Common issues
Mind VRAM: a 16Γ16 grid is 256 latents through the sampler at once - that's a lot even on a big card, so chunk your grid or refine at lower resolution. And the pack's golden rules still apply: keep the refinement pass at denoise ~0.5 with modest CFG, or the sampler overwrites the carefully plotted grid.
Install
# ComfyUI Manager β search "Gimbal"
# or:
cd ComfyUI/custom_nodes
git clone https://github.com/FormAndNoise/Gimbal-comfy
pip install -r Gimbal-comfy/requirements.txt
Restart ComfyUI; it's under Add Node β Gimbal/Flight Instruments. Dependencies are just torch, numpy, pillow.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| center_latent | LATENT | β | |
| x_vector | LATENT | β | |
| y_vector | LATENT | β | |
| grid_size_x | INT | 31β16 | β |
| grid_size_y | INT | 31β16 | β |
| x_strength | FLOAT | 1.00-10β10 | β |
| y_strength | FLOAT | 1.00-10β10 | β |
| interpolation_mode | COMBO | Linear | 3 options: Linear, Slerp, Slerp_Origin |
| normalize_vectors | BOOLEAN | true | β |
| clamp_output | BOOLEAN | false | β |
| clamp_min | FLOAT | -10.0-100β0 | β |
| clamp_max | FLOAT | 10.00β100 | β |
| enable_perf_logging | BOOLEAN | false | β |
| mu_overrideopt | LATENT | Population centroid for ΞΌ-centered Slerp. If absent, center_latent is used as the anchor. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| latent_batch | LATENT | β |
| grid_meta | DICT | β |
| grid_report | STRING | β |