ManimCommunity / ManimCommunity/manim

Investigate replacement of skia-pathops

Open
#3,529 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

good first issue new feature
Dominant language
Python
Stars
40.9k
Forks
3.1k
Avg merge
3d 12h
Merged PRs (30d)
25

Description

Based on #3456 I am opening a new issue as suggested.

A small summary follows:

1. We have no control on Skia as it is a google tool and google is famous to drop its own products
2. Skia supports only 2D animation,
3. We use only a tiny part of Skia, namely we use it only for bool operation (which to me feels like to kill a fly with a cannon)

Perhaps, if we want support only 2D for boolean operations, we may think to rely on a simpler tool with less dependencies and for which we could have some control, like [svgpathtools](https://github.com/mathandy/svgpathtools) but I feel that it requires some "in-house" work that may take some time (I honestly see this as a good MsC thesis work for some student).

Alternatively this one seems to stand-out: [Pyclipr is a Python library offering the functionality of the Clipper2 polygon clipping and offsetting library](https://lukeparry.uk/tag/python/)

[Angus Johnson - Clipper2](https://github.com/AngusJohnson/Clipper2)
https://github.com/drlukeparry/pyclipr

And here for a 3D-library

https://lukeparry.uk/pycork-a-boolean-csg-library-for-python/
https://github.com/elalish/manifold

(the latter is also suggested in the description of the former and it has python bindings).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing issue #3456 and the current use of skia-pathops in Manim. Compare svgpathtools, Pyclipr/Clipper2, pycork, and manifold against the project's 2D boolean-operation needs, dependencies, and 3D considerations. Done means documenting a justified replacement direction and its implementation scope.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
computer-graphics
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.