Load Lotus Model
The fast depth-and-normal estimator, loaded
- lotus_unet
If you've been using Depth Anything or Marigold to pull depth maps for ControlNet and you want to try something faster (or you need a decent normal map and don't want to reach for a whole separate pipeline), Lotus is the one to grab. It's kijai's wrapper around EnVision-Research's Lotus model, and this node is step one: point it at a checkpoint and it hands you a loaded model ready to sample from.
What Lotus actually is
Most diffusion-based depth estimators - Marigold is the canonical example - repurpose Stable Diffusion's denoising process itself: start from noise, run several steps, sometimes ensemble multiple runs together for a cleaner result. It's slow because you're paying for the full diffusion sampling loop just to get a grayscale map out the other end. Lotus takes the same generative prior (a pretrained diffusion UNet knows a lot about how the world looks) but reformulates the task so it doesn't need the multi-step dance - it predicts depth or surface normals in a single deterministic pass instead. That's the whole pitch: diffusion-model quality, none of the diffusion-model wait. In a community comparison of 8 depth models run at matched settings on a 4090, most of the field took 15-50 seconds per image; Lotus came in under a minute alongside the fastest of them, and people singled it out for holding onto fine detail and contrast that flatter estimators miss.
It's not automatically the "best" choice, though - worth knowing before you commit to it. The same comparison thread found Lotus sometimes gets the relative depth ordering wrong (thinking a foreground object is farther away than something behind it) even while capturing more visual detail than Depth Anything, which was still seen as more reliable for straightforward ControlNet conditioning. Read it as: Depth Anything for correctness, Lotus for detail and speed, and normal maps are where Lotus gets genuinely enthusiastic reports - people building lighting and texture workflows around it specifically because the normal output holds up.
The input and output
There's really just one meaningful choice here:
- model - a dropdown of whatever checkpoints you've dropped into
ComfyUI/models/diffusion_models. Lotus ships separate checkpoints for depth and normal prediction (and different versions of each), so which one you pick determines what this whole chain does downstream. The node's own tooltip is blunt about it: models load from thatdiffusion_modelsfolder, nowhere else. - precision (optional, default
fp16) - the other option isfp32. Leave it on fp16 unless you have a specific reason not to; it's half the VRAM and the quality difference for inference is not something you'll see. One catch worth knowing before you go hunting: the fp32 option in this dropdown doesn't upgrade an fp16 checkpoint into a full-precision one - you need to have actually downloaded an fp32 weight file. The main HF repo linked in the README mostly ships fp16; people have gone looking for genuine fp32 Lotus weights and ended up on a different community-hosted repo entirely. Unless you have a specific need for it, don't bother - fp16 is the sane default.
The output is a single lotus_unet (type LOTUSUNET) - this isn't a regular MODEL type, so it only plugs into Lotus's own sampler node, not a generic KSampler.
Installing it
Two ways, same result:
- ComfyUI Manager - search "ComfyUI-Lotus," install, restart.
- Manual -
cd ComfyUI/custom_nodes && git clone https://github.com/kijai/ComfyUI-Lotus, then restart ComfyUI.
The node pack itself is tiny; the weight is the models. Grab them from Kijai/lotus-comfyui on Hugging Face and drop them into ComfyUI/models/diffusion_models - that's the one instruction the README actually gives, and it's the one people miss, because plenty of other custom-node packs use a models/lotus or similar dedicated subfolder. If the model dropdown here is empty, that's almost always why: wrong folder, or ComfyUI hasn't been restarted since you added the file.
Common issues
Empty dropdown, no models to pick: check you actually landed the checkpoint in diffusion_models and not some other folder, and restart ComfyUI so it rescans. Custom node updates and model additions both need a restart to show up - Manager's "fetch updates" alone won't do it.
Confusion between depth and normal checkpoints is a real thing people hit - the filenames are how you tell them apart, so read carefully before you download, since loading a normal-prediction checkpoint into a depth-focused workflow (or vice versa) will run fine and just give you garbage-looking output, not an error. If your results look inverted or nonsensical compared to what a depth or normal map should look like, that's the first thing to check.
Beyond that, this node is thin by design - it just loads a checkpoint into VRAM. Whatever else goes sideways (speed, batch size, quality) is downstream of the sampler this feeds into, not this node itself.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | models are loaded from 'ComfyUI/models/diffusion_models' | |
| precisionopt | COMBO | fp16 | 2 options: fp16, fp32 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| lotus_unet | LOTUSUNET | — |