Nodes/ComfyUI S4Motion/đź’€Motion Opacity
ComfyUI Node

đź’€Motion Opacity

Fade layers in and out instead of blinking them on

By S4MUEL-404·Created about a year ago·Updated 11 months ago· 4
đź’€Motion Opacity
    • Opacity
    â—„default_opacity1.00â–ş
    â—„target_opacity1.00â–ş
    â—„duration1.00â–ş
    â—„delay0.00â–ş
    â—„motion_curvelinearâ–ş
    â—„inversefalseâ–ş
    â—„loopfalseâ–ş

    Any animation where a layer appears or disappears needs a fade, and đź’€Motion Opacity is the S4Motion node that does it. It's the simplest effector in the pack - two values, a curve, and timing - but it's the one you'll lean on constantly for intros, outros, and cross-dissolves.

    Like the rest of the effectors, it does nothing standalone. Its Opacity output (an S4_OPACITY_EFFECTOR) goes into the opacity_effector socket on đź’€Motion Config, which is what actually composites frames. This node only decides each frame's alpha.

    The inputs:

    • default_opacity - starting opacity, 0 (invisible) to 1 (fully opaque).
    • target_opacity - ending opacity.
    • duration / delay - how long the fade takes and when it starts, in seconds.
    • motion_curve - linear, ease_in, ease_out, ease_in_out. ease_in_out makes a fade read as deliberate; linear is fine for quick flashes.
    • inverse - fade out then back in (or the reverse of your keyframes).
    • loop - repeat for the timeline.

    The math to remember: effector opacity multiplies Motion Config's static opacity. Default 1 here means "leave the base alone." If Config has opacity 0.5 and this node goes 1 → 0, the layer fades from 50% to fully invisible - the base value acts as a ceiling.

    Under the hood, opacity is applied through the layer's alpha channel when Motion Config composites, so a fade produces a clean dissolve against the background rather than a cheap darkening. If your layer is a JPG without alpha, Motion Config still fades it by handling the alpha during compositing - you don't need to pre-prepare RGBA inputs. When you pipe the frame sequence out, preserve_alpha on Motion Config decides whether the fade is baked in or exported as a real alpha channel for downstream compositing.

    Install

    cd ComfyUI/custom_nodes/
    git clone https://github.com/S4MUEL-404/ComfyUI-S4Motion.git
    pip install -r ComfyUI-S4Motion/requirements.txt
    

    or ComfyUI Manager → "S4Motion" → install → restart.

    This is the pack's smallest node and there's no community lore around it (S4Motion doesn't appear on reddit at all), so the examples/Opacity.json workflow is the ground truth for wiring. Set default 0 → target 1 with ease_out and you've got your standard fade-in.

    Categoryđź’€S4Motion

    Inputs (7)

    NameTypeDefaultDescription
    default_opacityFLOAT1.000–1—
    target_opacityFLOAT1.000–1—
    durationFLOAT1.000–30—
    delayFLOAT0.000–30—
    motion_curveCOMBOlinear4 options: linear, ease_in_out, ease_in, ease_out
    inverseBOOLEANfalse—
    loopBOOLEANfalse—

    Outputs (1)

    NameTypeDescription
    OpacityS4_OPACITY_EFFECTOR—