mirror of
https://github.com/ManimCommunity/manim.git
synced 2026-06-22 10:01:47 +00:00
* Added click dependency and command structure * Refactored code for separation of concerns * Shortened plugins command to plugin, added render options * first draft for render -h * First successful render using click * Cleaned main * Moved flush_cache to option, ran black * Removed argparse logic, scattered print statements * corrected tests, all passing * merge upstream * fixed test with click's clirunner * Fixed doctest configuration.rst * Temporarily add in main_utils * Removed main_utils.parse_args, used ManimConfig.digest_args * fixed progress bar * Fix jupyter * black * Fixed incorrectly merged merge conflict * updated README command.png image * updated configuration.rst expected output * Fixed test_plugins and config_file expected type * Refixed the jupyter fix * Apply 3/5 suggestions Remove stray print Improve readability of test code Added module docs for the subcommands * Updated `main` to `manim` for tests * Forced `file` positional argument to be Path type * Fixed main -> manim * Added libpango to linux dependency * Updated poetry.lock * Changed configuration.rst test * Fixed test_a_flag test minor space issue added media_width to configuration.rst * Fixed fps flag in Cairo rendering * Fixed more outdated rst in sphinx docs Removed default for fps option, always overwrote quality Fixed doctest control_data * Fixed more incorrect rst orderings * Update tests/test_commands.py Co-authored-by: Naveen M K <naveen@syrusdark.website> * Added suggestions * Removed unused imports * Reverted entry point back to main * Update manim/_config/default.cfg Co-authored-by: Benjamin Hackl <devel@benjamin-hackl.at> * Adjusted ipython_magic's call to the entry_point * Converted frame_rate to int if integer * run black * Fixed doctest * Fixed issue with command name from CliRunner * Fixed multiple video windows opening from upstream merge * to black or not to black * Added deprecation warning to render subcommand * warning instead of warn * Applied Naveen's suggestions * Made `manim render` show the help page * Update manim/cli/render/commands.py Co-authored-by: Naveen M K <naveen@syrusdark.website> * Update manim/cli/cfg/commands.py Co-authored-by: Naveen M K <naveen@syrusdark.website> * Update manim/cli/cfg/commands.py Co-authored-by: Naveen M K <naveen@syrusdark.website> * Update manim/cli/plugins/commands.py Co-authored-by: Naveen M K <naveen@syrusdark.website> * Addressed some style changes * add back in write_to_movie temporarily for OpenGL support * Removed sound flag, deprecated use_opengl_renderer, added renderer option * revert webgl_renderer_path removal * Fixed cfg export Fixed readme usage of CLI * Flake8/black * Fixed bug in setting renderer choice * Removed log message due to default option Removed default option of background color Fixed write_to_movie flag default * Fix log_to_file tests * Make '-c' option for config_file, not background_color * print colored version always * Remove -v = --version shorthand, conflicts with verbosity * Use subprocess.run instead of Click's CliRunner for stdout * Refactor cli/render to use Cloup instead of click-option-group 1) There's a new file for each option group 2) render is now a cloup.Command, not a Group Fixed issue when an animation is cached, manim can't merge the partial movie files. (#1192) * fixed issue * fixed tests * Update manim/renderer/cairo_renderer.py Co-authored-by: Darylgolden <darylgolden@gmail.com> * added tests * imrpoved test * fixed logic * added new test * check if the file has been outputed * added test when caching is enabled * fixed tests on windows * black * Update manim/renderer/cairo_renderer.py Co-authored-by: Naveen M K <naveen@syrusdark.website> * Update tests/assert_utils.py Co-authored-by: Naveen M K <naveen@syrusdark.website> Co-authored-by: KingWampy <9156604+WampyCakes@users.noreply.github.com> Co-authored-by: Darylgolden <darylgolden@gmail.com> Co-authored-by: Naveen M K <naveen@syrusdark.website> Added :ref_methods: to the manim directive (#1209) * fix manim_directive for methods * added ref_methods to Angle example * black * added new ref_methods references * sort out ref_functions vs ref_methods in examples.rst Co-authored-by: Jason Villanueva <a@jsonvillanueva.com> Co-authored-by: Benjamin Hackl <devel@benjamin-hackl.at> Fixed issue when an animation is cached, manim can't merge the partial movie files. (#1192) * fixed issue * fixed tests * Update manim/renderer/cairo_renderer.py Co-authored-by: Darylgolden <darylgolden@gmail.com> * added tests * imrpoved test * fixed logic * added new test * check if the file has been outputed * added test when caching is enabled * fixed tests on windows * black * Update manim/renderer/cairo_renderer.py Co-authored-by: Naveen M K <naveen@syrusdark.website> * Update tests/assert_utils.py Co-authored-by: Naveen M K <naveen@syrusdark.website> Co-authored-by: KingWampy <9156604+WampyCakes@users.noreply.github.com> Co-authored-by: Darylgolden <darylgolden@gmail.com> Co-authored-by: Naveen M K <naveen@syrusdark.website> Added :ref_methods: to the manim directive (#1209) * fix manim_directive for methods * added ref_methods to Angle example * black * added new ref_methods references * sort out ref_functions vs ref_methods in examples.rst Co-authored-by: Jason Villanueva <a@jsonvillanueva.com> Co-authored-by: Benjamin Hackl <devel@benjamin-hackl.at> Fixed unnecessary args dict * Fixed bug that changed caching hashing result * Revert doctest logic for fps filename output Co-authored-by: Naveen M K <naveen@syrusdark.website> Co-authored-by: Benjamin Hackl <devel@benjamin-hackl.at> Co-authored-by: Gianluca Gippetto <gianluca.gippetto@gmail.com>
132 lines
3.8 KiB
Python
132 lines
3.8 KiB
Python
#!/usr/bin/env python
|
|
|
|
from manim import *
|
|
|
|
# To watch one of these scenes, run the following:
|
|
# python --quality m manim -p example_scenes.py SquareToCircle
|
|
#
|
|
# Use the flag --quality l for a faster rendering at a lower quality.
|
|
# Use -s to skip to the end and just save the final frame
|
|
# Use the -p to have preview of the animation (or image, if -s was
|
|
# used) pop up once done.
|
|
# Use -n <number> to skip ahead to the nth animation of a scene.
|
|
# Use -r <number> to specify a resolution (for example, -r 1920,1080
|
|
# for a 1920x1080 video)
|
|
|
|
|
|
class OpeningManim(Scene):
|
|
def construct(self):
|
|
title = Tex(r"This is some \LaTeX")
|
|
basel = MathTex(r"\sum_{n=1}^\infty \frac{1}{n^2} = \frac{\pi^2}{6}")
|
|
VGroup(title, basel).arrange(DOWN)
|
|
self.play(
|
|
Write(title),
|
|
FadeInFrom(basel, UP),
|
|
)
|
|
self.wait()
|
|
|
|
transform_title = Tex("That was a transform")
|
|
transform_title.to_corner(UP + LEFT)
|
|
self.play(
|
|
Transform(title, transform_title),
|
|
LaggedStart(*[FadeOutAndShift(obj, direction=DOWN) for obj in basel]),
|
|
)
|
|
self.wait()
|
|
|
|
grid = NumberPlane()
|
|
grid_title = Tex("This is a grid")
|
|
grid_title.scale(1.5)
|
|
grid_title.move_to(transform_title)
|
|
|
|
self.add(grid, grid_title) # Make sure title is on top of grid
|
|
self.play(
|
|
FadeOut(title),
|
|
FadeInFrom(grid_title, direction=DOWN),
|
|
Create(grid, run_time=3, lag_ratio=0.1),
|
|
)
|
|
self.wait()
|
|
|
|
grid_transform_title = Tex(
|
|
r"That was a non-linear function \\ applied to the grid"
|
|
)
|
|
grid_transform_title.move_to(grid_title, UL)
|
|
grid.prepare_for_nonlinear_transform()
|
|
self.play(
|
|
grid.animate.apply_function(
|
|
lambda p: p
|
|
+ np.array(
|
|
[
|
|
np.sin(p[1]),
|
|
np.sin(p[0]),
|
|
0,
|
|
]
|
|
)
|
|
),
|
|
run_time=3,
|
|
)
|
|
self.wait()
|
|
self.play(Transform(grid_title, grid_transform_title))
|
|
self.wait()
|
|
|
|
|
|
class SquareToCircle(Scene):
|
|
def construct(self):
|
|
circle = Circle()
|
|
square = Square()
|
|
square.flip(RIGHT)
|
|
square.rotate(-3 * TAU / 8)
|
|
circle.set_fill(PINK, opacity=0.5)
|
|
|
|
self.play(Create(square))
|
|
self.play(Transform(square, circle))
|
|
self.play(FadeOut(square))
|
|
|
|
|
|
class WarpSquare(Scene):
|
|
def construct(self):
|
|
square = Square()
|
|
self.play(
|
|
ApplyPointwiseFunction(
|
|
lambda point: complex_to_R3(np.exp(R3_to_complex(point))), square
|
|
)
|
|
)
|
|
self.wait()
|
|
|
|
|
|
class WriteStuff(Scene):
|
|
def construct(self):
|
|
example_text = Tex("This is a some text", tex_to_color_map={"text": YELLOW})
|
|
example_tex = MathTex(
|
|
"\\sum_{k=1}^\\infty {1 \\over k^2} = {\\pi^2 \\over 6}",
|
|
)
|
|
group = VGroup(example_text, example_tex)
|
|
group.arrange(DOWN)
|
|
group.width = config["frame_width"] - 2 * LARGE_BUFF
|
|
|
|
self.play(Write(example_text))
|
|
self.play(Write(example_tex))
|
|
self.wait()
|
|
|
|
|
|
class UpdatersExample(Scene):
|
|
def construct(self):
|
|
decimal = DecimalNumber(
|
|
0,
|
|
show_ellipsis=True,
|
|
num_decimal_places=3,
|
|
include_sign=True,
|
|
)
|
|
square = Square().to_edge(UP)
|
|
|
|
decimal.add_updater(lambda d: d.next_to(square, RIGHT))
|
|
decimal.add_updater(lambda d: d.set_value(square.get_center()[1]))
|
|
self.add(square, decimal)
|
|
self.play(
|
|
square.animate.to_edge(DOWN),
|
|
rate_func=there_and_back,
|
|
run_time=5,
|
|
)
|
|
self.wait()
|
|
|
|
|
|
# See many more examples at https://docs.manim.community/en/stable/examples.html
|