EasyControl Sampler
One pipe, a prompt, and two reference images — where EasyControl actually fires
- pipe
- spatial_image
- subject_image
- IMAGE
EasyControlSampler is the payoff node of this two-node pack: it takes the MODEL_EASYCONTROL pipe from EasyControlLoader, runs FLUX.1-dev denoising, and - if you give it one - conditions on a reference image. This is where the whole EasyControl idea stops being a LoRA-loading exercise and becomes something ControlNet-like on a diffusion transformer.
What the two conditioning slots do
The sampler accepts up to two optional images, and they are not interchangeable. spatial_image is the structure/pose/style reference - the "where things go" half, closer in spirit to classic ControlNet. subject_image is the appearance reference - the "what it looks like" half, the thing people who came from IP-Adapter are hoping for. Both are plain IMAGE tensors, so you feed them straight from a LoadImage node.
The honest community verdict, from the thread that announced the original port: the spatial side is genuinely good - "OpenPose capabilities are pretty good," with Ghibli style transfer the pack's own showcase - and the subject side is the weak one. "Subject transfer doesn't seem working at all" and "face likeness" complaints were the running theme, and the people who loved it said so by disclaiming it: "I don't care about face likeness... I only care about the style and the pose." Set expectations accordingly: use it for style and composition, don't expect a faithful face.
How it works
Both condition images get VAE-encoded. The spatial image is resized to a square at cond_size; the subject image is scaled to preserve aspect ratio and then zero-padded into a square. Those conditioning latents' keys and values are pushed into the KV bank of the LoRA attention processors the loader installed, and mixed into attention at every denoising step - the "causal attention + KV cache" trick from the EasyControl paper that keeps it from doubling FLUX's memory. After generation the sampler explicitly clears that KV cache, so every run starts clean.
Leave both image inputs empty and you just get plain FLUX.1-dev generation from the pipe - the conditioning is entirely optional.
The inputs you actually set
pipe- fromEasyControlLoader. This is the whole point of the pack, and itscond_sizemust match the sampler'scond_size(default 512 on both).prompt- multiline, FLUX-style natural language. The example is "Ghibli Studio style, Charming hand-drawn anime-style illustration."width/height- 256–2048, defaults 1024×768, steps of 64.guidance_scale- default 3.5, range 0–10. This is FLUX's guidance, not CFG; the default is sane, and people rarely touch it.num_inference_steps- default 25, up to 100. 25–30 is the FLUX dev sweet spot.seed- plain integer, default 0.cond_size- the square conditioning resolution, kept in lockstep with the loader's.
The single output is IMAGE, ready for PreviewImage or SaveImage.
Install and gotchas
Same story as its loader sibling: install via ComfyUI Manager (search ComfyUI-EasyControl) or
cd ComfyUI/custom_nodes
git clone https://github.com/open-ghibli/ComfyUI-EasyControl
then restart. The pack drags in diffusers, transformers, and peft as its own environment, and it wants the full FLUX.1-dev diffusers folder plus a single-file checkpoint plus an EasyControl LoRA from Xiaojiu-Z/EasyControl on HuggingFace - no GGUF path.
The practical complaints people hit are speed and memory, not crashes: "It feels like it takes as long for a single image as it just to generate a video" on a 4090, and roughly 24GB VRAM to run comfortably. It's also worth knowing this refactor is the thin version of the idea - the jax-explorer repo it was "inspired by" carries extra workflows like subject-plus-inpaint and multi-view. If EasyControl clicks for you, that's where to go for the fuller feature set. This node is a fun experiment and a good pose/style reference tool, not something you'll leave running unattended.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| pipe | MODEL_EASYCONTROL | — | |
| prompt | STRING | — | |
| height | INT | 768256–2048 | — |
| width | INT | 1024256–2048 | — |
| guidance_scale | FLOAT | 3.50–10 | — |
| num_inference_steps | INT | 251–100 | — |
| seed | INT | 00–18446744073709550000 | — |
| cond_size | INT | 512256–1024 | — |
| spatial_imageopt | IMAGE | — | |
| subject_imageopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |