Skip to content

Latest commit

 

History

History
61 lines (54 loc) · 3.07 KB

ADE_MultivalScaledMask.md

File metadata and controls

61 lines (54 loc) · 3.07 KB

Documentation

MultivalScaledMaskNode 类旨在通过在指定范围内缩放给定的掩码张量来转换它。它根据所选的缩放类型应用线性转换或归一化,确保输出掩码适合在动画或可视化应用程序中进行进一步处理。

Input types

Required

  • min_float_val
    • 最小浮点值参数定义了掩码张量缩放范围的下限。它在设置掩码的缩放比例中起着至关重要的作用,确保缩放后的最小值如指定的那样。
    • Comfy dtype: FLOAT
    • Python dtype: float
  • max_float_val
    • 最大浮点值参数设置了掩码张量缩放的上限。它对于确定掩码的缩放比例至关重要,确保缩放后的最大值与期望的最大值一致。
    • Comfy dtype: FLOAT
    • Python dtype: float
  • mask
    • 掩码参数是一个张量,它将根据指定的最小和最大浮点值进行缩放。它是节点操作的核心元素,因为缩放直接应用于此张量以实现所需的多值效果。
    • Comfy dtype: MASK
    • Python dtype: torch.Tensor

Optional

  • scaling
    • 缩放参数确定要应用于掩码张量的缩放类型。它可以是绝对的或相对的,影响如何在指定范围内调整掩码值。
    • Comfy dtype: ScaleType.LIST
    • Python dtype: str

Output types

  • multival
    • MultivalScaledMaskNode 的输出是一个多值张量,代表缩放后的掩码。它非常重要,因为它是节点操作的直接结果,可用于后续的动画或可视化任务。
    • Comfy dtype: MULTIVAL
    • Python dtype: torch.Tensor

Usage tips

  • Infra type: CPU

Source code

class MultivalScaledMaskNode:

    @classmethod
    def INPUT_TYPES(s):
        return {'required': {'min_float_val': ('FLOAT', {'default': 0.0, 'min': 0.0, 'step': 0.001}), 'max_float_val': ('FLOAT', {'default': 1.0, 'min': 0.0, 'step': 0.001}), 'mask': ('MASK',)}, 'optional': {'scaling': (ScaleType.LIST,)}}
    RETURN_TYPES = ('MULTIVAL',)
    CATEGORY = 'Animate Diff 🎭🅐🅓/multival'
    FUNCTION = 'create_multival'

    def create_multival(self, min_float_val: float, max_float_val: float, mask: Tensor, scaling: str=ScaleType.ABSOLUTE):
        if isinstance(min_float_val, Iterable):
            raise ValueError(f'min_float_val must be type float (no lists allowed here), not {type(min_float_val).__name__}.')
        if isinstance(max_float_val, Iterable):
            raise ValueError(f'max_float_val must be type float (no lists allowed here), not {type(max_float_val).__name__}.')
        if scaling == ScaleType.ABSOLUTE:
            mask = linear_conversion(mask.clone(), new_min=min_float_val, new_max=max_float_val)
        elif scaling == ScaleType.RELATIVE:
            mask = normalize_min_max(mask.clone(), new_min=min_float_val, new_max=max_float_val)
        else:
            raise ValueError(f"scaling '{scaling}' not recognized.")
        return MultivalDynamicNode.create_multival(self, mask_optional=mask)