ComfyUI Node

Mask Symmetry Tool

Mirror your masks for symmetrical shots

By diffussy69·Created 11 months ago·Updated 9 months ago· 2
Mask Symmetry Tool
  • mask
  • symmetrical_mask
symmetry_mode
blend_mode
blend_strength1.00
invert_mirroredfalse
show_debugfalse

Symmetry is a mood. Portraits, product shots, architecture, that hallway in every corporate office building - if you want a mask that respects a mirror axis, drawing both halves by hand is a recipe for visible asymmetry and regret. This node mirrors your mask across an axis (or axes) and blends the result back, so you paint one side and the other side comes along for free. It's a small node and a small job, but it's exactly the kind of helper that stops you from rebuilding the same mirror operation with a handful of image-transform nodes every single time.

How it works

You feed it a mask and pick a symmetry_mode:

  • horizontal / vertical - mirror across the vertical or horizontal center line. both does both at once.
  • diagonal_tl_br / diagonal_tr_bl - mirror across the two diagonals, for corner-balanced layouts.
  • radial_4way - four-way rotational symmetry, for mandala-type masks.

The mirrored copy is produced by flipping the mask, and then blend_mode decides how the original and mirror come together - replace (mirror wins), add, max, or average. blend_strength (0–1) controls how strongly the mirrored version influences the result, so you can do a partial, softened symmetry instead of a hard mirror. invert_mirrored inverts just the mirrored portion, which is a neat trick for a mask that's white on one side and a flipped negative on the other.

Output: a single symmetrical_mask MASK, ready for regional prompting, the batch combiner, or wherever your other masks go.

The inputs that matter

Honestly, the ones you'll touch are symmetry_mode, blend_mode, and blend_strength. max blend is the sensible default for "keep the painted content where I painted it, fill the other side." average is gentler if the seam bothers you. The debug flag prints mask stats if you want to verify the flip actually happened.

Installing it

Part of the curved_weight_schedule pack:

cd ComfyUI/custom_nodes
git clone https://github.com/diffussy69/comfyui-curved_weight_schedule
pip install matplotlib pillow numpy torch scipy

Pure torch/PIL under the hood - no models, no Advanced ControlNet requirement. Restart, hard-refresh.

Where people get burned

The mirror axes are hardwired to the mask's own center, not your composition's. If your subject isn't centered, horizontal symmetry mirrors around the mask's midline and the result won't line up with anything. Crop or pad your mask so the axis you want is centered first. Also, replace mode discards whatever you painted on the other side - if you painted both halves deliberately, use max or add instead. Symmetry tools are for when you want both sides identical; don't reach for this one if your shot is naturally off-balance.

Categorymask

Inputs (6)

NameTypeDefaultDescription
maskMASK
symmetry_modeCOMBO7 options: none, horizontal, vertical, both, diagonal_tl_br, diagonal_tr_bl, +1
blend_modeCOMBO4 options: replace, add, max, average
blend_strengthFLOAT1.000–1How strongly to blend mirrored mask with original
invert_mirroredoptBOOLEANfalseInvert the mirrored portion
show_debugoptBOOLEANfalsePrint debug information

Outputs (1)

NameTypeDescription
symmetrical_maskMASK