Video Corridor V1
An infinite corridor fly-through, generated in pure Python — no model required
- images
Video Corridor V1 generates a first-person flight down an infinite corridor - perspective vanishing point, walls scrolling past, lighting that changes - and it does it entirely with numpy and cv2. No model, no VAE, no GPU inference, no seed lottery. You give it dimensions and a color scheme, it hands back a batch of frames that just is the animation. For synthwave loops, title backgrounds, or VJ-style filler, it's instant gratification in a way diffusion never is.
How it works
Each frame is drawn procedurally: the node computes a perspective projection of corridor walls converging on a vanishing point, fills them with the chosen wall_pattern, and steps the camera forward by movement_speed per frame. Because the corridor is infinite by construction, the loop can be made seamless by matching the start and end camera positions - which makes it genuinely good background-loop material.
- corridor_depth (0.5–5, default 2) - how "long" the corridor feels; higher = more perspective pull
- movement_speed (0.01–0.2, default 0.05) - how fast you fly
- color_scheme - neon, classic, rainbow, monochrome, sunset, cyberpunk
- wall_pattern - solid, gradient, grid, diagonal
- lighting_mode - dynamic, static, pulsing, ambient
- perspective_strength (0.5–2) - the distortion of the convergence
Inputs and outputs
Required: width, height (128–4096, step 64), fps (1–60), max_frames (1–9999), then the corridor params above. Output: images - one IMAGE batch, max_frames frames long.
Wire that batch into a video save/encode node (or the pack's frame tools) and you have a rendered clip. Since it's just a tensor, you can also feed the frames onward - into img2img for stylization, into an interpolation pass, or into a compositor.
Where it sits in a workflow
The classic move: generate the corridor, then run it through an img2img or a ControlNet-constrained pass so the AI paints on top of a stable camera move. That's where procedural video really pays - you get perfect camera motion for free and use diffusion only for the surface. The corridor is also a dependable "is my video pipeline working?" test, because it needs zero models and renders in seconds.
Install
Part of DJZ-Nodes by Drift Johnson. ComfyUI Manager → "DJZ-Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/MushroomFleet/DJZ-Nodes
cd DJZ-Nodes
pip install -r requirements.txt
Restart ComfyUI. numpy/torch/cv2 only - nothing extra.
Gotchas
It's CPU rendering, and while it's fast at 512², a 4096² run with 9999 frames is a real render - keep max_frames proportional to your needs. The output is raw frames with no audio (obviously), so a silent corridor clip is on you. And the color schemes are preset-palettes, not user colors - if you want a specific purple, you're picking "neon" and hoping, or you're post-grading.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 512128–4096 | — |
| height | INT | 512128–4096 | — |
| fps | INT | 301–60 | — |
| max_frames | INT | 3001–9999 | — |
| corridor_depth | FLOAT | 2.00.5–5 | — |
| movement_speed | FLOAT | 0.050.01–0.2 | — |
| color_scheme | COMBO | 6 options: neon, classic, rainbow, monochrome, sunset, cyberpunk | |
| wall_pattern | COMBO | 4 options: solid, gradient, grid, diagonal | |
| lighting_mode | COMBO | 4 options: dynamic, static, pulsing, ambient | |
| perspective_strength | FLOAT | 1.00.5–2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |