We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
Manim is getting stuck in a recursion loop, to do with retrieving color.
Should just render items.
This code is causing the issue for me, but only when rendered with OpenGL.
class BugTest(ThreeDScene): def construct(self): mve = MathTex(r"Text").add_background_rectangle() self.play(Write(mve))
If I remove add_background_rectangle OR change Write to Create the problem goes away, so it seems to be at the intersection of these.
add_background_rectangle
Write
Create
Logs look similar to this (collapsed):
| C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:397 in get_color | | | | 394 def get_color(self): | | 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | > 397 return self.get_fill_color() | | 398 | | 399 def get_colors(self): | | 400 if self.has_stroke(): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\geometry\shape_ | | matchers.py:133 in get_fill_color | | | | 130 return self | | 131 | | 132 def get_fill_color(self) -> ManimColor: | | > 133 return self.color | | 134 | | 135 | | 136 class Cross(VGroup): | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:395 in get_color | | | | 392 return self.get_stroke_opacities()[0] | | 393 | | 394 def get_color(self): | | > 395 if self.has_stroke(): | | 396 return self.get_stroke_color() | | 397 return self.get_fill_color() | | 398 | | | | C:\Users\Sam | | Levey\.conda\envs\for_manim\lib\site-packages\manim\mobject\opengl\opengl_v | | ectorized_mobject.py:409 in has_stroke | | | | 406 fill_color = property(get_fill_color, set_fill) | | 407 | | 408 def has_stroke(self): | | > 409 stroke_widths = self.get_stroke_widths() | | 410 stroke_opacities = self.get_stroke_opacities() | | 411 return ( | | 412 stroke_widths is not None | +-----------------------------------------------------------------------------+ RecursionError: maximum recursion depth exceeded
The text was updated successfully, but these errors were encountered:
I think I found a fix for this, I will try to submit a PR by the end of the week.
Sorry, something went wrong.
Successfully merging a pull request may close this issue.
Description of bug / unexpected behavior
Manim is getting stuck in a recursion loop, to do with retrieving color.
Expected behavior
Should just render items.
How to reproduce the issue
This code is causing the issue for me, but only when rendered with OpenGL.
If I remove
add_background_rectangle
OR changeWrite
toCreate
the problem goes away, so it seems to be at the intersection of these.Logs
Logs look similar to this (collapsed):
Terminal output
The text was updated successfully, but these errors were encountered: