Depth-Style Football Highlight Edits: Separate the Subject for a 3D Look

A depth-style football edit built in CapCut from an AI-generated strike and checked frame by frame: which frame to freeze so the ball stays with the cutout, how far the player can grow before a second outline shows, and what the fog layer covers.

*No credit card required
Six close-ups: a sharp ball and a blurred ball inside the yellow cutout outline where they touch the boot, a blurred ball outside the outline once it has left the boot, a ball on the foot and a ball in the air inside the outline in a bicycle kick, and the frame 16 cutout on a green background with a thin strip of turf under the boot.
CapCut
CapCut
Oct 14, 2026

You have a strike on video and want a depth-style football highlight edit: the clip freezes on the kick, the player lifts off the pitch toward the camera, and play runs on. Before you touch a setting, count the players in the frozen part of the edit. There are two: the cutout you put on top, and the same player still printed in the background layer under him. The effect holds only while the first one covers the second. I built one edit in CapCut from an AI-generated strike and measured where the second player showed through: which frame to freeze so the ball stays with the cutout, how much to grow the cutout and around which point, whether a player-free background from the composer helps, and what the fog layer covers.

The finished edit: a two-second freeze on the frame where the boot meets the ball, with the cutout growing to 104% and fog behind it. The GIF plays at 8 frames a second and has no sound.

Freeze while the boot is on a sharp ball

The strike clip is 5 seconds long, 1280×720 at 24 frames per second. The ball sits on the grass until frame 16, at 0.667 seconds, where the boot reaches it. It is blurred in frames 17 and 18 and has left the picture by frame 22. The frame you freeze becomes both layers of the edit, so anything the cutout leaves out of that frame is missing for the whole freeze.

I cut the player out of three frames of this clip and two frames of a bicycle-kick clip made the same way, running Remove background on single images (the next section explains why), and checked how much of the ball came with him:

Frame
The ball
Ball in the cutout
Strike, frame 16
Touching the boot, sharp
All of it
Strike, frame 18
Touching the boot, blurred
All of it
Strike, frame 19
Just off the boot, blurred
None
Bicycle kick, frame 3
On the foot
All of it
Bicycle kick, frame 12
In the air, sharp
All of it, as a separate piece

In these five frames the cutout kept the ball when it touched the player or was sharp, and lost it in the one frame where it was both blurred and clear of the boot. In the strike, frame 16 was the only frame with the boot on a sharp ball, so that is the frame I froze.

Six close-ups: a sharp ball and a blurred ball inside the yellow cutout outline where they touch the boot, a blurred ball outside the outline once it has left the boot, a ball on the foot and a ball in the air inside the outline in a bicycle kick, and the frame 16 cutout on a green background with a thin strip of turf under the boot.

Remove background on five single frames, with the cutout outlined in yellow. The last tile is the frame 16 cutout exported over a green background.

How many frames you can choose from depends on speed. I measured how far the fastest-moving pixels traveled from one frame to the next at 1280 pixels wide. The strike peaked at 100.8 pixels per frame at 0.88 seconds, just after the contact. The bicycle kick peaked at 32.1, and its ball was still sharp in the air at frame 12, where the cutout kept it as a separate piece. On a slow move you get several usable frames; on this strike there was one.

Each cutout also kept a thin strip of turf under the boot, visible in the green tile. In this edit it sits on matching turf and doesn't show.

Build the depth layers from one still frame

The obvious route is to cut the player out of the moving clip: select it, then Smart tools > Remove background > Auto removal. On September 28, 2026 that didn't finish for me. I tried it four times, on the strike clip, the same clip uploaded again, a celebration clip and a clip in an older project, including once after restarting the browser. Each one sat at 0 or 1% (“Removing background... 1%”), the longest for about a quarter of an hour. The same switch on a still image finished in about a second. Freeze, on the timeline toolbar, didn't get further: its “Freezing...” box closed after about two minutes and added nothing to the timeline. So I built the freeze by hand from a still.

The main track now runs: the clip up to 0.667 seconds, the still to 2.667 seconds, then the rest of the clip. The cutout sits over the still for the same two seconds.

Three CapCut editor excerpts with blue outlines: a clip on the timeline labeled Removing background 1%, the Remove background panel with Auto removal switched on under Smart tools, and a Transform panel showing Scale at 50%.

Top: the strike clip on September 28, 2026, stuck at 1%. Bottom left: Auto removal switched on for the still overlay. Bottom right: a layer added with Add overlay starts at 50% scale.

Grow the player around the ball, not the middle of the frame

The lift comes from scale: over the freeze the cutout grows, and the background stays the same size or grows less. Keyframes do this. Select the layer, put the playhead at the start of the freeze and click the diamonds beside Scale and Position to add keyframes, then move the playhead to the end and type the new values; in this web-editor session, changing the values at the end of the freeze created the second pair of keyframes automatically. In my exports the change between two keyframes ran at an even rate.

My first version scaled both layers from the middle of the frame: the background from 100% down to 94% and the cutout from 100% up to 110%. By the end of the freeze, the shrinking background had left black bars at the edges, 57 pixels wide at the sides, and the cutout's ball had moved off the ball printed in the background, so two balls showed. The background player was uncovered over 18.3% of his area.

Scale grows a full-frame layer around the middle of the canvas. To grow it around another point, move the layer while it grows: Position = (1 − Scale) × the point, with the point in canvas pixels measured from the center, X to the right and Y up. I chose the spot where the boot meets the ball, 65 pixels left of center and 490 below it on the 1920×1080 canvas: (−65, −490). At 104%, (1 − 1.04) × (−65, −490) = (2.6, 19.6), and I entered (3, 20).

Growing around that point kept the cutout's ball on the background's ball. A version with the background going to 103% and the cutout to 110%, both around the ball, showed one ball and no bars. The finished edit holds the background at 100% and grows only the cutout, from 100% to 104%, with Position going from (0, 0) to (3, 20). To check that the export matched the panel, I rebuilt the frozen frames in code from these numbers and compared them with the exported frames inside the cutout. They differed by 2.5 to 2.7 levels on a 0 to 255 scale, against 4.9 to 29.2 for the other settings I tested, including the same move with the Y value flipped.

Four frames of the frozen strike with the uncovered background player in red: a red second ball and red arms with black bars at the edges; red arms and one ball; thinner red arms with fog behind the player; and a close-up of a forearm with a second forearm visible under it.

The last frozen frame, 2.63 seconds, in three versions, with the uncovered background player in red. 1: both layers scaled from the center, background to 94% and cutout to 110%. 2: both scaled around the ball, to 103% and 110%. 3: the finished edit, background held and cutout to 104%. 4: the finished edit's right forearm without the red.

Each extra percent uncovers more of the player underneath

Growing around the ball fixes the ball, not the rest of him. The farther a part of the player is from that point, the farther it moves as he grows, and the more of the background player it uncovers. On this frame his head and hands are the farthest parts. With the background held at 100% and the cutout growing around the same point, I rebuilt the last frozen frame for five end sizes and measured the widest strip of background player left showing:

Cutout at the end of the freeze
Widest strip of background player
Background player showing, share of his area
102%
16 px
4.9%
104% (the finished edit)
31 px
9.9%
106%
46 px
14.9%
108%
59 px
18.9%
110%
67 px
21.4%

Pixels are on the 1920×1080 canvas. At 104% the strip is a second forearm under each arm, easy to find against the night sky when the frame is paused (tile 4 above).

Chart: the widest strip of background player showing rises from 16 pixels at 2 percent larger to 31, 46, 59 and 67 pixels at 4, 6, 8 and 10 percent, and the share of the player's area rises from about 5 to about 21 percent; a dashed line marks 4 percent as the finished edit.

Measured on rebuilds of the last frozen frame, for cutouts ending 2% to 10% larger than the background.

The way to lose the background player is a background without him. I asked the composer for one, in Image mode with the frozen frame attached (Seedream 4.5, 16:9, 2K):

Remove the football player and the ball from this photo, leaving only the empty pitch, the grass, the metal railing and the dark night background behind them. Fill the space where he stood with matching grass, railing and darkness. Keep everything else, the lighting, the colors and the framing exactly the same.

The player and the ball were gone, and so was the match between the two pictures. Fitted to the frozen frame, the new one was 1.7% smaller and shifted 61 pixels to the left on the 1920×1080 canvas. Along the left edge the turf went from L* 27 to 40 (brightness on a 0 to 100 scale), and plants and flowers appeared along the bottom of the fence. A background that doesn't line up with the clip on either side of the freeze would move the fence and change the turf at both cuts, so I left it out and kept the cutout small instead.

The frozen frame of the player kicking the ball, the composer's version with the player and ball removed, and matching close-ups of the left edge: dark, blurred turf and fence in the original, and brighter turf with green plants and pale flowers and a fence post further left in the edited version.

The frozen frame and the composer's player-free version, with the same crop from each.

Fog between the player and the pitch

The fog in these edits is its own clip, layered between the background and the cutout. I made one in Video mode from text alone, with Seedance 1.0 mini at 16:9 and 5s:

Thick white fog and smoke drifting slowly from left to right across a completely black background. Nothing else in the frame, no people, no objects, no light sources. The camera stays still.

It came back at 1248×704 with no sound. With the still selected and the playhead at the start of the freeze, Add overlay put the fog on a new track directly above the main track and under the cutout, which is the order this needs. It also started at 50% scale, so I set it to 100% and trimmed it to the freeze. Then, in its Basic panel:

Three CapCut editor excerpts: the Blend mode list with Screen outlined, the Mask panel with Mirror, Feather and Invert outlined, and the timeline with a cutout clip on top, the fog clip in the middle and the main track below.

The fog layer's settings and the finished timeline.

Measured on the export, the inverted Mirror mask with Feather 100 worked as a ramp rather than a clear band. The fog came through at 0.77 of its strength along the top edge, 0.76 along the bottom and 0.17 across the middle, falling off evenly in between, and the ramp was the same at 0.83, 1.67 and 2.63 seconds. The strongest fog lands on the sky above him and the turf around his boots.

The finished edit at 1.67 seconds divided into nine horizontal bands, next to a bar chart of fog strength by band: 0.77 at the top, falling to 0.17 in the middle band and rising to 0.76 at the bottom.

How much of the fog clip reached the picture in each 120-pixel band of the finished edit.

Fog behind the player changes the step in brightness at his edge. I compared the export with the same frames rebuilt without fog. Along his dark kit, the step grew from 14.4 to 20.4 on the L* scale; along his skin and the ball, it shrank from 57.5 to 47.5. Behind a dark kit at night, the fog set him apart more; behind bright skin, less. If your player wears a light kit, compare the outline with the fog on and off before you keep it.

The fog didn't hide the second player. At 2.63 seconds the fog clip was thin or empty, under a quarter of full white, behind 73% of the pixels where the background player showed. Where there was fog over them, the mask let less of it through than across the background as a whole, 0.32 against 0.46, because the doubled forearms sit in the middle rows, where the ramp is lowest.

The frames on either side of the freeze

From one frame to the next, the kick itself changed the picture by 3.3 to 7.6 levels on average (0 to 255 scale). The two cuts around the freeze were the largest changes in the export: 25.0 where the freeze and the fog start, and 31.4 where the fog disappears and the player drops back from 104% to 100%. Inside the freeze, with only the fog drifting and the cutout growing, the change was 0.3 to 2.3.

Line chart of the average change from each frame to the next across the 7-second export: about 3 to 5 before the freeze, a spike of 25.0 at 0.67 seconds, about 1 to 2 during the shaded freeze, a spike of 31.4 at 2.67 seconds, then about 2 to 8 as the kick continues.

Average change from each frame to the next across the finished export.

The frames after the freeze held a second step. Matching each exported frame against the source clip, the freeze showed frame 16, and then the clip picked up on frame 15, then 16, then 18. The boot moves back for one frame, a twenty-fourth of a second, before the kick carries on. It is small next to the jump in brightness, but it is in the file.

A player in a dark blue kit strikes a white ball on a pitch at night; the picture freezes as his boot meets the ball, white fog rolls in behind him along the top and bottom of the frame while he grows slightly toward the camera, then the fog disappears and the kick carries on.

The finished edit in nine frames. The frame at 2.67 seconds is the source clip's frame 15, one frame before the contact.

One TikTok tutorial for this edit adds the Black Flash 2 effect. I didn't test it here; in the editor, a search for “black flash” under Effects > Video effects listed Black Flash and Black Flash 2.

Practice footage for a move you can't film

All the clips here started as stills in the AI image generator (Image mode, Seedream 4.5, 16:9, 2K, which came back at 2560×1440) and became clips in the AI video generator, with the still attached and Seedance 2.0 Mini at 16:9, 5s and 720p. For a move you can't film on demand, such as an overhead kick, this gives you footage to practice the edit on. The strike still and its clip:

A photograph of an amateur evening football match on a small local pitch under floodlights. A man in his late twenties wearing a completely blank, solid dark blue shirt and matching shorts with nothing printed on them runs up to a plain white football on the grass and swings his right leg back to strike it. Side view, his whole body in the frame from head to feet, the ball clearly visible in front of his left foot. Behind him, out of focus, a plain metal railing and a dark fence. No signs, boards or text anywhere.

He strikes the ball hard with his right foot, and the ball flies off to the left and out of the frame. His kicking leg swings through high, and he lands back on his right foot. The camera stays still.

The bicycle-kick still used the same scene with a white shirt, black shorts and the player almost horizontal above the grass, his foot about to meet the ball; its clip prompt asked him to finish the kick, send the ball out of the frame to the left and fall onto the grass.

Four frames: the start still of a player in dark blue about to strike a ball at night, the clip's frame with his boot on the ball, the start still of a player in white in mid-air for an overhead kick, and the clip's frame with the ball in the air above his raised foot.

The two start stills and the clip frames the cutout tests used.

My first still described a stadium match. It came back with a club crest and a sportswear logo on the shirt, a badge on the sleeve and advertising boards behind the players, so I moved the scene to an amateur pitch, asked for blank kit and added “No signs, boards or text anywhere”. A later still showed players who looked like young teenagers, and stating the age, “a man in his late twenties”, gave adult players on the next try. Check each still for both before you spend credits on a clip.

One multiplication before you set Scale

Before you add keyframes to your own clip, measure one distance on the frozen frame: from the point the player will grow around, where the boot meets the ball, to the part of him farthest from it, in pixels on the 1920×1080 canvas. Here that was the top of his head, 930 pixels away. Multiply it by how much larger the cutout will end than the background. At 104%, 0.04 × 930 = 37 pixels, and the widest strip measured 31. From 102% to 110%, the measured strip stayed under this product at each step: 16, 31, 46, 59 and 67 pixels against 19, 37, 56, 74 and 93.

So work it backward. Decide how wide a second outline you will accept, divide that by the distance, and the result is the most the cutout should grow. In the web-editor session used for this project, the Scale control accepted whole-percentage values, making 1% the smallest adjustment used in this test and putting the limit at about 9 pixels on this frame. Enter the Position from the same point, (1 − Scale) × its (X, Y), and export. My clips were 1280×720, so I exported at 1080p, Recommended quality, 24fps, MP4; in this session, the export panel displayed resolutions from 360p to 4K, frame-rate options from 25 to 60 fps, and MP4 and MOV formats.

This article doesn't cover music, beat cuts or speed ramps, cutting the player out of a moving clip, or color work between the layers: both layers come from the same frame, so they start out matched. I built the edit on one strike and tested the cutout on five frames from two clips; a different frame, kit or background can give different numbers, which is why the distance above is worth measuring on your own frame.

Configuration and cost. Stills: Image mode, Seedream 4.5, 16:9, 2K, where the composer's cost line read 1 credit for each; seven in all, counting the player-free background and three stills I threw away. Clips with a still attached: Video mode, Seedance 2.0 Mini, 16:9, 5s, 720p, where the cost line read 25 credits for each clip; three in all, counting a celebration clip I didn't use. The fog clip: Video mode, Seedance 1.0 mini, 16:9, 5s, from text alone, where the cost line read 5 credits. The account's credit details for September 28, 2026 list seven charges of 1 credit, three of 25 and one of 5, 87 credits in all, and the balance in the header dropped by the same amount. Nothing done in the editor (cutouts, keyframes, blend, mask, exports) appeared in the credit details. These figures apply to those settings on that date; other models, durations, resolutions and modes are charged differently.

Files. The stills are 2560×1440. The clips came back at 1280×720, 24 frames per second, 121 frames, and the fog clip at 1248×704 with no audio track. Each generated still and clip carries a small “Ai” mark in its top-left corner. The edits were exported at 1920×1080, 24 frames per second, 169 frames. Frame numbers count from 0; editor times are in its 30-frames-per-second clock. The GIF is 560 pixels wide at 8 frames per second and has no sound. Prompt text is quoted as sent.

How the cutouts were checked. Each still overlay with Remove background on was exported over a plain green background and keyed to a mask. The ball was found in the source frame as a bright, low-saturation round shape, and the share of its disc inside the mask was counted. Balls of known size planted in a frame without a ball were found at their planted position and radius.

How the edit was checked against the settings. The frozen frames were rebuilt in code from the still, the cutout's mask and the keyframe values, and compared with the export inside the cutout: the settings used matched within 2.5 to 2.7 levels on a 0 to 255 scale, and the alternatives (no movement, scale without the position change, the Y value flipped, twice the scale) differed by 4.9 to 29.2. The strips of background player were measured on these rebuilds as the uncovered part of the background player's outline, by the widest circle that fits inside them; planted strips 8, 16 and 31 pixels wide read 8, 16 and 32.

How the fog was measured. With Screen, each exported pixel equals 1 − (1 − the picture under it) × (1 − strength × fog), so the strength follows from the export, the fog clip and the frame rebuilt without fog. A planted ramp from 0.9 at the edges to 0.1 in the middle read back within 0.02 in each band, and a planted flat 0.5 read 0.50. The brightness step at his edge was measured in L* in 8-pixel bands on each side of the cutout's outline; a planted disc of known brightness read back its planted values.

How the cuts were measured. Mean absolute difference between consecutive exported frames, over all three color channels, at 640×360. Exported frames were matched to source frames by the smallest difference: the matches came in at 0.7 to 0.9 levels, and around the freeze the neighboring source frames differed by 3.5 or more.

Corrected along the way. One export was thrown out after a stray split cut the timeline partway through the freeze; I rebuilt the freeze and exported again. A first attempt to read each layer's scale and position straight from the exported frames was unreliable around his upper body, so the rebuild-and-compare check above replaced it. While only the playhead moved, the editor's panel kept showing earlier values, so each setting was checked in an export rather than read off the panel. A copy of the still dragged onto the overlay track by hand started one frame late, and Add overlay at the playhead replaced it.

Hot and trending