Street View Animator
Rotations, Tilts and Zooms as a Frame Stack
- images
- metadata
If you've ever wanted a slow camera pan across a real street - the kind of move that makes a walk-through video feel alive - StreetViewAnimator is the pack's shortcut. It doesn't generate video. It generates a sequence of real frames by moving the Street View camera through your chosen parameters frame by frame, and hands you the whole stack as one batched IMAGE output. You then do what you like with it: feed it to a video-diffusion workflow (the README demonstrates exactly this - using the output as first/last frame input to create a walk-through), process it frame by frame, or combine it into a video with a Video Combine node.
The appeal is that every frame is a real, photographic capture of an actual place. No model hallucinating motion blur; the camera genuinely rotates through the scene Google photographed.
How it works
The node interpolates heading, pitch, and fov from start to end over duration × fps frames, using your chosen easing, and calls the Street View API once per frame. Each frame becomes one slice of a stacked tensor.
That per-frame cost is the one thing to respect here. 5 seconds at 24 fps is 120 API requests per run. The pack's free $200/month Google credit covers a lot - but this node burns through it faster than any other in the pack, and an animation you re-run while tweaking adds up. Be deliberate; preview a 1-second, low-fps pass before committing to the full render.
The inputs that matter
start_heading/end_heading(0–360) - rotation. The classic move is 0 → 360 for a full sweep, and the node handles the wrap-around so it rotates the short way rather than snapping.start_pitch/end_pitch(−90 to 90) - tilt. Combined with heading changes it gives you dynamic "crane-like" moves.start_fov/end_fov(10–120) - zoom. Keep heading still and animate fov for a dolly effect.duration(0.1–60 s) andfps(1–60) - total frames = duration × fps. Higher is smoother and pricier.interpolation-linear,ease_in,ease_out, orease_in_out. For pans that feel natural rather than mechanical,ease_in_outis the one.aspect_ratio- the same preset dropdown as the plain loader (16:9, 1:1, 9:16, …), setting the frame size.historical_date_id(optional) - a panorama ID if you want to animate a historical capture instead of the current view.
Outputs are images (the stacked, batched IMAGE - a batch of N frames you can feed to video nodes directly) and metadata (a STRING recording frame count, settings, and the easing used).
Install
Same pack, same story as the rest of ru4ls/ComfyUI_StreetView-Loader: clone it into custom_nodes, pip install -r requirements.txt, restart ComfyUI, and put a Google Street View API key in the pack's .env file. You'll find the node under Ru4ls/StreetView in the menu. No extra models, no special deps - just remember the per-frame API bill before you queue up a long render.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| location | STRING | 40.720032,-73.988354 | — |
| start_heading | FLOAT | 0.00–360 | — |
| end_heading | FLOAT | 360.00–360 | — |
| start_pitch | FLOAT | 0.0-90–90 | — |
| end_pitch | FLOAT | 0.0-90–90 | — |
| start_fov | INT | 9010–120 | — |
| end_fov | INT | 9010–120 | — |
| duration | FLOAT | 5.00.1–60 | — |
| fps | INT | 241–60 | — |
| aspect_ratio | COMBO | 5 options: 1:1 Square (640x640), 16:9 Widescreen (640x360), 9:16 Vertical (360x640), 4:3 Classic (640x480), 3:2 Photography (640x427) | |
| interpolation | COMBO | linear | 4 options: linear, ease_in, ease_out, ease_in_out |
| historical_date_idopt | STRING | Enter a panorama ID to animate a historical image from a specific date |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| metadata | STRING | — |