Nodes/BrainDead Nodes/BD Lotus-2 Predict
ComfyUI Node

BD Lotus-2 Predict

Actually run Lotus-2 — and the one background mistake that ruins your depth

By BizaNator·Created 8 months ago·Updated 3 days ago· 15
BD Lotus-2 Predict
  • model
  • image
  • mask
  • map
  • raw_linear
  • colorized_preview
num_inference_steps10
process_res1024
guidance_scale3.5
timestep_core_predictor1
bg_fillauto

BD Lotus-2 Predict is the other half of the Lotus-2 pair: you feed it the LOTUS2_MODEL from BD Lotus-2 Model Loader plus an image, and it runs the diffusion denoising loop that produces your depth or normal map. If the loader is the expensive setup, this is the part that earns the setup - and it has a handful of settings where the defaults are right and exactly one trap that will ruin your output if you ignore it.

What comes out

Three outputs, and they're different in a way that matters:

  • map - the map in its natural encoding. For depth, that's a 3-channel image where the channels are nearly identical (the model outputs RGB-encoded depth); for normal, it's the normal map directly, with R=X, G=Y, B=Z mapped to [0,1].
  • raw_linear - a [0,1]-normalized linear depth. This is the one you feed into anything that wants numeric depth - BD Depth To Shadow Map, displacement, or math.
  • colorized_preview - the pretty one, for eyeballing.

The inputs that matter

  • num_inference_steps - defaults to 10 (from upstream), and the tooltip's right that quality plateaus around 10–15 for most images. The detail sharpener does the last few steps; cranking to 50 mostly buys you wait time.
  • process_res - caps the longest image edge at this resolution before inference; output is resized back to input size afterward. 1024 is the model's training resolution. Going higher costs VRAM for marginal quality - leave it unless you have a specific reason.
  • guidance_scale - 3.5 default, tune from there.
  • mask + bg_fill - this pair is the whole ballgame, see below.

The trap: how you mask the background

The best-practice pattern, straight from the node's own tooltip: feed the full original image to image (so the model keeps scene context and detail and you don't get silhouette halos), and pass your subject mask (e.g. from background removal) in mask to clean the background after inference. Subject = 1, background = 0. Then bg_fill decides what happens to the masked-out area:

  • auto - the smart default: depth → black (far), normal → flat-facing #8080ff.
  • black / white / normal_neutral - force that fill.
  • transparent - RGBA output, alpha = your mask.
  • keep - don't mask at all.

The warning that will save you an hour: never use white as the depth background, and never use black or white for normal - those are invalid far/flat values that downstream shaders and PBR derivation will faithfully propagate into garbage. That's why auto exists; it fills with the value each map type considers "empty."

Where it fits

In this pack, Lotus-2 depth is the recommended upstream for BD Derive PBR Maps and BD Depth To Shadow Map, and the README's character-parts pipeline runs a Lotus-2 depth pass for per-part depth ordering. It's also worth reusing one loaded model across many Predict calls - the loader's module-level cache means the second predict on the same task is dramatically faster.

Installing

Same pack install as always - ComfyUI Manager search "BrainDead" or clone + pip install -r requirements.txt. The real requirements are the ~24 GB FLUX.1-dev base and the Lotus-2 weights, both handled by BD Lotus-2 Model Loader. Note the map needs a decent GPU: the tooltip on the loader says ~35 GB peak without CPU offload, ~27 GB with it.

Bottom line: keep the defaults, feed the full image and mask it after, and Lotus-2 hands you depth/normal quality that feedforward estimators just don't reach. Ignore the background rule and you'll spend an evening wondering why your depth has a glowing white backdrop.

Category🧠BrainDead/Depth

Inputs (8)

NameTypeDefaultDescription
modelLOTUS2_MODEL
imageIMAGE
num_inference_stepsINT101–50Detail sharpener denoising steps. Default 10 from upstream. Quality plateaus around 10-15 for most images.
process_resINT1024512–2048Cap longest input edge at this resolution. Output is resized back to input size after inference.
guidance_scaleFLOAT3.50–10
timestep_core_predictorINT10–1000Core predictor stage's effective timestep (default 1).
maskoptMASKOptional subject mask (e.g. from BD Remove Background). BEST PRACTICE: feed the FULL original image to `image` (so the model keeps scene context + detail and avoids silhouette halos), and pass the subject mask here to clean the background AFTER. Subject=1, background=0.
bg_filloptCOMBOautoHow to fill the background where mask=0: auto — DEPTH→black (far), NORMAL→#8080ff (flat, facing camera) black/white/normal_neutral — force that fill transparent — output RGBA (alpha=mask) keep — don't mask. (NEVER use white for depth bg, or black/white for normal — they're invalid far/flat values.)

Outputs (3)

NameTypeDescription
mapIMAGE
raw_linearIMAGE
colorized_previewIMAGE