Files
CavinHuang-comfyui-nodes-docs/docs/SaltKeyframeMetrics.md
2024-07-04 08:39:03 +08:00

111 lines
3.8 KiB
Markdown

# Documentation
- Class name: SaltKeyframeMetrics
- Category: SALT/Scheduling/Util
- Output node: False
SaltKeyframeMetrics节点旨在计算和呈现给定调度中关键帧值的各种指标。它专注于分析关键帧序列的统计特性,如最大值、最小值、总和、平均值、绝对总和和绝对平均值,以及序列的持续时间。该节点有助于评估关键帧数据的动态范围和整体特征,对于优化和理解动画或音视频同步调度非常有用。
# Input types
## Required
- schedule_list
- 'schedule_list'参数表示要分析的关键帧值序列。它对于确定将要计算的统计指标至关重要,影响节点的执行和结果。
- Comfy dtype: LIST
- Python dtype: List[float]
## Optional
- start_frame
- 指定在'schedule_list'中开始分析的起始帧索引。它影响用于指标计算的关键帧子集。
- Comfy dtype: INT
- Python dtype: int
- end_frame
- 定义'schedule_list'中分析的结束帧索引。它决定了包含在指标计算中的关键帧范围。
- Comfy dtype: INT
- Python dtype: int
- frame_rate
- 帧率参数用于计算关键帧序列的持续时间。它影响指标的时间方面,为统计值提供时间上下文。
- Comfy dtype: FLOAT
- Python dtype: float
# Output types
- value_min
- Comfy dtype: FLOAT
- 分析的关键帧值中的最小值。
- Python dtype: float
- value_max
- Comfy dtype: FLOAT
- 分析的关键帧值中的最大值。
- Python dtype: float
- value_sum
- Comfy dtype: FLOAT
- 指定范围内所有关键帧值的总和。
- Python dtype: float
- value_avg
- Comfy dtype: FLOAT
- 分析范围内关键帧值的平均值。
- Python dtype: float
- abs_sum
- Comfy dtype: FLOAT
- 关键帧值绝对值的总和,突出显示整体活动,无论方向如何。
- Python dtype: float
- abs_avg
- Comfy dtype: FLOAT
- 关键帧值绝对值的平均值,提供对一般活动幅度的洞察。
- Python dtype: float
- duration
- Comfy dtype: FLOAT
- 关键帧序列的持续时间,根据帧率和帧数计算。
- Python dtype: float
## Usage tips
- Infra type: `CPU`
- Common nodes: unknown
## Source code
```python
class SaltKeyframeMetrics:
@classmethod
def INPUT_TYPES(cls):
input_types = {
"required": {
"schedule_list": ("LIST",),
},
"optional": {
"start_frame": ("INT", {"min": 0, "default": 0}),
"end_frame": ("INT", {"min": 0, "default": -1}),
"frame_rate": ("FLOAT", {"min": 0.1, "default": 24.0}),
}
}
return input_types
RETURN_TYPES = ("FLOAT", "FLOAT", "FLOAT", "FLOAT", "FLOAT", "FLOAT", "FLOAT")
RETURN_NAMES = ("value_min", "value_max", "value_sum", "value_avg", "abs_sum", "abs_avg", "duration")
FUNCTION = "schedule_metrics"
CATEGORY = "SALT/Scheduling/Util"
def schedule_metrics(self, schedule_list, start_frame=0, end_frame=-1, frame_rate=24.0):
if end_frame == -1 or end_frame > len(schedule_list):
end_frame = len(schedule_list)
num_frames = max(2, end_frame - start_frame)
keyframe_values = schedule_list[start_frame:end_frame]
value_min = float(np.min(keyframe_values).round(2))
value_max = float(np.max(keyframe_values).round(2))
value_sum = float(np.sum(keyframe_values).round(2))
value_avg = float(np.mean(keyframe_values).round(2))
abs_sum = float(np.sum(np.abs(keyframe_values)).round(2))
abs_avg = float(np.mean(np.abs(keyframe_values)).round(2))
duration = num_frames / frame_rate
return value_min, value_max, value_sum, value_avg, abs_sum, abs_avg, duration
@classmethod
def IS_CHANGED(cls, **kwargs):
return float("NaN")
```