Files
CavinHuang-comfyui-nodes-docs/docs/ADE_LoopedUniformContextOptions.md
2024-05-26 20:35:16 +08:00

4.6 KiB

Documentation

LoopedUniformContextOptionsNode旨在为动画目的生成一系列上下文选项。它根据给定的参数创建基于上下文的均匀分布,确保动画帧的一致流动。该节点特别适用于创建动画循环,其中均匀性和连续性至关重要。

Input types

Required

  • context_length
    • context_length参数决定了动画序列中每个上文的长度。它对于定义每个上下文的范围至关重要,并影响动画的整体结构。
    • Comfy dtype: INT
    • Python dtype: int
  • context_stride
    • context_stride参数指定连续上下文之间的步长。它影响每个上下文与其邻居的关联程度,影响动画序列的连贯性。
    • Comfy dtype: INT
    • Python dtype: int
  • context_overlap
    • context_overlap参数定义了相邻上下文之间的重叠量。这对于确保动画中上下文之间的平滑过渡和保持视觉连续性很重要。
    • Comfy dtype: INT
    • Python dtype: int
  • closed_loop
    • closed_loop参数指示动画是否应在最后一个上下文之后循环回到开头。这可以用来创建无缝、重复的动画。
    • Comfy dtype: BOOLEAN
    • Python dtype: bool

Optional

  • fuse_method
    • fuse_method参数决定了动画中上下文是如何融合在一起的。它可以影响上下文的混合和合并,影响动画的最终外观。
    • Comfy dtype: ContextFuseMethod.LIST
    • Python dtype: str
  • use_on_equal_length
    • use_on_equal_length参数指定是否仅在上下文的长度符合特定条件时才应使用上下文。这可以用来根据特定标准控制上下文的应用。
    • Comfy dtype: BOOLEAN
    • Python dtype: bool
  • start_percent
    • start_percent参数定义了动画序列中上下文的起始百分比。它用于控制每个上下文开始的时间。
    • Comfy dtype: FLOAT
    • Python dtype: float
  • guarantee_steps
    • guarantee_steps参数确保每个上下文在动画中至少显示一定数量的步骤。这有助于保持每个上下文在序列中的可见性和影响力。
    • Comfy dtype: INT
    • Python dtype: int
  • view_opts
    • view_opts参数提供了查看动画的选项。它可以包括影响动画显示或渲染的设置。
    • Comfy dtype: VIEW_OPTS
    • Python dtype: ContextOptions
  • prev_context
    • prev_context参数允许延续之前的上下文序列。当扩展或修改现有的动画序列时使用。
    • Comfy dtype: CONTEXT_OPTIONS
    • Python dtype: ContextOptionsGroup

Output types

  • CONTEXT_OPTS
    • 输出CONTEXT_OPTS提供了基于输入参数生成的一组结构化的上下文选项。这些选项可以直接用于动画过程。
    • Comfy dtype: CONTEXT_OPTIONS
    • Python dtype: ContextOptionsGroup

Usage tips

  • Infra type: CPU

Source code

class LoopedUniformContextOptionsNode:

    @classmethod
    def INPUT_TYPES(s):
        return {'required': {'context_length': ('INT', {'default': 16, 'min': 1, 'max': LENGTH_MAX}), 'context_stride': ('INT', {'default': 1, 'min': 1, 'max': STRIDE_MAX}), 'context_overlap': ('INT', {'default': 4, 'min': 0, 'max': OVERLAP_MAX}), 'closed_loop': ('BOOLEAN', {'default': False})}, 'optional': {'fuse_method': (ContextFuseMethod.LIST,), 'use_on_equal_length': ('BOOLEAN', {'default': False}), 'start_percent': ('FLOAT', {'default': 0.0, 'min': 0.0, 'max': 1.0, 'step': 0.001}), 'guarantee_steps': ('INT', {'default': 1, 'min': 0, 'max': BIGMAX}), 'prev_context': ('CONTEXT_OPTIONS',), 'view_opts': ('VIEW_OPTS',)}}
    RETURN_TYPES = ('CONTEXT_OPTIONS',)
    RETURN_NAMES = ('CONTEXT_OPTS',)
    CATEGORY = 'Animate Diff 🎭🅐🅓/context opts'
    FUNCTION = 'create_options'

    def create_options(self, context_length: int, context_stride: int, context_overlap: int, closed_loop: bool, fuse_method: str=ContextFuseMethod.FLAT, use_on_equal_length=False, start_percent: float=0.0, guarantee_steps: int=1, view_opts: ContextOptions=None, prev_context: ContextOptionsGroup=None):
        if prev_context is None:
            prev_context = ContextOptionsGroup()
        prev_context = prev_context.clone()
        context_options = ContextOptions(context_length=context_length, context_stride=context_stride, context_overlap=context_overlap, context_schedule=ContextSchedules.UNIFORM_LOOPED, closed_loop=closed_loop, fuse_method=fuse_method, use_on_equal_length=use_on_equal_length, start_percent=start_percent, guarantee_steps=guarantee_steps, view_options=view_opts)
        prev_context.add(context_options)
        return (prev_context,)