Skip to content

Conditioning (Set Mask)

Documentation

  • Class name: ConditioningSetMask
  • Category: conditioning
  • Output node: False

This node is designed to modify the conditioning of a generative model by applying a mask and optionally setting the conditioning area to the bounds of the mask. It allows for the dynamic adjustment of the conditioning's influence through a strength parameter, enabling fine-tuned control over the generative process.

Input types

Required

  • conditioning
    • The conditioning data to be modified, serving as the context for the generative model's output.
    • Comfy dtype: CONDITIONING
    • Python dtype: torch.Tensor
  • mask
    • A mask tensor used to specify the area of the conditioning to be modified.
    • Comfy dtype: MASK
    • Python dtype: torch.Tensor
  • strength
    • A scalar value that determines the intensity of the mask's effect on the conditioning.
    • Comfy dtype: FLOAT
    • Python dtype: float
  • set_cond_area
    • A flag to determine whether the conditioning area should be set to the mask bounds or not.
    • Comfy dtype: COMBO[STRING]
    • Python dtype: bool

Output types

  • conditioning
    • Comfy dtype: CONDITIONING
    • The modified conditioning data, with the mask applied and potentially adjusted according to the specified area and strength.
    • Python dtype: torch.Tensor

Usage tips

Source code

class ConditioningSetMask:
    @classmethod
    def INPUT_TYPES(s):
        return {"required": {"conditioning": ("CONDITIONING", ),
                              "mask": ("MASK", ),
                              "strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 10.0, "step": 0.01}),
                              "set_cond_area": (["default", "mask bounds"],),
                             }}
    RETURN_TYPES = ("CONDITIONING",)
    FUNCTION = "append"

    CATEGORY = "conditioning"

    def append(self, conditioning, mask, set_cond_area, strength):
        set_area_to_bounds = False
        if set_cond_area != "default":
            set_area_to_bounds = True
        if len(mask.shape) < 3:
            mask = mask.unsqueeze(0)

        c = node_helpers.conditioning_set_values(conditioning, {"mask": mask,
                                                                "set_area_to_bounds": set_area_to_bounds,
                                                                "mask_strength": strength})
        return (c, )