I loved paper cutting when I was little. Not the fancy window decorations, but just folding colored paper in half, making a few cuts, and unfolding it to reveal a row of little people holding hands. Later, I discovered this skill was surprisingly useful in animation, only now I've replaced scissors with Blender.
When generating animations programmatically, if you want an art style other than motion comics but don't want to deal with generated models with unclear licensing scopes, there are two old-school tools you can use: Blender and Effekseer. The former is used for drawing paper-cut theater, and the latter for particle effects. Both are official portable versions; when downloading, verify using the SHA-256 verification method published by the publisher, extract them to the project directory, and do not modify the system.
Why not use AI-generated images?
Let me answer this question that I'm sure I'll be asked. The generative model looks beautiful, that's undisputed. The problem lies in two things: licensing and interpretability. I've written a separate article about licensing; many models' weights aren't commercially viable, or their pre-defined dependency chains contain things that can't be used commercially, making investigation very tedious. Interpretability is another matter: the flame drawn by the generative model—you can't answer "why the flames are to the left," it just is to the left. The flames in the paper cutout are to the left because I wrote "to the left," changing a number makes them to the right. In a process that requires repeated modifications, being able to answer "why" is more important than just looking beautiful.
Blender running in background mode
blender -bEnter background mode, close the interface, execute a Python script, and then terminate. The script uses bpy to create the scene, arrange the paper puppets, and perform frame-by-frame rendering. You don't need to know how to use the Blender interface; I still don't quite understand it, and those shortcuts feel like another language to me. But bpy is Python, and I know Python.
The 2D portion relies on the Grease Pencil, which allows you to draw vector strokes in 3D space; the EEVEE plotter is sufficient. Flames, sparks, and cyclones can all be paper-cut shapes from the Grease Pencil. The flames change shape every three frames, creating a stop-motion animation effect. That "every three frames" is deliberate; changing it every frame would be too smooth, looking like computer-generated graphics; changing it every five frames would be too choppy. The third figure is based on my testing; there's no theoretical basis, it's simply because it most resembles the row of folded figures I folded as a child moving.
Determinism is key. All actions are calculated frame-by-frame, without random numbers or keyframe interpolation; the same segment is calculated frame-by-frame identically twice. The stage is saved as a sequence during the first rendering..blend Template, then load the same stage recipe directly.
Blender license
Blender's binary name is GPL-3.0-or-later, and these three letters make many people nervous, thinking that anything created using it must be open source. The official license page clearly states: it can be used for commercial production, and rendered works are not automatically bound by the GPL. Using the portable version as is, without modifying it, or distributing .brpy plugins to others, means you have no corresponding obligations. Only when you distribute a modified version of Blender or as a plugin will you be obligated to use the GPL source code. "Using a GPL tool" and "distributing GPL derivative works" are two different things, just as photos edited with GIMP do not become GPL-licensed photos.
Effekseer command line only
Effekseer is a particle effects tool maintained by a Japanese community; its core and the Godot plugin are both made in Taiwan. It has a beautiful editor that allows drag-and-drop creation of various explosions and magic circles, but I only use its command line to convert my custom effect definitions into its file format, without opening the editor. The reason is the same as before: effects need to be programmatically generated, reproducible, and interpretable.
The baking process is as follows: the file is converted, and then played back frame by frame in Godot's compatible mode renderer. Each segment is captured from the starting frame and composited onto the screen using additive methods. When the random number seed is fixed, the three baking processes are identical frame by frame.
Creating your own special effects can be quite simple: all particles are additively mixed ring-shaped light spots, without textures, generated according to a timer, only performing the stages specified in the timer. Starting a fire involves first a few sparks, then a small fire, then a large fire, with each stage lasting a few seconds and recorded in the timer. This way, every effect is interpretable; changing a single parameter tells you how the image will change. It won't have the "wow, so beautiful!" moment of generated models, nor the "what is this?" moment.
Effekseer licensing details
The core is MIT and the add-ons are MIT, but the toolkit also has a separate LICENSE_TOOL that lists third-party projects such as Ms-PL, BSD, zlib, and OFL. "Add-ons are MIT" does not mean the entire toolkit is only MIT. The example effects library cannot be treated as a CC0 package; each package must be checked to use external effects. My approach is to not use any examples, only my own, and still include third-party declarations in the evidence directory. The tool requires a .NET desktop environment.
Mini-drama: Will things made this way look good?
"The paper-cut style sounds so simple and unrefined, won't it look ugly?"
"It has a handmade feel. You could call it simple, or you could say it has warmth, depending on whether you want to like it or not."
"It sounds like you're making excuses for yourself."
"A little. But have you seen those stop-motion animated movies? Clay ones, paper puppet ones, those are also very simplistic, and then everyone cries their eyes out."
"So the focus is not on refinement."
"The key point is that the decisions for each frame are made by someone. The audience can tell."
Choosing between two art styles
The advantage of paper cutting is that it doesn't rely on generative models at all; every shape is interpretable. The cost is that someone has to design the recipe for each stage first, and it took much longer to build the first paper theater than expected. Baking effects are the opposite; a template can be applied to many paragraphs, but it can only represent what's written in the timeline. It won't invent anything on its own; if you don't write "Mars flew out," then there won't be any Mars.
Combining the two approaches, without touching any models with unclear licensing scopes, results in two additional visual styles. And every time I do the calculations, I'm reminded of those little figures holding hands from my childhood, only this time they move.
Why is Blender open source?
This is a story worth knowing. Blender was originally an internal tool of a Dutch animation studio. Its creator, Ton Roosendaal, later founded a company to commercialize it. In 2002, the company went bankrupt, and the software's source code fell into the hands of creditors. Ton negotiated a deal with the creditors: if they raised 100,000 euros, the source code would be released under the GPL. He launched a crowdfunding campaign, and the community raised the funds within seven weeks. From that day on, Blender belonged to everyone, and more than two decades later, it became one of the most important 3D software programs, used throughout Hollywood.
This history explains the character of the Blender community: they take "freedom" very seriously because it's something they've paid for. It also explains why the Blender Foundation has been making "open films" for so many years, releasing short films made with Blender along with their original files; you've probably seen the Big Buck Bunny.
Grease Pencil was originally just a tool for drawing annotations in 3D windows. Later, the community discovered that it could be used to create 2D animations. It has become more and more complete and is now a mature 2D system. Many animated short films are made entirely with it. An annotation tool evolving into an animation system is something that only happens in open source projects.
Three common misunderstandings
The first misconception is that "you absolutely need to learn the interface for Blender." While it's necessary for interactive projects, if you're using it as a plotter, Blender is everything; you can completely avoid the interface. I still don't quite understand its interface, but my scripts run perfectly fine.
The second misconception is that "particle effects must be calculated in real-time." Games require real-time processing, while videos do not. They are first baked into image sequences and then composited. Each frame can be calculated gradually, and the results can be reused, checked, and version controlled. Baking is one of the biggest dividing lines between video and game production.
The third misconception is that "the materials included with MIT tools are also MIT." As mentioned earlier, example effects, sample images, and fonts each have their own licenses. The tool's license covers the tool itself, not everything in the folder downloaded with it. This applies to every tool, but Effekseer's example library is particularly appealing.
A small exercise you can try over the weekend
Download the portable version of Blender. Write a ten-line Python script:import bpy Create a Grease Pencil object, draw a line on it (with coordinates of several points), set up a camera, calculate one frame, and output a PNG.blender -b -P 腳本.py Run it. You'll get a graph without opening any interfaces.
Then change the coordinates of that line to be calculated based on "frame count," for example, the x coordinate equals the frame count multiplied by a certain number, and use a loop to count ten frames. String together ten PNGs using FFmpeg, and you'll have a deterministic animation drawn with code that can be diffed. This afternoon will transform your understanding of "Blender as a renderer" from a concept into a practical skill. While you're at it, observe how long EEVEE takes to calculate one frame; you'll probably be surprised at how fast it is.
Postscript
I remember those little figures holding hands when I was a child, made of red colored paper. I was nervous cutting them out, afraid of severing their hands. The simple joy of seeing them all connected when unfolded brought a pure, unadulterated happiness. Now, when I'm creating a paper-cutting theater, seeing the flames change shape every three frames, that joy has returned. The technology has changed, but the shape of that joy remains the same. This is probably another reason why I chose this path instead of generative modeling, though this reason can't be written into any technical documents.
Official website: blender.org , effekseer.github.io