Ard Position
The node that tells you where your four tiles go
- latent_width
- latent_height
- x_1
- y_1
- x_2
- y_2
- x_3
- y_3
- x_4
- y_4
Ard Position doesn't touch an image at all - it computes numbers. Specifically, it computes the four quadrant origins you need when you're working with the pack's four-tile pattern: you give it the intended full-canvas width and height plus an upscale_multiplier, and it hands back the latent dimensions plus the x/y coordinates of all four corners (TL, TR, BL, BR) as ten integer outputs.
Here's the mental model. Say you want a big canvas and you're building it from four tiles: you generate four images, each a quarter of the final composition, then place them. This node answers "where does each tile land?" It computes latent_width = width * upscale_multiplier and latent_height = height * upscale_multiplier, both rounded up to a multiple of 8, then sets the four origins at (0,0), (latent_width/2, 0), (0, latent_height/2), and (latent_width/2, latent_height/2). Those come out as x_1/y_1 through x_4/y_4.
So the outputs, all INT: latent_width, latent_height, and the eight coordinates. The inputs are just the two dimensions and the multiplier (default 1.5). The node is marked as an output node, but it produces no preview - it's pure parameter plumbing.
Where this fits in the pack: alongside Ard 4Crop Latent (which crops a latent into quadrants) and Ard 4Img Combine (which stitches decoded tiles back), Ard Position is the geometry brain. The coordinates can feed into latent-space paste/crop logic, or just serve as documented values for how big the upscaled canvas is and where each quadrant sits. The KB's upscaling material describes exactly this tiled pattern - the "generate four, stitch one" approach to getting a big image out of small-GPU-friendly chunks.
Gotchas worth knowing:
- The multiplier rounds to the nearest multiple of 8 for the latent dims, so the reported positions assume an 8-divisible canvas. If your tiles don't match those exact dims, the coordinates will be off.
- The
upscale_multiplierhere is applied to the whole canvas before halving - so a 1024×1024 canvas at 1.5× gives a 1536×1536 latent with four 768×768 quadrants. That's a 1.5× per-axis upscale per tile, which is the sane range for a detail pass. - It outputs numbers, not tensors. Wire the coordinates into whatever paste/crop node you're using; there's nothing here to connect a latent to.
Honest verdict: this is a math convenience node for one specific workflow - the pack's four-tile generation-and-stitch pattern. If you're doing that pattern, it saves you from writing the same arithmetic yourself and keeps the geometry consistent. If you're not doing four-tile work, it's useless to you, and ComfyUI's Math Expression nodes do the same arithmetic with more flexibility. Know what it's for and it's a fine little tool; expect nothing else.
Install is the standard pack route - ComfyUI Manager → search ComfyUI-Ardenius, or:
cd ComfyUI/custom_nodes
git clone https://github.com/ArdeniusAI/ComfyUI-Ardenius
then restart ComfyUI. Pack-wide notes: civitai and moviepy install with the pack (nothing to do with this node), and a stray import error at startup is the Save Image node wanting comfyui_controlnet_aux - the rest of the pack loads.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 102464–8192 | — |
| height | INT | 102464–8192 | — |
| upscale_multiplier | FLOAT | 1.5 | — |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| latent_width | INT | — |
| latent_height | INT | — |
| x_1 | INT | — |
| y_1 | INT | — |
| x_2 | INT | — |
| y_2 | INT | — |
| x_3 | INT | — |
| y_3 | INT | — |
| x_4 | INT | — |
| y_4 | INT | — |