# Documentation - Class name: `SaltKeyframeSchedulerBFN` - Category: `SALT/Scheduling` - Output node: `False` 该节点旨在通过可自定义的缓动函数来安排关键帧动画。它允许通过指定关键帧、缓动模式和可选参数来精确控制动画的时间和顺序,从而实现对动画进程的精细调整。 # Input types ## Required - keyframe_schedule - 定义动画的关键帧序列。它是调度过程的核心,决定了动画帧的时间和数值。 - Comfy dtype: STRING - Python dtype: str - easing_mode - 指定关键帧之间应用的缓动函数,影响动画的节奏和风格。 - Comfy dtype: COMBO[STRING] - Python dtype: list ## Optional - end_frame - 确定动画的最后一帧,允许限制动画的持续时间。 - Comfy dtype: INT - Python dtype: int - ndigits - 设置计算出的关键帧值的精度,影响动画的平滑度和准确性。 - Comfy dtype: INT - Python dtype: int - a - 自定义变量'a',为定义动画提供额外的灵活性,支持复杂的调度场景。 - Comfy dtype: * - Python dtype: list | int | float | bool - b - 自定义变量'b',为定义动画提供额外的灵活性,支持复杂的调度场景。 - Comfy dtype: * - Python dtype: list | int | float | bool - c - 自定义变量'c',扩展动画调度的灵活性和复杂性。 - Comfy dtype: * - Python dtype: list | int | float | bool - d - 自定义变量'd',通过额外的自定义选项进一步增强调度功能。 - Comfy dtype: * - Python dtype: list | int | float | bool - e - 自定义变量'e',为复杂的动画调度添加另一层自定义。 - Comfy dtype: * - Python dtype: list | int | float | bool - f - 自定义变量'f',允许对动画的调度进行更详细的控制。 - Comfy dtype: * - Python dtype: list | int | float | bool - g - 自定义变量'g',为调度动画提供深度定制的可能性。 - Comfy dtype: * - Python dtype: list | int | float | bool - h - 自定义变量'h',完善了用于详细动画调度的广泛自定义选项集。 - Comfy dtype: * - Python dtype: list | int | float | bool # Output types - schedule_list - 计算得出的关键帧值调度列表,可直接用于对象或场景的动画制作。 - Comfy dtype: LIST - Python dtype: list ## Usage tips - Infra type: `CPU` - Common nodes: unknown ## Source code ```python class SaltKeyframeSchedulerBFN: @classmethod def INPUT_TYPES(cls): easing_funcs = list(easing_functions.keys()) easing_funcs.insert(0, "None") return { "required": { "keyframe_schedule": ("STRING", {"multiline": True, "dynamicPrompts": False}), "easing_mode": (easing_funcs, ) }, "optional": { "end_frame": ("INT", {"min": 0}), "ndigits": ("INT", {"min": 1, "max": 12, "default": 5}), "a": (WILDCARD, {}), "b": (WILDCARD, {}), "c": (WILDCARD, {}), "d": (WILDCARD, {}), "e": (WILDCARD, {}), "f": (WILDCARD, {}), "g": (WILDCARD, {}), "h": (WILDCARD, {}), } } RETURN_TYPES = ("LIST", ) RETURN_NAMES = ("schedule_list", ) FUNCTION = "keyframe_schedule" CATEGORY = "SALT/Scheduling" def keyframe_schedule(self, keyframe_schedule, easing_mode, end_frame=0, ndigits=2, a=[0], b=[0], c=[0], d=[0], e=[0], f=[0], g=[0], h=[0]): print("Received keyframe_schedule:", keyframe_schedule) custom_vars = {"a": a, "b": b, "c": c, "d": d, "e": e, "f": f, "g": g, "h": h} scheduler = KeyframeScheduler(end_frame=end_frame, custom_vars=custom_vars) schedule = scheduler.generate_schedule(keyframe_schedule, easing_mode=easing_mode, ndigits=ndigits) return (schedule, ) ```