You want a short pet clip where a black cloth drops over a dog and comes off a cat, with no frame in between that shows half of each. In a reveal-cut morph the cloth does that job, so this article is mostly about the cloth: I built the swap in CapCut twice, once as a single generated clip and once as two clips joined while the table is covered, and measured how long the cloth hid the animal, what the join did to the picture and the sound, and whether the shadow still fell the same way once the cloth came off.
Test conditions: I ran these examples in CapCut on September 28, 2026. I used the model options, resolutions, editor controls, and credit prices displayed for my account. Availability, controls, output settings, and costs can vary by account, region, and version, so check the options in your workspace before generating or exporting.
The finished two-clip version: the cover comes from one generated clip and the reveal from another, joined while the cloth is down. It runs 9.27 seconds. The GIF plays at 8 frames a second and has no sound.
What a Straight Morph Leaves on Screen
Every clip here starts from the same still. For this test, I generated it in CapCut’s AI image workflow with the option labelled Seedream 4.5, using the 16:9 and 2K options displayed for my account. The exported still was 2560×1440.
A small tan terrier dog sitting still on a round wooden table in the middle of an empty sunny town square, facing the camera, shot from a slightly high angle. Old stone buildings behind, softly out of focus. Afternoon sunlight from the left, so the dog casts a short shadow across the table to the right. Nothing else is on the table.
To see what the cloth is for, I first asked for the change with nothing covering it. In the AI video generator (Video mode, Seedance 2.0 Mini, 16:9, 5s, 720p), I attached the still with the + button and sent one sentence:
The dog slowly turns into a small grey tabby cat sitting in the same spot on the table. The framing stays the same.
The clip that came back shows the change while it happens. From about 1.1 to 2.0 seconds the dog's head sits on a gray, striped body, and at 2.17 seconds a cat's face still has the dog's ears. The animal also stood up partway through, and small sparkles drifted around it from about one second in, although the prompt asked for neither.
The straight morph. For about a second, the frames in the middle show an animal that is part dog and part cat.
Those in-between frames are what the cloth is there to hide. If the swap happens while the table is covered, the viewer sees the dog before and the cat after, and nothing in between.
The Same Swap in One Prompt, With the Cloth
The simplest way to add the cloth is to put the cover and the reveal in the same generated clip. Same still, same settings, this prompt:
Two hands in black sleeves come in from the top of the frame and drape a large black cloth over the dog, covering it completely. After a moment the hands whip the cloth away upward, and a small grey tabby cat is now sitting in the same spot on the table instead of the dog. The framing stays the same.
I sent it twice, and both clips made the swap under the cloth. Stepping through each reveal one frame at a time, I found no frame with any part of the dog in it. The first thing to show under the rising cloth was a kitten's paws, and a few frames later the whole kitten, already a cat. In the first run the paws showed at frame 67 (2.79 s) and the cloth was out of the frame at frame 74 (3.08 s), 7 frames later. The second run took 6 frames, from frame 95 (3.96 s) to frame 101 (4.21 s). In both, the cloth hangs behind the kitten for a few of those frames before it leaves.
One prompt, first run: cover, wait and reveal in a single 5-second clip.
Frames 64 to 72 of the first run. The kitten appears whole, with no frame where it is partly a dog.
How Long the Cloth Stayed Down
For this experiment, I used eight fully covered frames as a working threshold. I did not test whether a shorter cover would work reliably. I checked the cover two ways. A measure tracked how much of the area where the animal sits was black cloth in each frame (the curves below). Then I stepped through the frames at the start and end of each cover, brightened so a paw in the shadow would show, and counted the frames in which no part of any animal was visible. That count is the one that matters for the swap: 49 and 70 frames in the two one-prompt runs, 64 frames at the end of the cover clip used in the next section, and 22 frames at the start of the reveal clip made from it.
Curves: how much of the animal's area was black cloth, frame by frame. Bars: the frames in which no part of the animal showed. The arrow at the bottom right is 8 frames long.
The two measures disagree at the edges. A cloth that fills most of the area can still show a paw along the table, so the curves pass the 70% line a few frames before the animal is out of sight. If you check your own cover, check it on the frames, not on how dark the frame looks. I didn't test short covers, so I can't say what happens at 8 frames. In the three versions that covered and revealed, the animal was fully hidden for 2.0 to 3.5 seconds, and the swap happened inside that time in all three.
Two Clips, and One Reveal Request Hit a Generation Limit
The other way is to generate the cover and the reveal separately and cut from one to the other while the table is covered. That lets you redo the reveal without touching the cover. The first clip used the same still and settings as before, with a prompt that ends on the cover:
Two hands in black sleeves come in from the top of the frame holding a large black cloth and drape it over the dog, so the dog is completely covered down to the table. The hands let go and move out of the frame at the top. For the rest of the clip the covered dog sits still under the cloth and nothing else happens. The framing stays the same.
The dog was fully hidden from frame 57 (2.38 s) to the end, and in the last second the picture barely changed. For the second clip I used one of those covered frames as the start image (first the last frame, later frame 116) and sent the reveal:
Two hands in black sleeves come in from the top of the frame, grab the black cloth and whip it away upward and out of the frame, revealing a small grey tabby cat sitting in the same spot on the table, facing the camera. The cat stays sitting. The framing stays the same.
In this test, four reveal requests using covered reference frames returned a message saying that the generation limit (RPM) had been exceeded and that credits were returned. The same model also completed other requests during that period, including two clips started from the uncovered still. Because I did not run a controlled test of the cause, this result does not show that the covered frame itself caused the refusals. It only records the sequence observed in this account.
Switching the model to Seedance 1.0 mini, with the same start frame and the same prompt, worked on the first try. The file came back at 1248×704 instead of 1280×720, and without an audio track. The chat's reply named the model as “Seedance 2.0 Mini (optimized version of Seedance 1.0 Mini)”, while the settings line under my message said Seedance 1.0 mini and the cost line said 5 credits (Video mode, 5s, 720p, 16:9, one reference image, on September 28, 2026; other settings are charged differently). Go by the settings line.
Left: one of the four refusals. Right: the same frame and prompt on Seedance 1.0 mini. The reply names a different model from the one in the settings line.
The reveal it made is slower than the one-prompt reveals. The cloth splits down the middle and the cat's face shows through the gap at about one second. By 1.5 seconds the whole cat sits in front of the cloth, which the hands hold up behind it like a backdrop until about 2.4 seconds, and the cloth leaves the frame at 2.62 seconds. From the first glimpse of the cat to a clear view took about 40 frames, against 6 and 7 in the one-prompt runs, although both prompts said to whip the cloth away. At 4.38 seconds a passerby starts to walk into the right edge of the frame, which the prompt didn't mention either.
The reveal clip, made by Seedance 1.0 mini from a covered frame of the cover clip. The cloth parts like a curtain, and by 4.58 seconds a passerby is in the frame.
Joining the Clips While the Table Is Covered
In my web-editor test, I placed the two clips end to end while both showed the covered table. The second upload initially appeared on a separate track in this session, so I moved it into position beside the first clip. If your version places uploads differently or uses different control names, use its available track-placement tools to align the clips before exporting.
Because both clips show the covered table at the join, the cloth is the main element that needs to match. In this export, the mean difference between neighbouring frames was about 0.1 to 0.2 in the second before the cut, then rose to 6.59 at the cut. The reveal clip appeared slightly darker and sharper than the cover clip even though the cloth folds were similar.
The reveal clip in this test was 1248×704, which left narrow black columns in the 1920×1080 export. Increasing its scale to 101% removed them in my version, but also increased the measured jump at the cut to 9.89. Check the transform controls and preview your own export, because scale behaviour and available values can vary by version.
I then applied a short crossfade-style transition at the cut. In this test, the transition reduced the largest frame-to-frame change around the join to 1.64. Use the transition controls available in your version and judge the exported result rather than relying on this exact duration or value.
The change from one frame to the next around the cut, for three versions of the same join.
Checking the Shadow After the Cloth Comes Off
When the cloth comes off, the new animal has to sit in the same light as the old one, and the shadow on the table is where a mismatch shows first. I measured the direction of the tabletop shadow in the start still and in late frames of each cat version, with the same rule for every frame. The dog's shadow pointed 12.7° below horizontal, toward the lower right. The cats' shadows pointed 14.0° and 12.2° in the two one-prompt runs and 13.4° in the reveal clip, and the straight morph ended at 10.1°. All five fall to the lower right within a few degrees of each other, so I didn't retouch any shadow. The reveal clip's shadow is larger and wider than the others, and its angle changed the most when I tried other ways of cutting out the region, but its direction stayed to the lower right.
The measured shadow region (tinted) and its direction (arrow). In the reveal clip the region also takes in part of the cat's dark tail next to the shadow.
Sound for a Clip That Came Back Silent
The cover clip came with its own audio, measuring between about −30 and −24 dBFS. The reveal clip had no audio track, so in the first join the sound stopped dead at the cut and stayed silent for 1.25 seconds, until the crowd sound effect I had added came in.
The fix was to stop relying on either clip for sound. In this edit, I muted the cover clip and placed one crowd recording beneath both clips, then added a short crowd reaction after the cat first appeared. The exact sound-effect names, search results, placement controls, and library availability can change between versions and accounts. Before publishing, confirm that the specific audio asset is available for your intended use and that its current licence covers your planned distribution.
In the export, the crowd bed measured about −35 dBFS on both sides of the cut, 0.9 dB apart, and the “OMG” sat about 13 dB above it.
Loudness of the first join, with each clip's own sound, and of the final version, with the cover clip muted and a crowd recording under both clips. Both include the “OMG” crowd voice.
The Finished Timeline
One more cut came from the reveal clip itself. The passerby starts to enter at 4.38 seconds into that clip, about 9.4 seconds into the edit. I set the playhead to 00:09:08 (9.27 seconds), split the reveal clip and the crowd bed there, and deleted both tails. The “OMG” crowd voice ends at the same point. I exported at 1080p, Recommended quality, 24fps, MP4, and the file came out at 1920×1080 with 223 frames.
The finished timeline, with the playhead where the crowd voice starts.
Where the four changes are in the editor.
When a Second Clip Is Worth the Extra Work
In these five generated outputs, the one-prompt version showed a lower displayed credit cost, revealed the cat faster, and required no timeline repair. Both approaches hid the swap in this test, and their shadow directions remained broadly consistent. The two-clip version required extra fixes in this edit, including a transition, scale adjustment, replacement sound bed, and trim before the passerby entered the frame.
Based on this test, I would start with one prompt and split the work into two clips only when I need to preserve a cover or retry the reveal separately. If you use two clips, check the join, framing, sound continuity, and final seconds of the reveal before export. The specific repairs in this edit are examples, not required steps for every project.
This article doesn't cover real magic technique or how to handle a real pet. I only used Seedance 2.0 Mini and Seedance 1.0 mini for the clips, I didn't try covers shorter than about two seconds, and I didn't retouch shadows, because these clips didn't need it.
Configuration and observed cost. On September 28, 2026, my account displayed 1 credit for the Seedream 4.5 image used as the start still and 25 credits for each Seedance 2.0 Mini video request at the displayed 5-second, 720p, 16:9 settings with one reference image. The option labelled Seedance 1.0 mini displayed 5 credits for the reveal request. The account record for this test showed one 1-credit image request, four 25-credit video requests, and one 5-credit video request, for 106 credits in total. The four refused requests displayed “Credits returned.” These are account-specific observations from that date, not a current pricing promise.
Files. The still is 2560×1440. The Seedance 2.0 Mini clips came back at 1280×720, 24 frames per second, 121 frames, with an audio track; the Seedance 1.0 mini clip at 1248×704, 24 frames per second, 121 frames, without one. Exports are 1920×1080 at 24 frames per second. The generated clips carry a small “Ai” mark in the top-left corner, and it is still there after export. Prompt text is quoted as sent. The GIFs are 560 pixels wide at 8 frames per second and carry no sound; the frames in the figures come from the downloaded and exported files, not from the editor's preview.
How the cover was measured. The curves count the share of pixels darker than 18% brightness in a fixed box around where the animal sits, the same box in every clip. On test frames with a planted black patch covering 60% of the box, it read 0.612. The hidden-frame counts were made by eye on brightened frames, because the curves pass 70% a few frames before the last paw disappears (in the first one-prompt run, the dog's paws still show at frame 17, where the curve already reads above 70%).
How the cut was measured. For each pair of neighboring frames in the export, the mean absolute difference over all pixels and color channels, on a 0 to 255 scale. On a test join of two unrelated clips it gave a single spike of 32.6 at the cut, and on a test crossfade a steady change of about 3 per frame, so a spike marks a hard cut and a spread marks a blend.
How the shadow direction was measured. On the tabletop to the right of the animal, the measure takes pixels darker than 62% of the lit wood, keeps the largest connected region and reads the direction of its long axis. Planted dark ellipses at 5°, 15° and 30° read back as 5.0°, 15.0° and 30.0°, and a planted gray (unsaturated) ellipse at 20° read 20.0°. A first version counted only brown shadow pixels, missed the gray middle of the cats' shadows and was dropped. The angles depend on how much of the table the measure takes in: using only the front part of the table flattened every angle, the reveal clip's the most, and the direction stayed to the lower right under each rule I tried.
How loudness was measured. The exported audio mixed down to mono, measured as RMS level in 50-millisecond windows, in dBFS. Digital silence is drawn at −80 in the chart.
Corrected along the way. While trimming the end, I clicked the cover clip instead of the reveal clip before Split. The split didn't apply, and the Delete that followed removed the whole reveal clip. Three undos brought it back. The timeline is drawn as a single canvas, so after that I confirmed each selection from a screenshot, where the selected clip has a cyan outline. I also first read the editor's clock as 24 frames per second; the ruler marks 15f halfway through each second, so it counts 30, and the times in this article use 30.