135 lines
4.1 KiB
Markdown
135 lines
4.1 KiB
Markdown
# ComfyUI-Keyframed
|
|
|
|
🚧 Work In Progress 🚧 - ComfyUI nodes to facilitate value keyframing by providing an interface for using [keyframed](https://github.com/dmarx/keyframed) in ComfyUI workflows.
|
|
|
|
Similar project you might find more convenient for certain use cases https://github.com/FizzleDorf/ComfyUI_FizzNodes
|
|
|
|
<!--ts-->
|
|
* [ComfyUI-Keyframed](#comfyui-keyframed)
|
|
* [Overview](#overview)
|
|
* [Starter Workflows](#starter-workflows)
|
|
* [Prompt Scheduling](#prompt-scheduling)
|
|
* [Prompt Interleaving (aka Prompt Entanglement, aka Prompt Superposition)](#prompt-interleaving-aka-prompt-entanglement-aka-prompt-superposition)
|
|
* [Simple Curved Parameter](#simple-curved-parameter)
|
|
* [Multi-Prompt Transition With Manually Specified Curves](#multi-prompt-transition-with-manually-specified-curves)
|
|
* [Nodes](#nodes)
|
|
* [Curve Constructors](#curve-constructors)
|
|
* [Curve From String](#curve-from-string)
|
|
* [Curve From YAML](#curve-from-yaml)
|
|
* [Constant-Valued Curve](#constant-valued-curve)
|
|
* [Entangled Curves](#entangled-curves)
|
|
* [Curve Operators](#curve-operators)
|
|
* [Evaluate Curve At T](#evaluate-curve-at-t)
|
|
* [Apply Curve To Conditioning](#apply-curve-to-conditioning)
|
|
* [Add Conditions](#add-conditions)
|
|
* [Curve Arithmetic Operators](#curve-arithmetic-operators)
|
|
* [Scheduling](#scheduling)
|
|
* [Keyframed Condition](#keyframed-condition)
|
|
* [Set Keyframe](#set-keyframe)
|
|
* [Evaluate Schedule](#evaluate-schedule)
|
|
<!--te-->
|
|
|
|
|
|
# Overview
|
|
|
|
**Philosophy**
|
|
|
|
* Treat curves/schedules and keyframes as objects that can be passed around, plugged and unplugged, interchanged, and manipulated atomically.
|
|
* Leverage nodes to facilitate modularity and flexibility.
|
|
* Facilitate fast iteration
|
|
* Provide convenience functions for most common use cases, and also low-leverl operators capable of reproducing the behavior of those convenience functions to permit user customization in "node space".
|
|
|
|
|
|
# Starter Workflows
|
|
|
|
## Prompt Scheduling
|
|
|
|

|
|
|
|
This one is probably why you are here. This workflow demonstrates how to use the `keyframed/schedule` nodes to achieve similar behavior as [FizzNodes'](https://github.com/FizzleDorf/ComfyUI_FizzNodes) **PromptSchedule** node, but implemented differently.
|
|
|
|
This schedule is essentailly a normal AnimateDiff workflow where several nodes have replaced the normal conditioning setup. Rather than a single `CLIP Text Encode` node, we can have multiple prompts which transition sequentially over time. For documentation detailing how this workflow works, see the `Nodes > Scheduling` section below.
|
|
|
|
## Prompt Interleaving (aka Prompt Entanglement, aka Prompt Superposition)
|
|
|
|

|
|
|
|
Which is the node equivalent for achieving this type of thing
|
|
|
|

|
|
|
|
|
|
## Simple Curved Parameter
|
|
|
|

|
|
|
|
|
|
## Multi-Prompt Transition With Manually Specified Curves
|
|
|
|

|
|
|
|
|
|
# Nodes
|
|
|
|
## Curve Constructors
|
|
|
|
### Curve From String
|
|
|
|

|
|
|
|
|
|
### Curve From YAML
|
|
|
|

|
|
|
|
|
|
### Constant-Valued Curve
|
|
|
|

|
|
|
|
|
|
### Entangled Curves
|
|
|
|

|
|
|
|
|
|
## Curve Operators
|
|
|
|
### Evaluate Curve At T
|
|
|
|

|
|
|
|
|
|
### Apply Curve To Conditioning
|
|
|
|

|
|
|
|
|
|
### Add Conditions
|
|
|
|

|
|
|
|
|
|
### Curve Arithmetic Operators
|
|
|
|

|
|
|
|
NB: the division operator is unreliable at the time of this writing (2023-12-09).
|
|
|
|
|
|
## Scheduling
|
|
|
|
### Keyframed Condition
|
|
|
|

|
|
|
|
|
|
### Set Keyframe
|
|
|
|

|
|
|
|
### Evaluate Schedule
|
|
|
|

|
|
|