Files
calesthioandHanzo Dev 7ffb943132 Initial release — OpenMontage: the first open-source agentic video production system
11 production pipelines, 47 tools, 124 agent skills.
Supports cloud APIs (fal.ai, OpenAI, ElevenLabs, Suno, HeyGen, Runway) and
free local providers (diffusers, Piper TTS, WAN 2.1, Hunyuan, CogVideo).

Co-authored-by: Hanzo Dev <[email protected]>
2026-03-29 08:25:17 -07:00

2.3 KiB

ManimGL Scenes

Scene Types

ManimGL provides several scene types:

The default for most development. Supports interactive mode with -se flag.

from manimlib import *

class MyScene(InteractiveScene):
    def construct(self):
        circle = Circle()
        self.play(ShowCreation(circle))
        self.wait()

Scene (Base Class)

Basic scene without interactive features:

class BasicScene(Scene):
    def construct(self):
        self.play(Write(Text("Hello")))

ThreeDScene

For 3D animations with proper camera setup:

from manimlib import *

class My3DScene(ThreeDScene):
    def construct(self):
        axes = ThreeDAxes()
        self.add(axes)
        self.camera.frame.reorient(-45*DEGREES, 75*DEGREES)

The construct Method

All scene logic goes in construct():

class MyScene(InteractiveScene):
    def construct(self):
        # 1. Create mobjects
        circle = Circle(color=BLUE)
        square = Square(color=RED)

        # 2. Position them
        circle.shift(LEFT * 2)
        square.shift(RIGHT * 2)

        # 3. Animate
        self.play(ShowCreation(circle), ShowCreation(square))

        # 4. Wait for viewer
        self.wait(2)

Adding vs Playing

# Static add (instant, no animation)
self.add(circle)

# Animated add
self.play(ShowCreation(circle))
self.play(FadeIn(square))

Scene Methods

Method Description
self.play(*anims) Play animations
self.wait(t) Wait t seconds
self.add(*mobs) Add mobjects instantly
self.remove(*mobs) Remove mobjects
self.clear() Clear all mobjects
self.embed() Drop into IPython shell

Interactive Mode

Run with -se flag to enter at a specific line:

manimgl scene.py MyScene -se 15

In the shell:

checkpoint_paste()           # Run clipboard code with animations
checkpoint_paste(skip=True)  # Run instantly
checkpoint_paste(record=True) # Record while running

Class Attributes

Define scene configuration as class attributes:

class MyScene(InteractiveScene):
    camera_class = ThreeDCamera  # Use 3D camera
    random_seed = 42             # For reproducibility

    def construct(self):
        ...