DP Animation Calculator 10 Inputs
Schedule a ten-keyframe prompt-travel timeline
- Image_01_Input
- Image_02_Input
- Image_03_Input
- Image_04_Input
- Image_05_Input
- Image_06_Input
- Image_07_Input
- Image_08_Input
- Image_09_Input
- Image_10_Input
- Image_Batch_Output
- Text_Prompt_Timing
- fade_mask_01_timing
- fade_mask_02_timing
- fade_mask_03_timing
- Check_Log
The big-timeline version of the Desert Pixel animation calculator. Same job as the 5-input node - turn a set of keyframes with prompts and start frames into the timing strings a prompt-travel scheduler needs - but with room for ten keyframes. Reach for this when your animation has a real arc: ten distinct beats morphing across a few hundred frames, each with its own prompt.
It's from DesertPixelAi's Desert-Pixel-Nodes, a large quality-of-life pack. This is one of the pack's most involved nodes; it's doing timeline arithmetic, not text plumbing. It sits in front of an AnimateDiff-style keyframe workflow and hands it a correctly-formatted schedule so you don't have to compute one by hand across ten transitions.
How it works
You set a total frame count, then describe ten keyframes: an image, a prompt, and a start frame for each. The node figures out when each keyframe is active, blends between them over Transition_Frames, and outputs a batched image sequence plus the schedule strings - a prompt-travel timing string in the frame: prompt format and separate fade-mask timings. Those feed your keyframe/prompt-schedule nodes, and the sampler interpolates between the prompts as the frames advance.
Worth saying plainly: prompt travel is most associated with AnimateDiff, which Wan 2.2 and LTX have overtaken for general video quality. If you're starting a new project, look there first. But AnimateDiff-Evolved is still maintained and a dedicated group still uses it for its particular morphing aesthetic - and if that's your pipeline, a ten-keyframe schedule is exactly the kind of thing this node saves you from hand-rolling. If ten is more than you need, the 5-input version is the same node with less to fill in.
The inputs and outputs that matter
The ones you actually set:
Total_Frames- the full length (default 96, range 16 to 2000). Everything schedules relative to this.Image_01_startPoint…Image_10_startPoint- the frame each keyframe starts on. Image 1 is pinned at 0; the defaults step the rest by 24 (48, 72, 96, 120, and up).Prompt_Image_01…Prompt_Image_10- the ten keyframe prompts.Transition_Frames- crossfade length between keyframes (default 8, up to 32). Higher is smoother and slower.
Also present: the fade_mask_01/02/03 Min/Max floats for fade envelopes, and ten optional Image_01_Input … Image_10_Input IMAGE slots for supplying real images per keyframe.
Outputs: Image_Batch_Output (IMAGE), Text_Prompt_Timing (STRING - the prompt-travel schedule, the one you care about most), three fade_mask_0X_timing strings, and Check_Log (STRING). With ten keyframes the log is essential - read it to confirm the timeline came out the way you meant before you commit to a long render.
How to install it
- ComfyUI Manager: search "Desert Pixel", install, restart. No models needed.
- Manual:
cd ComfyUI/custom_nodes && git clone https://github.com/DesertPixelAi/ComfyUI-Desert-Pixel-Nodes,pip install -r requirements.txtif present, restart.
Under the DP category. You'll also need an AnimateDiff-style prompt scheduler to consume the timing output.
Common issues
Ten keyframes multiplies the chance of a start point falling outside Total_Frames. Any keyframe whose start frame is past the end never fires, so a prompt silently drops out of the animation. Keep your ten start points ordered and comfortably inside the total, and lean on Check_Log to verify the schedule before rendering - a mistake here is expensive when the render is hundreds of frames long.
Also, don't assume the ordering is forgiving. If your start points aren't monotonically increasing, the transitions won't land where you expect. And as with the 5-input node, if a scheduler chokes on the raw Text_Prompt_Timing, clean it through DP_Clean_Prompt_Travel before wiring it in - the calculator computes the timeline, but the scheduler is what actually drives the animation.
Inputs (38)
| Name | Type | Default | Description |
|---|---|---|---|
| Total_Frames | INT | 9616–2000 | — |
| Image_01_startPoint | INT | 00–0 | — |
| Image_02_startPoint | INT | 480–1000 | — |
| Image_03_startPoint | INT | 720–1000 | — |
| Image_04_startPoint | INT | 960–1000 | — |
| Image_05_startPoint | INT | 1200–1000 | — |
| Image_06_startPoint | INT | 1440–1000 | — |
| Image_07_startPoint | INT | 1680–1000 | — |
| Image_08_startPoint | INT | 1920–1000 | — |
| Image_09_startPoint | INT | 2160–1000 | — |
| Image_10_startPoint | INT | 2400–1000 | — |
| Prompt_Image_01 | STRING | prompt 01 | — |
| Prompt_Image_02 | STRING | prompt 02 | — |
| Prompt_Image_03 | STRING | prompt 03 | — |
| Prompt_Image_04 | STRING | prompt 04 | — |
| Prompt_Image_05 | STRING | prompt 05 | — |
| Prompt_Image_06 | STRING | prompt 06 | — |
| Prompt_Image_07 | STRING | prompt 07 | — |
| Prompt_Image_08 | STRING | prompt 08 | — |
| Prompt_Image_09 | STRING | prompt 09 | — |
| Prompt_Image_10 | STRING | prompt 10 | — |
| Transition_Frames | INT | 80–32 | — |
| fade_mask_01_Min | FLOAT | 0.00–1 | — |
| fade_mask_01_Max | FLOAT | 1.00–1 | — |
| fade_mask_02_Min | FLOAT | 0.00–1 | — |
| fade_mask_02_Max | FLOAT | 1.00–1 | — |
| fade_mask_03_Min | FLOAT | 0.00–1 | — |
| fade_mask_03_Max | FLOAT | 1.00–1 | — |
| Image_01_Inputopt | IMAGE | — | |
| Image_02_Inputopt | IMAGE | — | |
| Image_03_Inputopt | IMAGE | — | |
| Image_04_Inputopt | IMAGE | — | |
| Image_05_Inputopt | IMAGE | — | |
| Image_06_Inputopt | IMAGE | — | |
| Image_07_Inputopt | IMAGE | — | |
| Image_08_Inputopt | IMAGE | — | |
| Image_09_Inputopt | IMAGE | — | |
| Image_10_Inputopt | IMAGE | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| Image_Batch_Output | IMAGE | — |
| Text_Prompt_Timing | STRING | — |
| fade_mask_01_timing | STRING | — |
| fade_mask_02_timing | STRING | — |
| fade_mask_03_timing | STRING | — |
| Check_Log | STRING | — |