Skip to content
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

repeated failures in manim parsing #7

Open
kyleboddy opened this issue Mar 5, 2025 · 2 comments
Open

repeated failures in manim parsing #7

kyleboddy opened this issue Mar 5, 2025 · 2 comments

Comments

@kyleboddy
Copy link

Describe the bug
Consistent failures to render scenes, leading to the script to eventually give up with a lot of partial scenes rendered.

To Reproduce
Command run:

python3 generate_video.py --model "openai/o3-mini" --helper_model "openai/o3-mini" --output_dir "output/epipolargeo-shot1" --topic "epipolar_geometry" --context "Visually explaining epipolar geometry in terms of motion capture with multiple cameras."

Expected behavior
A pipeline that creates a combined video in one shot, or more likely, a self-healing smooth retry-based logic to get to the end state.

Screenshots
Can do you one better with logs:

(tea) root@b1029d8b2eb8:~/automanim# python3 generate_video.py       --model "openai/o3-mini"       --helper_model "openai/o3-mini"       --output_dir "output/epipolargeo-shot1"       --topic "epipolar_geometry"       --context "Visually explaining epipolar geometry in terms of motion capture with multiple cameras."
Planner model: openai/o3-mini, Helper model: openai/o3-mini, Scene model: openai/o3-mini
Loaded existing session ID: 44bf762e-3ef6-4f38-ace7-431dde525050
Processing topic: epipolar_geometry
Loaded existing session ID: 44bf762e-3ef6-4f38-ace7-431dde525050
Loaded existing scene outline for topic: epipolar_geometry
Number of scenes: 5
Found existing implementation plan for scene 1
Found existing implementation plan for scene 2
Found existing implementation plan for scene 3
Found existing implementation plan for scene 4
Found existing implementation plan for scene 5
Starting video rendering for topic: epipolar_geometry
Rendering 5 scenes that need processing...
Accumulated Cost: $0.0242374000
Code saved to output/epipolargeo-shot1/epipolar_geometry/scene1/code/epipolar_geometry_scene1_v0.py
Successfully rendered output/epipolargeo-shot1/epipolar_geometry/scene1/code/epipolar_geometry_scene1_v0.py
Accumulated Cost: $0.0556182000
Code saved to output/epipolargeo-shot1/epipolar_geometry/scene2/code/epipolar_geometry_scene2_v0.py
Error: ╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /opt/miniconda/envs/tea/lib/python3.12/site-packages/manim/cli/render/commands.py:120 in render  │
│                                                                                                  │
│   117 │   │   │   try:                                                                           │
│   118 │   │   │   │   with tempconfig({}):                                                       │
│   119 │   │   │   │   │   scene = SceneClass()                                                   │
│ ❱ 120 │   │   │   │   │   scene.render()                                                         │
│   121 │   │   │   except Exception:                                                              │
│   122 │   │   │   │   error_console.print_exception()                                            │
│   123 │   │   │   │   sys.exit(1)                                                                │
│                                                                                                  │
│ /opt/miniconda/envs/tea/lib/python3.12/site-packages/manim/scene/scene.py:229 in render          │
│                                                                                                  │
│    226 │   │   """                                                                               │
│    227 │   │   self.setup()                                                                      │
│    228 │   │   try:                                                                              │
│ ❱  229 │   │   │   self.construct()                                                              │
│    230 │   │   except EndSceneEarlyException:                                                    │
│    231 │   │   │   pass                                                                          │
│    232 │   │   except RerunSceneException as e:                                                  │
│                                                                                                  │
│ /root/automanim/output/epipolargeo-shot1/epipolar_geometry/scene2/code/epipolar_geometry_scene2_ │
│ v0.py:126 in construct                                                                           │
│                                                                                                  │
│   123 │   │   │   "placed deliberately within the safe margins of our scene."                    │
│   124 │   │   )) as tracker:                                                                     │
│   125 │   │   │   # Create left and right camera icons with labels.                              │
│ ❱ 126 │   │   │   left_camera = helper.create_camera("Camera A", LEFT)                           │
│   127 │   │   │   right_camera = helper.create_camera("Camera B", RIGHT)                         │
│   128 │   │   │   # Animate the creation of left camera icon and label.                          │
│   129 │   │   │   self.play(Create(left_camera[0]), Write(left_camera[1]), run_time=1.0)         │
│                                                                                                  │
│ /root/automanim/output/epipolargeo-shot1/epipolar_geometry/scene2/code/epipolar_geometry_scene2_ │
│ v0.py:46 in create_camera                                                                        │
│                                                                                                  │
│    43 │   │   # Create and position label; ensure buff=0.3 for spacing from icon.                │
│    44 │   │   # For left camera, label is placed to the RIGHT; for right camera, label to the    │
│    45 │   │   label = Tex(label_text, font_size=24, color=TEAL_C)                                │
│ ❱  46 │   │   if edge == LEFT:                                                                   │
│    47 │   │   │   label.next_to(camera_icon, RIGHT, buff=0.3)                                    │
│    48 │   │   else:                                                                              │
│    49 │   │   │   label.next_to(camera_icon, LEFT, buff=0.3)                                     │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Retrying 1 of 5...
Accumulated Cost: $0.0791054000
Code saved to output/epipolargeo-shot1/epipolar_geometry/scene2/code/epipolar_geometry_scene2_v1.py
Successfully rendered output/epipolargeo-shot1/epipolar_geometry/scene2/code/epipolar_geometry_scene2_v1.py
Accumulated Cost: $0.1100198000
Code saved to output/epipolargeo-shot1/epipolar_geometry/scene3/code/epipolar_geometry_scene3_v0.py
Successfully rendered output/epipolargeo-shot1/epipolar_geometry/scene3/code/epipolar_geometry_scene3_v0.py
Accumulated Cost: $0.1477256000
Code saved to output/epipolargeo-shot1/epipolar_geometry/scene4/code/epipolar_geometry_scene4_v0.py
Error: /root/automanim/output/epipolargeo-shot1/epipolar_geometry/scene4/code/epipolar_geometry_scene4_v0.py:146: DeprecationWarning: This method is not guaranteed to stay around. Please prefer getting the attribute normally.
  anchor_left = panel_left.get_edge_right() - RIGHT * 0.3
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /opt/miniconda/envs/tea/lib/python3.12/site-packages/manim/cli/render/commands.py:120 in render  │
│                                                                                                  │
│   117 │   │   │   try:                                                                           │
│   118 │   │   │   │   with tempconfig({}):                                                       │
│   119 │   │   │   │   │   scene = SceneClass()                                                   │
│ ❱ 120 │   │   │   │   │   scene.render()                                                         │
│   121 │   │   │   except Exception:                                                              │
│   122 │   │   │   │   error_console.print_exception()                                            │
│   123 │   │   │   │   sys.exit(1)                                                                │
│                                                                                                  │
│ /opt/miniconda/envs/tea/lib/python3.12/site-packages/manim/scene/scene.py:229 in render          │
│                                                                                                  │
│    226 │   │   """                                                                               │
│    227 │   │   self.setup()                                                                      │
│    228 │   │   try:                                                                              │
│ ❱  229 │   │   │   self.construct()                                                              │
│    230 │   │   except EndSceneEarlyException:                                                    │
│    231 │   │   │   pass                                                                          │
│    232 │   │   except RerunSceneException as e:                                                  │
│                                                                                                  │
│ /root/automanim/output/epipolargeo-shot1/epipolar_geometry/scene4/code/epipolar_geometry_scene4_ │
│ v0.py:146 in construct                                                                           │
│                                                                                                  │
│   143 │   │   │                                                                                  │
│   144 │   │   │   # Define fixed anchor points for the epipolar lines in each panel.             │
│   145 │   │   │   # Anchors are chosen from panel edges with a 0.3 unit offset to ensure spaci   │
│ ❱ 146 │   │   │   anchor_left = panel_left.get_edge_right() - RIGHT * 0.3                        │
│   147 │   │   │   anchor_center = panel_center.get_edge_bottom() + UP * 0.3                      │
│   148 │   │   │   anchor_right = panel_right.get_edge_left() + RIGHT * 0.3                       │
│   149                                                                                            │
│                                                                                                  │
│ /opt/miniconda/envs/tea/lib/python3.12/site-packages/manim/mobject/mobject.py:644 in getter      │
│                                                                                                  │
│    641 │   │   │   │   │   stacklevel=2,                                                         │
│    642 │   │   │   │   )                                                                         │
│    643 │   │   │   │                                                                             │
│ ❱  644 │   │   │   │   return getattr(self, to_get)                                              │
│    645 │   │   │                                                                                 │
│    646 │   │   │   # Return a bound method                                                       │
│    647 │   │   │   return types.MethodType(getter, self)                                         │
│                                                                                                  │
│ /opt/miniconda/envs/tea/lib/python3.12/site-packages/manim/mobject/mobject.py:669 in __getattr__ │
│                                                                                                  │
│    666 │   │   │   return types.MethodType(setter, self)                                         │
│    667 │   │                                                                                     │
│    668 │   │   # Unhandled attribute, therefore error                                            │
│ ❱  669 │   │   raise AttributeError(f"{type(self).__name__} object has no attribute '{attr}'")   │
│    670 │                                                                                         │
│    671 │   @property                                                                             │
│    672 │   def width(self) -> float:                                                             │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
AttributeError: Rectangle object has no attribute 'edge_right'

Retrying 1 of 5...
Accumulated Cost: $0.1729211000
Code saved to output/epipolargeo-shot1/epipolar_geometry/scene4/code/epipolar_geometry_scene4_v1.py
Successfully rendered output/epipolargeo-shot1/epipolar_geometry/scene4/code/epipolar_geometry_scene4_v1.py
Accumulated Cost: $0.2038432000
Code saved to output/epipolargeo-shot1/epipolar_geometry/scene5/code/epipolar_geometry_scene5_v0.py
Error: ╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /opt/miniconda/envs/tea/lib/python3.12/site-packages/manim/cli/render/commands.py:120 in render  │
│                                                                                                  │
│   117 │   │   │   try:                                                                           │
│   118 │   │   │   │   with tempconfig({}):                                                       │
│   119 │   │   │   │   │   scene = SceneClass()                                                   │
│ ❱ 120 │   │   │   │   │   scene.render()                                                         │
│   121 │   │   │   except Exception:                                                              │
│   122 │   │   │   │   error_console.print_exception()                                            │
│   123 │   │   │   │   sys.exit(1)                                                                │
│                                                                                                  │
│ /opt/miniconda/envs/tea/lib/python3.12/site-packages/manim/scene/scene.py:229 in render          │
│                                                                                                  │
│    226 │   │   """                                                                               │
│    227 │   │   self.setup()                                                                      │
│    228 │   │   try:                                                                              │
│ ❱  229 │   │   │   self.construct()                                                              │
│    230 │   │   except EndSceneEarlyException:                                                    │
│    231 │   │   │   pass                                                                          │
│    232 │   │   except RerunSceneException as e:                                                  │
│                                                                                                  │
│ /root/automanim/output/epipolargeo-shot1/epipolar_geometry/scene5/code/epipolar_geometry_scene5_ │
│ v0.py:122 in construct                                                                           │
│                                                                                                  │
│   119 │   │   │                                                                                  │
│   120 │   │   │   # Create a central 3D grid model using a WireframeCube for a 3D effect.        │
│   121 │   │   │   # We ensure that the cube stays centered at ORIGIN and within safe area.       │
│ ❱ 122 │   │   │   grid = WireframeCube(side_length=3, stroke_color=LIGHT_GRAY)                   │
│   123 │   │   │   grid.move_to(ORIGIN)                                                           │
│   124 │   │   │   # Validate: ensure grid boundaries do not cross safe margins (-7,7 in x; -4,   │
│   125 │   │   │   self.play(Create(grid), run_time=2)                                            │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
NameError: name 'WireframeCube' is not defined

Retrying 1 of 5...
Accumulated Cost: $0.2290013000
Code saved to output/epipolargeo-shot1/epipolar_geometry/scene5/code/epipolar_geometry_scene5_v1.py
Successfully rendered output/epipolargeo-shot1/epipolar_geometry/scene5/code/epipolar_geometry_scene5_v1.py
Video rendering completed for topic 'epipolar_geometry'.
Warning: Missing video for scene 1
Not all videos/subtitles are found, aborting video combination.

Desktop (please complete the following information):
Running in an interactive docker container - Ubuntu Server 22.04:

Image

@kyleboddy
Copy link
Author

Eventually got stuck in this loop:

Retrying 1 of 10...
Accumulated Cost: $0.3181035000
Code saved to output/epipolar-mocap/epipolarmocap1/scene1/code/epipolarmocap1_scene1_v2.py
Error: 'VideoRenderer' object has no attribute 'scene_model'
Retrying 1 of 10...
Accumulated Cost: $0.3363965000
Code saved to output/epipolar-mocap/epipolarmocap1/scene2/code/epipolarmocap1_scene2_v2.py
Error: 'VideoRenderer' object has no attribute 'scene_model'
Retrying 1 of 10...
Accumulated Cost: $0.3594778000
Code saved to output/epipolar-mocap/epipolarmocap1/scene4/code/epipolarmocap1_scene4_v2.py
Error: 'VideoRenderer' object has no attribute 'scene_model'
Retrying 1 of 10...
Accumulated Cost: $0.3789302000
Code saved to output/epipolar-mocap/epipolarmocap1/scene3/code/epipolarmocap1_scene3_v2.py
Error: 'VideoRenderer' object has no attribute 'scene_model'
Retrying 1 of 10...
Accumulated Cost: $0.3985762000
Code saved to output/epipolar-mocap/epipolarmocap1/scene5/code/epipolarmocap1_scene5_v2.py
Error: 'VideoRenderer' object has no attribute 'scene_model'
Retrying 1 of 10...
Accumulated Cost: $0.4214199000
Code saved to output/epipolar-mocap/epipolarmocap1/scene1/code/epipolarmocap1_scene1_v3.py
Error: 'VideoRenderer' object has no attribute 'scene_model'
Retrying 1 of 10...
Accumulated Cost: $0.4387977000
Code saved to output/epipolar-mocap/epipolarmocap1/scene2/code/epipolarmocap1_scene2_v3.py
Error: 'VideoRenderer' object has no attribute 'scene_model'
Retrying 1 of 10...
Accumulated Cost: $0.4577199000
Code saved to output/epipolar-mocap/epipolarmocap1/scene4/code/epipolarmocap1_scene4_v3.py
Error: 'VideoRenderer' object has no attribute 'scene_model'
Retrying 1 of 10...
Accumulated Cost: $0.4817087000
Code saved to output/epipolar-mocap/epipolarmocap1/scene5/code/epipolarmocap1_scene5_v3.py
Error: 'VideoRenderer' object has no attribute 'scene_model'
Retrying 1 of 10...
Accumulated Cost: $0.5053224000
Code saved to output/epipolar-mocap/epipolarmocap1/scene3/code/epipolarmocap1_scene3_v3.py
Error: 'VideoRenderer' object has no attribute 'scene_model'
Retrying 1 of 10...
Accumulated Cost: $0.5267185000
Code saved to output/epipolar-mocap/epipolarmocap1/scene1/code/epipolarmocap1_scene1_v4.py
Error: 'VideoRenderer' object has no attribute 'scene_model'
Retrying 1 of 10...
Accumulated Cost: $0.5461951000
Code saved to output/epipolar-mocap/epipolarmocap1/scene2/code/epipolarmocap1_scene2_v4.py
Error: 'VideoRenderer' object has no attribute 'scene_model'

@vinesmsuic
Copy link
Member

it seems you triggered --use_visual_fix_code flag?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants