DP Animation Calculator 5 Inputs
Build a prompt-travel schedule from five keyframes
- Image_01_Input
- Image_02_Input
- Image_03_Input
- Image_04_Input
- Image_05_Input
- Image_Batch_Output
- Text_Prompt_Timing
- fade_mask_01_timing
- fade_mask_02_timing
- fade_mask_03_timing
- Check_Log
Prompt-travel animation is fiddly bookkeeping. You've got several keyframes, each with its own prompt and its own start frame, and you need to hand a scheduler a correctly-formatted timing string that says "at frame 0 use this, at frame 24 use that," plus matching fade timings, all consistent with your total frame count. Getting that by hand is where mistakes creep in. This node does the arithmetic: you describe five keyframes and it spits out the schedule strings for you.
It's from DesertPixelAi's Desert-Pixel-Nodes, a large quality-of-life pack. This is one of its heavier nodes - it's not moving text around, it's computing an animation timeline. Think of it as the planning brain that sits in front of an AnimateDiff-style keyframe workflow.
How it works
You give it a total length, five images with five prompts, and a start frame for each image. It works out when each keyframe becomes active, applies a crossfade of Transition_Frames between them, and produces a batched image sequence plus the timing strings a scheduler needs - a prompt-travel string in the frame: prompt format, and separate fade-mask timing strings. You wire those outputs into your keyframe/prompt-schedule nodes and let the sampler interpolate.
A straight reality check: prompt travel's classic home, AnimateDiff, has been overtaken by Wan 2.2 and LTX for general video, and if you're starting fresh that's where the quality is. But AnimateDiff-Evolved is still maintained and a real niche keeps using it for its specific morphing look. If that's the workflow you're in, this calculator is built for it. The five-input version is the one to start with - it's the same idea as the ten-input node with a saner amount of setup.
The inputs and outputs that matter
The ones a beginner actually sets:
Total_Frames- the whole animation length (default 96, range 16 to 2000). Everything else is scheduled relative to this.Image_01_startPoint…Image_05_startPoint- the frame where each keyframe kicks in. Image 1 starts at 0; the defaults step the rest evenly (0, 24, 48, 72, 96).Prompt_Image_01…Prompt_Image_05- the prompt for each keyframe.Transition_Frames- how many frames to crossfade between keyframes (default 8, up to 32). Bigger means smoother, slower morphs.
There's also a set of fade_mask_01/02/03 Min/Max floats for controlling fade envelopes, and five optional Image_01_Input … Image_05_Input IMAGE slots for feeding actual images per keyframe.
Outputs: Image_Batch_Output (IMAGE), Text_Prompt_Timing (STRING - the prompt-travel schedule, the key output), three fade_mask_0X_timing strings, and Check_Log (STRING). That last one is your friend - it reports what the node computed, so when the timing looks wrong you read the log instead of guessing.
How to install it
- ComfyUI Manager: search "Desert Pixel", install, restart. No models to download.
- 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 want an AnimateDiff-style prompt scheduler installed to consume the output.
Common issues
The most common mistake is start points that don't fit inside Total_Frames. If a keyframe's start frame is past the end of your animation, it never triggers, and you get a schedule that quietly drops a prompt. Keep your start points ordered and inside the total, and check Check_Log to confirm the timeline is what you intended.
The other one is feeding the raw Text_Prompt_Timing straight into a scheduler that's picky about formatting. If it errors, run the string through DP_Clean_Prompt_Travel first - that node is built to tidy exactly this format. And remember the whole thing only makes sense paired with a scheduler that understands prompt travel; on its own this node calculates a timeline but doesn't animate anything.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| Total_Frames | INT | 9616–2000 | — |
| Image_01_startPoint | INT | 00–0 | — |
| Image_02_startPoint | INT | 240–1000 | — |
| Image_03_startPoint | INT | 480–1000 | — |
| Image_04_startPoint | INT | 720–1000 | — |
| Image_05_startPoint | INT | 960–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 | — |
| 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 | — |
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 | — |