Nodes/ComfyUI_DAO_master/Move-Scale-Rotate-Sym
ComfyUI Node

Move-Scale-Rotate-Sym

Place your sprite exactly, then mirror it

By orion4d·Created about a year ago·Updated 12 months ago· 11
Move-Scale-Rotate-Sym
  • image
  • mask
  • image
  • mask
angle_deg0.0
scale1.00
dx0
dy0
pivot_modecenter
pivot_x0.00
pivot_y0.00
flip_hfalse
flip_vfalse
apply_mask_to_alphatrue
invert_maskfalse

ComfyUI's built-in image transform nodes exist, but they're opinionated: fixed pivots, no symmetry, no mask handling. Move-Scale-Rotate-Sym - the node ComfyUI's search calls DAO Move - bundles translate, scale, rotate, flip, and a proper pivot control into one node, and it carries your mask along for the ride. That last bit is the sleeper feature: transform an image and its mask in perfect lockstep, then hand both to a compositing or inpainting step.

It's part of orion4d/ComfyUI_DAO_master, the French-authored vector-and-image utility pack, and it's the "positioning" workhorse the pack's clone nodes are built around. If you're hand-assembling a composite - logo onto a card, a cutout onto a background, a generated element into a scene - this is the node you reach for.

How it works

Feed it an image (and optionally a mask). dx/dy translate (up to ±8192 px), scale resizes (0.01–10×, and it accepts negative values, which mirror the image - the "Sym" in the name), and angle_deg rotates up to a full turn in either direction.

The pivot is where this beats the stock nodes. pivot_mode offers center, top_left, or custom, and with custom you get pivot_x/pivot_y to pin rotation and scaling to any point - the difference between "rotate around the middle" and "rotate around that corner so it swings like a door." flip_h and flip_v give you explicit symmetry flips.

The mask handling: apply_mask_to_alpha (on by default) writes your mask into the image's alpha channel as you transform, so the output is an RGBA cutout that moves as one unit. invert_mask flips the incoming mask if it arrives inverted.

Outputs: image and mask, both transformed consistently.

The settings that matter

  • pivot_mode - the first thing to set. center is the sane default; custom is how you get predictable rotation around an anchor.
  • scale with a negative value - instant mirror, no flip checkbox needed.
  • angle_deg - rotation in degrees, fine-stepped to 0.1°.

Installing

Via ComfyUI Manager (search ComfyUI_DAO_master) or:

cd ComfyUI/custom_nodes
git clone https://github.com/orion4d/ComfyUI_DAO_master.git

Restart and done - pure Pillow/numpy, no extra dependencies.

Where people get burned

The usual confusion is negative scale combined with pivot_mode: center - mirroring around center flips the image in place, but with custom pivot it mirrors around your anchor, which is usually what you actually want for symmetry. And the transformed image keeps its original canvas: moving a sprite with dx/dy can push it partly off-canvas, so size your canvas or use the offset deliberately.

CategoryDAO_master/Utils

Inputs (13)

NameTypeDefaultDescription
imageIMAGE
angle_degFLOAT0.0-360–360
scaleFLOAT1.00-10–10
dxINT0-8192–8192
dyINT0-8192–8192
pivot_modeCOMBOcenter3 options: center, top_left, custom
pivot_xFLOAT0.00-8192–8192
pivot_yFLOAT0.00-8192–8192
flip_hBOOLEANfalse
flip_vBOOLEANfalse
apply_mask_to_alphaBOOLEANtrue
invert_maskBOOLEANfalse
maskoptMASK

Outputs (2)

NameTypeDescription
imageIMAGE
maskMASK