Shotcut tutorial · companion page
Two photographs, two video tracks, and one Rotate and Scale filter. Change which field you keyframe and the same stack gives you a parallax, a vertigo or a dolly zoom — three related effects that are easy to confuse and easy to tell apart once you see what moves.
Reading in another language? Use the translate picker in the header, or your browser’s own translate command — the Shotcut filter, control and value names are marked to stay in English so they still match what is on your screen.
The title of this tutorial lists three effects. They are relatives, not synonyms, and conflating them is the easy mistake. Everything below is built from the same two photographs on the same two tracks with the same single filter — what changes is which field gets the keyframes.
Both layers pan across. The background travels a long way, the foreground barely moves. Depth comes from the difference in lateral rate, not from anything changing size. In this video that is X offset, keyframed, and nothing else.
Nothing pans. The background scales up while the foreground scales down over the same span, so the subject holds roughly its place in frame while the world behind it rushes forward. That is Scale, keyframed on both layers with opposite endpoints.
“Vertigo effect” and “dolly zoom” name the same shot; the first comes from the Hitchcock film that made it famous. Ben uses both words for the same build here, so treat them as one thing and reserve “parallax” for the sideways version.
A real dolly zoom changes perspective: the camera physically moves while the lens counter-zooms, and the background’s geometry stretches. Two flat photographs cannot stretch — they can only change size. This is a convincing 2.5D approximation, which is why it reads best on a subject cleanly cut from its background.
[ what makes this effect so cool is that the foreground and the background move independently of each other ]
Ben Espanto · 4:38
Click any screencap or timestamp to play that chapter from its exact second, right here in the card. Quotes are transcribed verbatim from the audio. The card marked derived was read off the frames, because the published chapter list stops at 9:58 while the video runs to 12:01.
Every number below was read off the screen in the video. Where a value was never shown settled — and several closing keyframes never were — it is said so plainly rather than guessed at.
The technique needs two layers that can move independently, so the subject has to already be separated. Here that is pngwave.png, a transparent PNG, over forest-back.jpeg. Both are stills; the same build works on video clips, which is what Ben says he normally uses.
A still background is the simplest case. Swapping a video clip in for the background costs nothing in the build and reads as more realistic, because the leaves and light are already alive before any keyframe is added.
Drag the background photograph onto V1, add a second video track, and put the transparent foreground on V2 directly above it. Each still arrives four seconds long; drag each clip’s edge out to roughly ten seconds and match them so the pair start and end together.
Matching the two clip lengths matters more than hitting exactly ten seconds. The keyframes are placed at the first and last frame of each clip, so a mismatch means the two layers finish their moves at different moments and the illusion breaks at the tail.
Select the foreground clip, open Filters, press + and search for the filter. This build has one filter and one only — Rotate and Scale, with four fields.
Note what is not here. This release exposes Rotation, Scale, X offset and Y offset. There is no Zoom field and no Size mode dropdown — those belong to the later Size, Position & Rotate filter, which this build predates. Positive Y offset moves the layer down the frame.
Put the playhead on the first frame of the clip and click the stopwatch beside Scale to start keyframing, then move to the last frame and type the closing value. Do it on both layers with the endpoints running opposite ways.
The background’s closing Scale was typed as 220 % at 2:40, retyped to 200.0 % at 3:20, and raised again at 6:10 — playback readings afterwards pass 226.1 %, above the old ceiling. The raised value is never displayed on screen, so it is not stated here as a number.
With the same clip selected, click the stopwatch beside Y offset as well. The background then rises as it grows instead of expanding symmetrically out of the middle, which is what stops the move looking mechanical.
The spoken figure for the background’s closing Y offset is “about 67”. The panel disagrees: playback readings reach 105 at 4:20 with Scale at 197.8 %, so the closing keyframe is higher than 67. It is never shown settled, so the verified range below stops at what was actually on screen.
Lay the same two files back in on the same two tracks, ten seconds again. This project reads 00:00:10:03. Position the foreground with Y offset as before, settling at 222.
Starting clean is deliberate. The parallax keyframes a different field from the dolly zoom, and leaving the previous Scale keyframes in place would give you both effects at once — which is a legitimate look, but not a demonstration of either one.
Select the background and raise Scale until the frame has slack on both sides. Typed to 122.7 % first, settled at 133.4 %. Those surplus pixels are what the sideways travel consumes; without them the pan drags a black edge into frame.
How much oversize you need is set by how far you intend to travel, so size the background after you have decided the sweep, or expect to come back and raise it. Ben overshoots the closing keyframe once at 9:07 and sees exactly that black edge.
Leave Scale alone entirely. Keyframe X offset on the background from 140 to −80, then keyframe X offset on the foreground from 0 to −24. That is the entire parallax.
The ratio is the effect. 220 of background travel against 24 of foreground travel is about nine to one. Push the foreground much further and the pair start reading as one flat card sliding across; leave it at zero and the shot goes stiff.
Read directly off the frames of the video. Values typed and left in place are marked final; values seen only mid-playback are listed separately as interpolated readings, because a moving keyframed field shows you the interpolation, not the keyframe.
| Setting | Value | Where it lives |
|---|---|---|
| Project duration, build A | 00:00:10:19 | Player, Project tab |
| Project duration, build B | 00:00:10:03 | Player, Project tab |
| Background file | forest-back.jpeg | Playlist item #1, on V1 |
| Foreground file | pngwave.png | Playlist item #2, on V2 |
| Source duration, both stills | 00:00:04:00 | Playlist |
| Timeline clip length, both builds | about 10 s, stretched by hand | Timeline |
| Track stack | V2 foreground cut-out / V1 background photograph | Timeline |
| Filter, the only one used | Rotate and Scale | Both clips, both builds |
| Rotation | 0.0 deg | Never changed, either build |
| Fields this filter exposes | Rotation, Scale, X offset, Y offset | Filters panel |
| Fields it does not expose | Zoom, Size mode | Not present in this release |
| Shotcut version | Not shown — no title bar, no About dialog | n/a |
| Layer | Field | Opening keyframe | Closing keyframe | Status |
|---|---|---|---|---|
| forest-back.jpeg background | Scale | 118.6 % | raised past 200.0 % | closing value not shown settled |
| forest-back.jpeg background | Y offset | 0 | above 105 | closing value not shown settled |
| pngwave.png foreground | Scale | 100.0 % | 87.8 % | both endpoints typed on screen |
| pngwave.png foreground | Y offset | 233 | about 283 | closing value not shown settled |
| pngwave.png foreground | X offset | 0 | 0 | not keyframed in this build |
| Layer | Field | Opening keyframe | Closing keyframe | Status |
|---|---|---|---|---|
| forest-back.jpeg background | X offset | 140 | −80 | both endpoints typed; −95 tried first, too far |
| pngwave.png foreground | X offset | 0 | −24 | both endpoints typed on screen |
| forest-back.jpeg background | Scale | 133.4 % | 133.4 % | static, not keyframed — oversize for travel room |
| pngwave.png foreground | Scale | 100.0 % | 100.0 % | static, not keyframed |
| pngwave.png foreground | Y offset | 222 | 222 | static, not keyframed |
| Time | Clip | Scale | X offset | Y offset | What is happening |
|---|---|---|---|---|---|
| 2:00 | pngwave.png | 100.0 % | 0 | 209 | typing the subject down the frame |
| 2:10 | pngwave.png | 100.0 % | 0 | 233 | settled position, build A |
| 2:20 | forest-back.jpeg | 118.6 % | 0 | 0 | background sized up |
| 2:40 | forest-back.jpeg | 220 % | 0 | 0 | first closing Scale typed |
| 2:50 | forest-back.jpeg | 141.3 % | 0 | 0 | interpolated, playing back |
| 3:00 | forest-back.jpeg | 120.2 % | 0 | 0 | interpolated, playing back |
| 3:20 | forest-back.jpeg | 200.0 % | 0 | 25 | closing Scale retyped |
| 3:30 | forest-back.jpeg | 118.6 % | 0 | 0 | opening keyframe, both stopwatches lit |
| 3:40 | forest-back.jpeg | 128.1 % | 0 | 13 | interpolated, playing back |
| 4:00 | forest-back.jpeg | 150.8 % | 0 | 43 | interpolated, playing back |
| 4:20 | forest-back.jpeg | 197.8 % | 0 | 105 | interpolated, near the close |
| 4:30 | forest-back.jpeg | 186.1 % | 0 | 90 | interpolated, playing back |
| 4:40 | pngwave.png | 100.0 % | 0 | 233 | foreground selected, no keyframes yet |
| 4:50 | pngwave.png | 99.1 % | 0 | 233 | typing the foreground Scale |
| 5:00 | pngwave.png | 87.8 % | 0 | 233 | closing foreground Scale typed |
| 5:20 | pngwave.png | 99.5 % | 0 | 235 | interpolated, playing back |
| 5:30 | pngwave.png | 88.1 % | 0 | 282 | interpolated, near the close |
| 5:40 | pngwave.png | 92.5 % | 0 | 264 | interpolated, playing back |
| 6:00 | pngwave.png | 100.0 % | 0 | 233 | opening keyframe, build A foreground |
| 6:10 | forest-back.jpeg | 118.6 % | 0 | 0 | opening keyframe, build A background |
| 6:20 | forest-back.jpeg | 226.1 % | 0 | 88 | interpolated, past the old ceiling |
| 6:30 | forest-back.jpeg | 213.3 % | 0 | 78 | interpolated, playing back |
| 8:00 | pngwave.png | 100.0 % | 0 | 65 | typing position, build B |
| 8:10 | pngwave.png | 100.0 % | 0 | 222 | settled position, build B |
| 8:20 | forest-back.jpeg | 122.7 % | 0 | 0 | typing the oversize |
| 8:30 | forest-back.jpeg | 133.4 % | 0 | 0 | settled oversize |
| 8:40 | forest-back.jpeg | 133.4 % | 154 | 0 | hunting the left edge |
| 8:50 | forest-back.jpeg | 133.4 % | 140 | 0 | opening X offset keyframe |
| 9:10 | forest-back.jpeg | 133.4 % | −95 | 0 | closing keyframe, overshoots |
| 9:20 | forest-back.jpeg | 133.4 % | 140 | 0 | back at the opening keyframe |
| 9:30 | forest-back.jpeg | 133.4 % | −80 | 0 | closing keyframe, corrected |
| 9:50 | pngwave.png | 100.0 % | 0 | 222 | opening foreground keyframe |
| 10:00 | pngwave.png | 100.0 % | −24 | 222 | closing foreground keyframe |
| 10:10 | pngwave.png | 100.0 % | −18 | 222 | interpolated, playing back |
| 10:20 | pngwave.png | 100.0 % | −6 | 222 | interpolated, playing back |
| 11:10 | pngwave.png | 100.0 % | −15 | 222 | interpolated, playing back |
Rotation reads 0.0 deg in every single frame of this video, on both layers, in both builds. It is never touched. Neither is Size mode, which does not exist in this release — and the Shotcut version is never shown either: the capture is cropped above the window title bar and the About Shotcut dialog is never opened, so no version number appears anywhere in the twelve minutes.
Machine transcribed from the video audio. Spoken phrasing is left as-is; only the product and filter names Whisper mangled have been corrected — including “vertical effect”, which is Ben saying vertigo. Every timestamp plays the video in the hero from that second.
I’m just a normal person with no video editing background who wanted to start making YouTube
videos and maybe add semi-fancy effects.
I don’t really plan on making major motion pictures or commercials, so I was looking
for a free, easy-to-learn video editing software.
Luckily, I stumbled on Shotcut, a free, open-source video editing program that has
the potential to replicate similar effects that an Adobe Premiere or DaVinci Resolve can,
but with a simpler, leaner interface. It just takes imagination, so let’s learn together.
Hey guys, welcome back. In this tutorial, I want to show you how to use one Shotcut technique
to accomplish multiple effects, like the parallax slash vertigo effect, also known as the
Dolly Zoom, as well as a cool way to animate your photos.
In this example, just to make it simple, I’m going to use two images, one background and
one foreground. As you can see, I’m using a static image of a forest as my background
track, but you can easily use a video to give it a little bit more realism. I’m just
going to stretch this out to about 10 seconds so that it gives us a longer video
playtime. Now, the second image is a transparent PNG that I’m going to put on the upper track,
like that. Then I’m just going to put it into place, stretch that to about 10 seconds. The
first thing I’m going to do is I’m going to try to put the couple in the right position.
I’m going to select the track where the couple is located, then I’m going to click
the filters tab and look for Rotate and Scale. What I’m going to do is I’m just going to move
them down a little bit using the Y offset field. Let’s move them down a little bit here until
we get them to maybe right there. Perfect. What we want to do now is add additional movement
or zooming in effect to this video or image that you’re working on. I’m going to hide
the top track just so I only see the effect happening on the lower track. Once again,
with the lower track selected, we’re going to use the filter called Rotate and Scale. In
this particular trick, what we want to do is we want to use the keyframes. I’ve already
selected what the sizing is going to be in the initial keyframe and now I’m choosing what
size I want to make it zoom into in my final keyframe. In playing this, you can see what
it’s doing. There really isn’t a specific rule on how far you want this thing to zoom
in. It just depends on how fast you want the video to move. In this instance, I’m
barely zooming in. Just add a little bit more dynamic movement to my zoom. Not only do I
want to zoom from the center, I also want it, as it’s zooming, to slightly move upwards
just to give it a little bit more realism. Once again, I’m going to be using the Y
offset and I’m going to be framing that from zero to about 67. Let’s move it a
little bit off-center, a little bit more, maybe right there, and then let’s see how
that thing looks like. That looks pretty cool. Looks pretty realistic. Now let’s
see what it looks like when we add the foreground image back in just to get the
full effect. Let’s check it out. Already that looks pretty cool with the
foreground image. It should not even have any movement whatsoever. It just looks
like they’re moving forward. Let’s play it again. Yeah, that looks cool. Okay, I
think that works. Now let’s add a dolly zoom effect. What makes this effect so cool
is that the foreground and the background move independently of each other. It’s
best that they are not moving at the same speed, even if they’re moving in the
same direction. Essentially, what I’m going to do is zoom in the background
at a specific speed and zoom out the foreground at a slower speed. Since the
couple, which is the foreground image, is already set at a specific size, I’m
just going to be using the keyframes to set the ending size to change the scale
from a bigger version to a slightly smaller version to make it look like it’s
walking away from us. That’s what I’m doing right now is I’m just setting the
sizing and maybe dropping them a little bit and just seeing what looks natural.
Again, your mileage may vary. You may try different sizes and different
positioning just to see what works better. But essentially, you’re seeing the kind
of effect that I’m trying to accomplish just by allowing the background to zoom
in and allowing the foreground to zoom out. Here I’m just kind of playing it
over and over, testing it just to see if it’s accomplishing the effect that
I wanted to accomplish, which it looks pretty good right now. I think we’re
pretty much there. Let me just look at it for a couple more iterations and then
we’re going to, I think we’re going to put this one to bed. I think I’m going
to change the scaling a little bit, just seeing what it looks like if I move
it a little faster. Again, that looks cool. I just wanted to remind you
that I’m using static images for this, but there’s no reason why you can’t use
a mask on videos to get the exact same effect. In fact, most of the time when
I employ this technique, I use it on videos rather than images. That’s
pretty much it. I hope you like this technique. Next, I want to show you
a variation of this technique to accomplish the parallax effect, which
is basically a way of making your images and videos more dynamic by
changing the speed of how fast the background moves with respect to the
foreground. Once again, I’m going to start with the same two images that I
had in the previous tutorial and I’m going to separate them into the
foreground track and the background track. Let’s start with the background
again. I’m going to stretch it out to about 10 seconds again, so we have
at least 10 seconds worth of video. Right about there. It should be good enough.
Then I’m going to drag the foreground image right in front of it. Again, it’s
the same couple. Once again, I’m going to drag it again to match the
background close to 10 seconds. That should be good. In this one, what
I’m going to do is I’m going to select the foreground image, which is the
couple. I’m then going to go into filters and then pick Rotate and Scale.
Then I’m going to choose the Y offset setting just to move them into
place. I’m going to move them down a little bit until I find what I
think looks most natural in this environment, which is probably right
around there. Then I’m going to select the background image and again, use the
Rotate and Scale. I’m actually going to increase the size of it because what
I’m going to do is I’m going to move this image from left to right. I want
to give myself a little bit more play so that when I do so, I’m not showing
little black areas on the left side or the right side. Now to move the
background image from left to right, I’m going to now use the X offset and I’m
just going to try to position the background to the very leftmost place
that I can put it. That’s where I’m going to set my initial keyframe and
then once I’ve selected that, I’m then going to go all the way to the
end and I’m going to change the keyframe and make it move all the
way to the right edge of the background.
Okay, right there. When you see the black area, I’ve kind of gone too far past
the edge. Let’s just play it and see what that effect looks like. So now
the background is moving from left to right.
That’s pretty cool.
So what I want to do now is I then want to move my foreground image
from right to left and so if you remember, I moved my background image
from left to right but I’m going to move my foreground image from right
to left but I’m not going to move them as far so their movement is going
to be slightly more subtle than the movement in the background and so
hopefully that differential in movement creates enough to create that illusion
of depth. So let’s play it. Let’s see how it works here.
Maybe make some slight adjustments but already it looks pretty cool.
Let’s move the couple a little bit more off-center so you can tell how far
they move based on that keyframe. So again, the foreground image doesn’t
even look like it’s moving at all but you do get that depth because of how
fast the background image is moving and that focus is pretty much what
the parallax effect is.
Yeah, I like it.
Yep, I think we got a winner. There you go.
Let’s help each other out. I appreciate your subscription. Until next time.