-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Boolean operations: "Requested capacity is too large" on MacOs Sonoma. #3456
Comments
Can't reproduce on MacOS 12.3 / Monterey. Might be a Sonoma-specific issue.
Are you sure? What sort of machine are you working on? 😱 |
Damn. I cannot downgrade to Monterey (and to be honest I don't even want to do that! :D).
Oooops! That is the HD! :D |
I have the same issue on a new git-story install. My machine is an M2 Mac pro with 32GB RAM and Sonoma. Using a conda install of git-story.
Hope this helps and someone can fix it. Seems to be in skia. |
Given that I kinda will need this feature soon, I try to take a look at the source code, but the available time is unfortunately always limited. :( TLDR: I think it is just a matter of time and this issue will be fixed somewhere, so perhaps the best would be just to wait. :) Some findings and personal considerations: Mobjects -> skia-pathops -> Skia (and back) The cause of the issue that we are encountering is somewhere in this chain, but a thorough investigation would be needed to figure out where exactly. As a personal consideration, I noticed that Skia is used only for boolean ops (I may be wrong though) which is a very tiny part of Manim and yet there are two dependencies: skia-pathops and Skia. I am not a fan of having too many dependencies, plus Google is notorious to suddenly drop support for its own tools. Skia do much more that just boolean operations and using it only for boolean_ops sounds a bit to overkill, perhaps there is a smaller size solution that could fit better there. Finally, Skia is a 2D whereas in Manim pretty much everything is 3D. In the light of that, perhaps a good long-term idea would be to avoid having such a chain dependency and to cook a "in-house" solution instead, or to use a smaller dependencies where we could somehow have more control like for example this - I don't think we can have any influence on Skia itself. I understand that it could take long time for "in-house" solution and I am aware that the "blanket is always short", but IMO this could be a good MsC thesis work for some student. ;-) |
I did a quick search since binary operations on polygons (that's more or less what we do, modulo the fact that our edges are usually Bezier curves) is very common in CAD. There are quite some libraries and algorithms out there, this one seems to stand out: Pyclipr is a Python library offering the functionality of the Clipper2 polygon clipping and offsetting library And here is a 3D-library |
It was me who added the dependency. I've implemented it as a proof of concept where we could do Boolean Operations on Mobjects and it ended up in the library as it is. Writing it "in-house" would be hard and would not be as performant as it is now (because you know, python). I recommend you create a new issue so we won't lose it. |
@naveen521kk Oki. I will open a dedicated issue and I close this one. |
after reinstall package |
Description of bug
../../../../../../src/cpp/skia-builder/skia/src/base/SkContainers.cpp:106: fatal error: "Requested capacity is too large." zsh: trace trap manim discord.py -pql --disable_caching -v WARNING
How to reproduce the issue
System specifications
System Details
python/py/python3 --version
): python 3.11.6The text was updated successfully, but these errors were encountered: