Nodes/ComfyUI-BFSNodes/BFS H3 Side Panel Crop
ComfyUI Node

BFS H3 Side Panel Crop

Taking the panel back off, the cheap way

By alisson-anjos·Created 7 months ago·Updated about 9 hours ago· 129
BFS H3 Side Panel Crop
  • panel_info
  • latent
  • images
  • latent
  • images

The least glamorous node in the pack, and the one you can't skip

Every duet render leaves the pinned panel sitting in the canvas, because that's how the trick works - the strip has to be there while the video is being generated or H3 has nothing to sync to. This node is what removes it afterwards. Two inputs, two outputs, no settings at all.

If you're following a duet workflow and you're wondering why your output is a split screen with your source clip on the left: you forgot this node. There is no error for that, and no hint. The render is correct. It's just still showing you the panel.

Why you'd cut the latent instead of the images

Both paths exist, and the author's advice is to cut the latent - that means feeding the sampled latent in before VAE Decode and decoding the smaller thing. Same pixels, less work, which matters on H3 because the panel strip is a real chunk of the canvas: at size = 1.0 you've generated roughly twice the area your output needs.

Inputs and outputs

panel_info is the only required input, and it's a custom BFS_H3_PANEL type - it comes from the duet node that set the panel up (BFS H3 Side Panel, or the higher-level duet nodes, which pass it internally). Don't try to reconstruct one; it encodes the geometry, side, size and gap so the crop knows exactly which pixels are yours.

Optional, and you want exactly one of them: latent (crop the sampled AV latent before decoding) or images (crop frames after decoding). Both outputs exist regardless, so you only wire the one you're using. The latent path strips the panel out of the nested video tensor and drops the noise mask with it; the image path is a plain pixel slice at 16 px granularity.

Outputs are the same names: latent and images. Whichever you fed in, take the matching one out.

Where it goes in the graph

BFS H3 Duet Conditioning ─ panel_info ─┐
                                        ├─► BFS H3 Side Panel Crop ─ latent ─► VAE Decode
              sampler ─ latent ────────┘

The higher-level nodes - BFS H3 Duet, BFS Shot H3 Duet, the shot-loop's join - crop for you, and in the shot loop BFS Shot Join handles it by itself, which is why the sampler-and-decode half of your workflow doesn't change when you turn the duet on. This node is for when you're assembling the duet yourself.

Install

Same pack, same one-time setup:

cd ComfyUI/custom_nodes
git clone https://github.com/alisson-anjos/ComfyUI-BFSNodes
cd ComfyUI-BFSNodes && pip install -r requirements.txt

Restart. It shares the file with the rest of the H3 duet nodes, so if the other three appear and this one doesn't, something is genuinely broken rather than version-skewed.

One gotcha

Feed it a latent that came from anywhere other than a panel-enabled H3 render and the crop coordinates will happily slice your video in the wrong place - panel_info carries the geometry, not a reference to the latent, so nothing can catch the mismatch for you. Crop only what the duet node produced, and if the framing looks shifted by a strip, that's the mistake you made.

CategoryBFS/MiniMax H3

Inputs (3)

NameTypeDefaultDescription
panel_infoBFS_H3_PANEL—
latentoptLATENT—
imagesoptIMAGE—

Outputs (2)

NameTypeDescription
latentLATENT—
imagesIMAGE—