Nodes/Polyhedron Suite/⬡ Polyhedron Blend
ComfyUI Node

⬡ Polyhedron Blend

Packing pose, canny and depth into one control video

By PolyhedronAI·Created 5 months ago·Updated about 17 hours ago· 7
⬡ Polyhedron Blend
  • image
  • layer_1
  • layer_2
  • layer_3
  • image
  • info
◄mode_1over (black = clear)►
◄opacity_11.00►
◄mode_2over (black = clear)►
◄opacity_21.00►
◄mode_3over (black = clear)►
◄opacity_31.00►
◄lengthbase►
◄at_the_endhold last frame►
◄previewtrue►

You have a pose skeleton on black, a canny map on black, and a depth pass that's actually a nice grey image. Some control models want all of that as one input frame. ⬡ Polyhedron Blend is a layer stacker for exactly that moment: base at the bottom, up to three layers over it, each with a Photoshop blend mode and an opacity, applied frame by frame so it works on clips as happily as on stills.

The mechanism is boring in the best way

image is the base. Every layer is resized to it - so the base decides your framing and aspect, whether you like it or not - then each layer is composited in order with its own mode_1/mode_2/mode_3 and opacity_1/opacity_2/opacity_3. Opacity 0 is "off", so a three-layer node with one thing wired behaves like a one-layer node.

Two lengths controls handle the mismatch you'll hit within five minutes: length picks whether the result is as long as the base or the longest input, and at_the_end decides what a shorter clip does - hold last frame or loop. A single still just lies over every frame of the clip, which is what you want when your depth map is one image and your pose is a video.

The blend set is the Photoshop one (normal, multiply, screen, overlay, soft light, difference, hue / color / luminosity, and so on) plus the one mode that matters most here: over (black = clear). That treats a layer's black as transparent, which is precisely right for line art and skeletons on black. With normal you'd paint black rectangles over your depth map; with over (black = clear) the skeleton sits on top of the depth and both survive.

Outputs are image - into Apply Control's control, or a Save node - and info, a string telling you what ended up where. preview draws the result in the node, which saves a render cycle.

Is stacking conditions even a good idea?

Honest answer: it depends on your union, and the author says so in the README - a blended map is common practice, not a documented input of the Fun ControlNet Union models. The union was trained on single-condition maps, so a depth+pose hybrid is you hoping the network reads both structures from one picture. Sometimes it does beautifully. Sometimes you get a pose that half-dissolves into the depth.

The supported route to two conditions is two Apply Control nodes chained, each with its own strength - that's the fused path the union actually understands, and it's also what the wider ecosystem recommends when you want 40% of a pose and canny at 0.7 (edit models have no strength dial and no fusion; unions do). So reach for Blend when:

  • the node you're feeding genuinely takes one image, and you want that image to carry two structures;
  • you're building a reusable control template to save and hand to another run;
  • you just want to see whether a hybrid map reads better than the cost of a second patch.

And reach for chained Apply Controls when you want the sum of strengths to be controllable and reproducible. Try both on the same seed; the difference is usually obvious in the first frame.

Install

Manager → search "Polyhedron Suite", or:

cd ComfyUI/custom_nodes
git clone https://github.com/PolyhedronAI/ComfyUI-PolyhedronLoRAStack.git
# restart ComfyUI

No dependencies - the pack's requirements.txt is literally a comment block saying none are required, and whatever it touches (OpenCV for media thumbnails, ffmpeg for the timeline) costs one feature at most, never a load failure.

Practical gotchas

Mind the black. Inverted maps are the classic failure here. Canny on white with black lines into over (black = clear) will hide the lines and keep the paper. Invert first, or use difference/multiply and check the node's preview before queueing a 20-minute video run.

Resizing is silent. Layers get resized to the base with no letterboxing choice - if you blend a 1920×1080 canny over an 832×480 depth base, the canny is squashed to 832×480. Put the ratio you intend to render at the bottom, or run everything through Control Fit before blending so the sizes already agree.

Blend is not a fitter. It doesn't retime, doesn't trim, doesn't snap frame counts to a latent grid. That's Control Fit's job, upstream. Blend is the last step before the control pin, not the first.

CategoryPolyhedron/Image

Inputs (13)

NameTypeDefaultDescription
imageIMAGEThe base (bottom layer): a picture or a clip. Every layer is resized to it.
mode_1COMBOover (black = clear)How this layer meets what lies below it. 'over (black = clear)': the layer's black is transparent (skeletons, canny lines on a depth map). The rest is the Photoshop set: normal, multiply, screen, overlay, soft light, difference, hue / color / luminosity ...
opacity_1FLOAT1.000–1Opacity of this layer (0 = off).
mode_2COMBOover (black = clear)How this layer meets what lies below it. 'over (black = clear)': the layer's black is transparent (skeletons, canny lines on a depth map). The rest is the Photoshop set: normal, multiply, screen, overlay, soft light, difference, hue / color / luminosity ...
opacity_2FLOAT1.000–1Opacity of this layer (0 = off).
mode_3COMBOover (black = clear)How this layer meets what lies below it. 'over (black = clear)': the layer's black is transparent (skeletons, canny lines on a depth map). The rest is the Photoshop set: normal, multiply, screen, overlay, soft light, difference, hue / color / luminosity ...
opacity_3FLOAT1.000–1Opacity of this layer (0 = off).
lengthCOMBObaseLength of the result: the base's, or the longest input's.
at_the_endCOMBOhold last frameA clip shorter than the result: hold its last frame, or loop it. A single picture lies over every frame.
previewBOOLEANtrueShow the result in the node (a clip as a small animated WebP). To keep it, wire `image` into a Save node.
layer_1optIMAGELayer 1, right above the base: a picture or a clip.
layer_2optIMAGELayer 2, above layer 1: a picture or a clip.
layer_3optIMAGELayer 3, on top: a picture or a clip.

Outputs (2)

NameTypeDescription
imageIMAGEThe blended picture or clip -- e.g. into Apply Control's `control`, or into a Save node.
infoSTRINGWhat lay where.