# With Krita plus editing software like Shotcut, you can achieve everything needed for frame-by-frame animation

**URL:** <https://krita-artists.org/t/with-krita-plus-editing-software-like-shotcut-you-can-achieve-everything-needed-for-frame-by-frame-animation/192811>\
**Category:** Tutorials\
**Created:** [October 25, 2026, 4:05pm UTC](https://krita-artists.org/t/with-krita-plus-editing-software-like-shotcut-you-can-achieve-everything-needed-for-frame-by-frame-animation/192811 "2026-10-25T16:05:40Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Banana\_Bomb](https://krita-artists.org/user_avatar/krita-artists.org/banana_bomb/32/157292_2.png) [@Banana\_Bomb](https://krita-artists.org/u/Banana_Bomb)\
**Post date:** [October 25, 2026, 4:05pm UTC](https://krita-artists.org/t/with-krita-plus-editing-software-like-shotcut-you-can-achieve-everything-needed-for-frame-by-frame-animation/192811/1 "2026-10-25T16:05:40Z")

</div>

Recently I’ve been really into recreating CSP’s animation-related features in Krita. Originally I planned to make a Python plugin myself to implement these features, but I soon found that this was beyond what Krita’s Python API can do, and modifying the C++ code is beyond my ability.

But then I changed my approach and realized that we can actually combine Krita’s own capabilities to achieve all the features we need. Let’s take a look!

* * *

I’ll fill in these tips step by step; I’ll delete this line once the update is complete

Goals:

- Export layered output with alpha (2026-10-25)
- Movable onion skin
- Camera animation
- Hide color-separation lines while coloring
- Free variation across multiple frames
- Personal project workflow conventions (linked clone frames, loop start/end, project layer tree)

* * *

# 1. Exporting layers with an alpha channel

This is a pretty important feature, but unfortunately quite a few programs don’t support codecs with alpha like VP9 or AV1, and the common H.264 codec has no alpha channel.

The classic solution is to use a PNG image sequence. This works well when the video is short, but what if a single shot in our animation has hundreds of frames? Or when there are multiple shots?

Even if a single PNG is only 0.2 MB, suppose Shot 1 has three layers with these frame counts:

- Layer A: 150
- Layer B: 100
- Layer C: 50

That’s 300 frames, about 60 MB. Add the Krita source file, and one shot could be 80 MB. If we have a five-minute short with about three seconds per shot, that’s 100 shots, around 800 MB—and a single PNG may well be more than 0.2 MB…

My approach is:

**Export a separate mask-layer MP4.** Most editing software has basic compositing ability and can correctly combine an alpha channel encoded as luminance with the color channel.

Let’s walk through the steps:

* * *

![屏幕录制 2026-10-25 221238_1](https://krita-artists.org/uploads/default/original/3X/f/f/ff489d28086efff4e5822a78548c4c07efe85999.gif)

* * *

This is a demo animation I made; it has complex alpha-channel information.

Before we start, we need the Composition feature. Open it from Settings → Dockers:

 ![image](https://krita-artists.org/uploads/default/original/3X/4/1/4100ff5c848d5bfa3682f5fc889bbf2e1acf50d8.png)

* * *

Step 1: Put the layers that should be exported as one layer into a layer group. I recommend naming it with capital letters (a Japanese animation industry convention).

 ![image](https://krita-artists.org/uploads/default/original/3X/a/3/a3302236a9f2abcc690e7ba80242f700caf04a8b.png)

Step 2: Create new layers filled with black, place one at the top of each layer group, and turn on Inherit Alpha. Then fill the background with white (make sure it’s pure black and pure white).

* * *

 ![image](https://krita-artists.org/uploads/default/original/3X/0/f/0fdcf59fca2247dbcdb3d48ce20ff71b02d5b59d.png)

Our animation now looks like this:

 ![image](https://krita-artists.org/uploads/default/original/3X/a/5/a59288ca23b9e6372fadcec6588f945d37e5fe7a.png)

At this point, white naturally means transparent, black means opaque, and gray means semi-transparent.

* * *

Step 3: Create a filter layer and place it at the very top of the project, with the following settings (filter: Color Adjustment, mode: Alpha, and drag the left end of the curve to the top and flatten it).

 ![image](https://krita-artists.org/uploads/default/original/3X/5/8/587f43692623a107b6d47558063fffeb7a7c0a24.png)

 ![image](https://krita-artists.org/uploads/default/original/3X/8/3/83ed0d297226e4f49b32331472ceab69ed5d5117.png)

Your canvas should now become pure black.

* * *

Step 4: Now we use Composition.

Let’s start with Layer A:

Set the layer visibility toggles as shown below (turn off the filter layer, turn off the B layer folder, and turn on the pure black layer and pure white background).

 ![image](https://krita-artists.org/uploads/default/original/3X/4/8/48c2bb7f61534c76b164e126cfde359b47f43f07.png)

The canvas should look similar to this:

 ![image](https://krita-artists.org/uploads/default/original/3X/d/4/d435bc144ab18bf7037598cdae1bf31b324135b6.png)

In Composition, add a configuration named A-Mask, as shown below:

 ![image](https://krita-artists.org/uploads/default/original/3X/3/d/3ddb066f876a5b302b1e662a616c0542187df14b.png)

Next, set the layer visibility toggles again as shown below (turn off the pure black and pure white layers, turn on the filter layer, and keep Layer B off).

 ![image](https://krita-artists.org/uploads/default/original/3X/d/9/d976fa92640cb29b2c9b933b8e6388267563dfbb.png)

The canvas should look similar to this:

 ![image](https://krita-artists.org/uploads/default/original/3X/1/e/1ea817e0a661de0b828ded4096cf23e82b434bd1.png)

A Krita refresh bug causes issues in irrelevant areas of the canvas, but this doesn’t affect our actual image at all, don’t worry.

In Composition, add a configuration named A-Video, as shown below:

 ![image](https://krita-artists.org/uploads/default/original/3X/3/9/391fd5e5abefe134e505073be0c24da265f5029f.png)

* * *

Step 5: Repeat the previous steps for Layer B. Then click Render Animation and set it as shown below (Video only, H.264). Click OK and then immediately click Cancel (because Krita only saves the render settings after you click OK).

 ![image](https://krita-artists.org/uploads/default/original/3X/f/5/f5f09a908b0a321dadd1f6c1d005ff672c465a78.png)

Then go to Composition and click Export Animations, as shown below.

 ![image](https://krita-artists.org/uploads/default/original/3X/2/f/2fff02898a42bc97d4062a846d7c706633dacd44.png)

It will generate four videos like this:

 ![image](https://krita-artists.org/uploads/default/original/3X/1/b/1bd604d69e8d28aea1e44512ccfaa3aefb995035.png)

We need to organize the directory manually:

 ![image](https://krita-artists.org/uploads/default/original/3X/3/2/32b821b699ad7af05f95d7b1da3988f0e82d5e57.png)

* * *

Step 6: We just need to combine the two channels in editing software.

Using Shotcut as an example:

* * *

Shotcut:

Import the four videos into the playlist, and put the two videos with the Video suffix onto the timeline, as shown below:

 ![image](https://krita-artists.org/uploads/default/original/3X/f/7/f7402b4effcebb44dad4b20309a6b74d3291b029.png)

Next, add the Mask: From File filter to the two Video-suffixed videos, with settings as shown below (set the Mask file to Custom and point it at the file with the Mask suffix; check Reverse; check Brightness; uncheck Threshold).

 ![image](https://krita-artists.org/uploads/default/original/3X/8/8/885ca1f2776ff693395cce4d2ee691def7ca7d71.png)

The result is almost perfect:

 ![image](https://krita-artists.org/uploads/default/original/3X/5/1/5143f7ddb050ac32ad772383ab03918e3e2c92f9.png)

We can do any kind of complex compositing, for example, add text in the middle and drop in a complex background (the final composite is an ugly diagram, my own rough attempt, obviously):

 ![image](https://krita-artists.org/uploads/default/original/3X/4/2/42ffd603117ef7abf451e8dfbd58c044ad1f02c0.jpeg)

* * *

This way, with just a few highly compressed MP4 videos, we can pass along layered animation almost losslessly. Compared with PNG sequences, the advantages in disk usage and collaboration/transfer costs are huge.

---

<div class="post-metadata">

**Author:** ![AhabGreybeard](https://krita-artists.org/user_avatar/krita-artists.org/ahabgreybeard/32/2969_2.png) [@AhabGreybeard](https://krita-artists.org/u/AhabGreybeard)\
**Post date:** [October 25, 2026, 4:23pm UTC](https://krita-artists.org/t/with-krita-plus-editing-software-like-shotcut-you-can-achieve-everything-needed-for-frame-by-frame-animation/192811/2 "2026-10-25T16:23:51Z")

</div>

Using Alpha Inheritance to derive an alpha channel image/animation is a clever technique and you’ve explained it well in your topic.

At the moment, .png export for making the intermediate .png frame images (and ordinary static image export) has the option to include or not include the alpha channel. As is usual.

I wonder if it would be a good idea to make a Feature Request topic to give another option for .png export called ‘Export only the alpha channel’ as a greyscale image. Just a thought.

---

<div class="post-metadata">

**Author:** ![Banana\_Bomb](https://krita-artists.org/user_avatar/krita-artists.org/banana_bomb/32/157292_2.png) [@Banana\_Bomb](https://krita-artists.org/u/Banana_Bomb)\
**Post date:** [November 8, 2026, 10:58am UTC](https://krita-artists.org/t/with-krita-plus-editing-software-like-shotcut-you-can-achieve-everything-needed-for-frame-by-frame-animation/192811/3 "2026-11-08T10:58:04Z")

</div>

When exporting .png, if you choose not to include the alpha channel, Krita’s behavior is actually to pick a color as the background color and then composite, rather than truly exporting pure color channel information, which causes fringing in the result. Also, I don’t think we should be messing with .png for this, because many other image formats can also export alpha channels. Most importantly, this way we would have to repeatedly modify the export settings and could no longer use the Composition panel.

Actually, I think a better design is to directly add more configurable options to the Composition animation export function, such as the export directory/file naming format, or even go a step further and directly export such separate-channel videos.

---

<div class="post-metadata">

**Author:** ![AhabGreybeard](https://krita-artists.org/user_avatar/krita-artists.org/ahabgreybeard/32/2969_2.png) [@AhabGreybeard](https://krita-artists.org/u/AhabGreybeard)\
**Post date:** [November 8, 2026, 11:17am UTC](https://krita-artists.org/t/with-krita-plus-editing-software-like-shotcut-you-can-achieve-everything-needed-for-frame-by-frame-animation/192811/4 "2026-11-08T11:17:49Z")

</div>

> [@Banana\_Bomb](#):
>
> Actually, I think a better design is to …

It sounds like it’s time for a Feature Request topic 🙂
