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

68 lines
4.6 KiB
Markdown

# Documentation
- Class name: BatchPromptScheduleEncodeSDXL
- Category: FizzNodes 📅🅕🅝/BatchScheduleNodes
- Output node: False
- Repo Ref: https://github.com/FizzleDorf/ComfyUI_FizzNodes
BatchPromptScheduleEncodeSDXL 节点旨在处理并为图像或视频生成动画化一系列提示。它接收各种参数,如文本提示、尺寸和插值权重,以创建动态的提示序列,然后对这些提示进行编码,以便在生成模型中使用。该节点在动画流水线中扮演着关键角色,通过生成必要的条件数据,实现帧与帧之间连贯和平滑的过渡。
# Input types
## Required
- width
- 宽度参数对于定义生成媒体的尺寸至关重要。它与高度参数一起工作,确保输出遵守所需的纵横比和分辨率。
- Comfy dtype: INT
- Python dtype: int
- text_g
- text_g 输入包含用于生成动画的图形提示的字符串。它是塑造动画序列视觉输出的关键组成部分。
- Comfy dtype: STRING
- Python dtype: str
- max_frames
- max_frames 参数规定了为动画生成的最大帧数。它是决定最终输出长度和复杂度的关键因素。
- Comfy dtype: INT
- Python dtype: int
## Optional
- pw_a
- pw_a 参数是插值过程中使用的可选权重因子。它允许微调动画序列中某些提示的影响。
- Comfy dtype: FLOAT
- Python dtype: float
# Output types
- POS
- POS 输出提供了从提示中派生的正面条件数据,用于引导生成过程朝着更有利的结果发展。
- Comfy dtype: CONDITIONING
- Python dtype: torch.Tensor
- NEG
- NEG 输出包含负面条件数据,通过提供反例或约束,有助于引导生成过程避免不希望的结果。
- Comfy dtype: CONDITIONING
- Python dtype: torch.Tensor
# Usage tips
- Infra type: GPU
# Source code
```
class BatchPromptScheduleEncodeSDXL:
@classmethod
def INPUT_TYPES(s):
return {'required': {'width': ('INT', {'default': 1024.0, 'min': 0, 'max': MAX_RESOLUTION}), 'height': ('INT', {'default': 1024.0, 'min': 0, 'max': MAX_RESOLUTION}), 'crop_w': ('INT', {'default': 0, 'min': 0, 'max': MAX_RESOLUTION}), 'crop_h': ('INT', {'default': 0, 'min': 0, 'max': MAX_RESOLUTION}), 'target_width': ('INT', {'default': 1024.0, 'min': 0, 'max': MAX_RESOLUTION}), 'target_height': ('INT', {'default': 1024.0, 'min': 0, 'max': MAX_RESOLUTION}), 'text_g': ('STRING', {'multiline': True}), 'clip': ('CLIP',), 'text_l': ('STRING', {'multiline': True}), 'clip': ('CLIP',), 'max_frames': ('INT', {'default': 120.0, 'min': 1.0, 'max': 999999.0, 'step': 1.0}), 'print_output': ('BOOLEAN', {'default': False})}, 'optional': {'pre_text_G': ('STRING', {'multiline': True}), 'app_text_G': ('STRING', {'multiline': True}), 'pre_text_L': ('STRING', {'multiline': True}), 'app_text_L': ('STRING', {'multiline': True}), 'pw_a': ('FLOAT', {'default': 0.0, 'min': -9999.0, 'max': 9999.0, 'step': 0.1}), 'pw_b': ('FLOAT', {'default': 0.0, 'min': -9999.0, 'max': 9999.0, 'step': 0.1}), 'pw_c': ('FLOAT', {'default': 0.0, 'min': -9999.0, 'max': 9999.0, 'step': 0.1}), 'pw_d': ('FLOAT', {'default': 0.0, 'min': -9999.0, 'max': 9999.0, 'step': 0.1})}}
RETURN_TYPES = ('CONDITIONING', 'CONDITIONING')
RETURN_NAMES = ('POS', 'NEG')
FUNCTION = 'animate'
CATEGORY = 'FizzNodes 📅🅕🅝/BatchScheduleNodes'
def animate(self, clip, width, height, crop_w, crop_h, target_width, target_height, text_g, text_l, app_text_G, app_text_L, pre_text_G, pre_text_L, max_frames, print_output, pw_a, pw_b, pw_c, pw_d):
inputTextG = str('{' + text_g + '}')
inputTextL = str('{' + text_l + '}')
inputTextG = re.sub(',\\s*}', '}', inputTextG)
inputTextL = re.sub(',\\s*}', '}', inputTextL)
animation_promptsG = json.loads(inputTextG.strip())
animation_promptsL = json.loads(inputTextL.strip())
(posG, negG) = batch_split_weighted_subprompts(animation_promptsG, pre_text_G, app_text_G)
(posL, negL) = batch_split_weighted_subprompts(animation_promptsL, pre_text_L, app_text_L)
(pc, pn, pw) = BatchInterpolatePromptsSDXL(posG, posL, max_frames, clip, app_text_G, app_text_L, pre_text_G, pre_text_L, pw_a, pw_b, pw_c, pw_d, width, height, crop_w, crop_h, target_width, target_height, print_output)
p = BatchPoolAnimConditioningSDXL(pc, pn, pw)
(nc, nn, nw) = BatchInterpolatePromptsSDXL(negG, negL, max_frames, clip, app_text_G, app_text_L, pre_text_G, pre_text_L, pw_a, pw_b, pw_c, pw_d, width, height, crop_w, crop_h, target_width, target_height, print_output)
n = BatchPoolAnimConditioningSDXL(nc, nn, nw)
return (p, n)
```