manim-skia
Manim plugin that adds Skia as a renderer
Example
Run it as a normal manim scene but importing manim_skia and using SkiaScene instead of Scene
from manim import *
from manim_skia import *
class Example(SkiaScene):
def construct(self):
self.play(Create(Circle()))
self.wait()
How does it work?
Oof, that's the worst question you could have ever done. Ok let's talk about this.
Manim has a ton of stuff using CairoRenderer. VMobjects, utils functions, auxiliary classes... It works for base Manim, but if someone wants to implement a different
renderer it becomes a mess and the best solution is to create a fork and do the necessary modifications.
Unlucky you, this repo does not have the best solution. What this thing does is let Manim think the renderer is CairoRenderer but then substitute it in the SkiaScene class.
Bad solution, probably will raise a ton of issues, it does not actually improve the speed and surely it will fail everywhere.
Next question.
Does it work?
Kinda. At this moment just as a substitute for Scene, not ThreeDScene or MovingCameraScene or fancy things like that. Also, some of the examples portrayed on the Manim Community web page do not work. Sooner or later I will fix it, just give me some time.
Why?
Three main reasons:
-
I felt like it. I just wanted to try and have some fun with
Manim's internals and what a better way than implementing a new rendering system? I did have fun and I did learn a lot in the process. What a time to be alive! -
Manimsometimes feels reaaaaaally slow. I wanted to improve that by replacing the renderer. I know there are other bottlenecks,pythonbeing one of them, but I firmly believe that implementing a different renderer like Skia or PyGFX would benefit the library a lot. This will work as a prove of concept. -
As lots of parts of this repo, this third reason is under construction with no ETA.
Should I use it?
Yeah, why not? I am a readme, not a cop, so telling you not to use it is just pointless.
In fact, you can just use it as a drop in replacement like this:
from manim import *
from manim_skia import SkiaScene as Scene
class Example(Scene):
def construct(self):
self.play(Create(Circle()))
self.wait()
However, keep in mind that this is just garbage and, as the garbage it is, the output is buggy, way faster than it should (its almost like the easing functions do not work as expected) and full of artifacts.
Will this work someday?
Maybe. Probably not. Just maybe.
Release files for manim-skia 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| manim_skia-0.0.1.tar.gz | 4.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| manim_skia-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.9 kB
Release files / manim_skia-0.0.1.tar.gz
| Download URL | manim_skia-0.0.1.tar.gz |
|---|---|
| Size | 4.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bbcf1eef8ed18aa5112090d4d40cb59cbe35f722296567a3d18ac2c05d384753
|
|
BLAKE2b-256 checksum How to use checksums |
34929eb15fb4ec091d0138c0e30e9c1af748ec4e2e1774cd4d72e34f4c694716
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.2 CPython/3.13.1 Windows/11
|
Release files / manim_skia-0.0.1-py3-none-any.whl
| Download URL | manim_skia-0.0.1-py3-none-any.whl |
|---|---|
| Size | 6.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
285ed55a17209a5f0e1caba2bea2b8f69d1fa3a8e1a0fe9596788ae4f85ff722
|
|
BLAKE2b-256 checksum How to use checksums |
aa39cc034bfb8ca9eea7de0aee352105a0451e85d66bff56c9afd1edda33c800
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.2 CPython/3.13.1 Windows/11
|