Nodes/☁️BizyAir Nodes/☁️BizyAir MiDaS Normal Map
ComfyUI Node

☁️BizyAir MiDaS Normal Map

The classic normal-map preprocessor, no local model needed

By siliconflow·Created 2 years ago·Updated 11 months ago· 855
☁️BizyAir MiDaS Normal Map
  • image
  • IMAGE
a6.28
bg_threshold0.10
resolution512

MiDaS's depth output and its normal-map output come from the same underlying pass, a normal map is essentially the gradient of a depth map, computed to describe which way each surface faces rather than how far away it is. This is that variant: same MiDaS model as the pack's depth-map preprocessor, different output encoding, tuned for ControlNet checkpoints that condition on surface orientation instead of distance.

The controls, and why they're identical to the depth version

a (default ≈6.28, i.e. 2π) is the angle parameter feeding the gradient-to-normal computation, this is actually the more meaningful setting on the normal-map variant than it was on the plain depth node, since it directly shapes how surface orientation gets derived from the underlying depth signal. bg_threshold (default 0.1) controls how cleanly background gets separated from foreground before the normal computation runs, raise it if background noise is showing up as spurious surface detail in the output. resolution is the standard preprocessing-size control, 512 by default.

Output is a single IMAGE, encoded as a standard RGB normal map (surface direction mapped to color channels), the format ControlNet normal-conditioning checkpoints expect.

Where normal maps actually help

Normal-map conditioning is a narrower tool than depth or lineart, it earns its place specifically when surface orientation, not just spatial layout, is what you need the generation to respect: material and lighting-sensitive renders, texture and relief work, anything where you want the model to treat a source image's bumps and facets as real geometry rather than flat color variation. It's worth knowing before building a workflow around this that normal-map ControlNet support has narrowed a lot outside the SD 1.5/SDXL era, SDXL's union model still covers it, but most current-generation architectures don't have a normal-conditioned ControlNet checkpoint at all. Check what your downstream ControlNet actually supports before spending time here.

Installing it

Through ComfyUI Manager: search "BizyAir" and install, then restart. Or clone it directly:

cd ComfyUI/custom_nodes && git clone https://github.com/siliconflow/BizyAir.git

You'll need a BizyAir/SiliconFlow API key set up before this executes, via the "click to login" prompt the README points to on first use. Account signup runs through phone-number verification, and it's worth knowing ahead of time that some users outside China have reported friction there.

Common issues

If the output normal map looks noisy or inconsistent, bg_threshold is worth adjusting before assuming the underlying scene is the problem, background clutter bleeding into the foreground signal is a common cause. If the downstream ControlNet doesn't seem to respond to the normal map at all, double check that the checkpoint you loaded actually accepts a normal-map condition for your base architecture, that's a much more common cause of "nothing's happening" than anything wrong with this preprocessor.

As with every node in this pack, a run that stalls or errors with no clear workflow cause almost always traces back to a missing or invalid API key, check that first. And separately: BizyAir occasionally shows up installed without you having asked for it, a known quirk where ComfyUI Manager misresolves an unrelated missing-node error on an older shared workflow. It's legitimate software, not malware, and removable through the Manager if you didn't want it.

Category☁️BizyAir/☁️BizyAir/ControlNet Preprocessors/Normal and Depth Estimators

Inputs (4)

NameTypeDefaultDescription
imageIMAGE
aoptFLOAT6.280–15.70796326794897
bg_thresholdoptFLOAT0.100–1
resolutionoptINT51264–1024

Outputs (1)

NameTypeDescription
IMAGEIMAGE