Changelog

Unreleased

Breaking Changes

  • Added InteractiveScene (#1794 )

Fixed bugs

  • Fixed ImageMobject by overriding set_color method (#1791 )

  • Fixed bug with trying to close window during embed (#1796 )

  • Fixed animating Mobject.restore bug (#1796 )

  • Fixed InteractiveScene.refresh_selection_highlight (#1802 )

  • Fixed VMobject.match_style (#1821 )

New Features

  • Added specific euler angle getters (#1794 )

  • Added start angle option to Circle (#1794 )

  • Added Mobject.is_touching (#1794 )

  • Added Mobject.get_highlight (#1794 )

  • Allowed for saving and loading mobjects from file (#1794 )

  • Added Mobject.get_all_corners (#1794 )

  • Added Scene.id_to_mobject and Scene.ids_to_group (#1794 )

  • Added Scene.save_mobject and Scene.load_mobject to allow for saving and loading mobjects from file at the Scene level (#1794 )

  • Added InteractiveScene (#1794 )

  • Added VHighlight (#1794 )

  • Allowed for sweeping selection (#1796 )

  • Allowed stretched-resizing (#1796 )

  • Added cursor location label (#1796 )

  • Added Mobject.deserialize (#1796 )

  • Added undo and redo stacks for scene (#1796 )

  • Added Mobject.looks_identical (#1802 )

  • Added equality for ShaderWrapper (#1802 )

  • Added Mobject.get_ancestors (#1802 )

  • Added smarter default radius to Polygon.round_corners (#1802 )

  • Added checkpoints to Scene (#1821 )

  • Added crosshair to InteractiveScene (#1821 )

  • Added SceneState (#1821 )

  • Added time_span option to Animation (#1821 )

  • Added Mobject.arrange_to_fit_dim (#1821 )

  • Added DecimalNumber.get_tex (#1821 )

Refactor

  • Updated parent updater status when adding updaters (#1794 )

  • Added case for zero vectors on angle_between_vectors (#1794 )

  • Refactored Mobject.clear_updaters (#1794 )

  • Changed the way changing-vs-static mobjects are tracked (more details see #1794 )

  • Refactored Mobject.is_point_touching (#1794 )

  • Refactored Mobject.make_movable and Mobject.set_animating_status to recurse over family (#1794 )

  • Refactored AnimationGroup (#1794 )

  • Refactored Scene.save_state and Scene.restore (#1794 )

  • Added MANIM_COLORS (#1794 )

  • Changed default transparent background codec to be prores (#1794 )

  • Simplified Mobject.copy (#1794 )

  • Refactored StringMobject and relevant classes (#1795 )

  • Updates to copying based on pickle serializing (#1796 <https://github.com/3b1b/manim/commit/fe3e10acd29a3dd6f8b485c0e36ead819f2d937b > )

  • Removed refresh_shader_wrapper_id from Mobject.become (#1796 )

  • Refactored Scene.embed to play nicely with gui interactions (#1796 )

  • Made BlankScene inherit from InteractiveScene (#1796 )

  • Updated behavior of -e flag to take in (optional) strings as inputs (#1796 )

  • Refactor -e flag (#1796 )

  • Reverted to original copying scheme (#1796 )

  • Renamed Mobject.is_movable to Mobject.interaction_allowed (#1796 )

  • Refreshed static mobjects on undo’s and redo’s (#1796 )

  • Factored out event handling (#1796 )

  • Removed Mobject.interaction_allowed , in favor of using _is_animating for multiple purposes (#1796 )

  • Moved Command + z and Command + shift + z behavior to Scene (#1797 )

  • Slight copy refactor (#1797 )

  • When scene saves state, have it only copy mobjects which have changed (#1802 )

  • Cleaned up Scene.remove function (#1802 )

  • Speed-ups to Mobject.copy (#1802 )

  • Slight speed-up to InteractiveScene.gather_selection (#1802 )

  • Only leave wait notes in presenter mode (#1802 )

  • Refactored remove_list_redundancies and list_update (#1821 )

  • Match updaters in Mobject.become (#1821 )

  • Don’t show animation progress bar by default (#1821 )

  • Handle quitting during scene more gracefully (#1821 )

  • Made selection_highlight refresh with an updater (#1821 )

  • Refactored anims_from_play_args to prepare_animations which deprecating old style self.play(mob.method, ...) (#1821 )

  • Made presenter mode hold before first play call (#1821 )

  • Update frame on all play calls when skipping animations, so as to provide a rapid preview during scene loading (#1821 )

  • Renamed frame_rate to fps (#1821 )

  • Let default text alignment be decided in default_config (#1821 )

Dependencies

  • Added dependency on pyperclip (#1794 )

v1.6.1

Fixed bugs

  • Fixed the bug of MTex with multi-line tex string (#1785 )

  • Fixed interpolate (#1788 )

  • Fixed ImageMobject (#1791 )

Refactor

  • Added \overset as a special string in Tex (#1783 )

  • Added outer_interpolate to perform interpolation using np.outer on arrays (#1788 )

v1.6.0

Breaking changes

  • Python 3.6 is no longer supported (#1736 )

Fixed bugs

  • Fixed the width of riemann rectangles (#1762 )

  • Bug fixed in cases where empty array is passed to shader (#1764 )

  • Fixed AddTextWordByWord (#1772 )

  • Fixed ControlsExample (#1781 )

New features

  • Added more functions to Text (details: #1751 )

  • Allowed interpolate to work on an array of alpha values (#1764 )

  • Allowed Numberline.number_to_point and CoordinateSystem.coords_to_point to work on an array of inputs (#1764 )

  • Added a basic Prismify to turn a flat VMobject into something with depth (#1764 )

  • Added GlowDots , analogous to GlowDot (#1764 )

  • Added TransformMatchingStrings which is compatible with Text and MTex (#1772 )

  • Added support for substring and case_sensitive parameters for LabelledString.get_parts_by_string (#1780 )

Refactor

  • Added type hints (#1736 )

  • Specifid UTF-8 encoding for tex files (#1748 )

  • Refactored Text with the latest manimpango (#1751 )

  • Reorganized getters for ParametricCurve (#1757 )

  • Refactored CameraFrame to use scipy.spatial.transform.Rotation (#1764 )

  • Refactored rotation methods to use scipy.spatial.transform.Rotation (#1764 )

  • Used stroke_color to init Arrow (#1764 )

  • Refactored Mobject.set_rgba_array_by_color (#1764 )

  • Made panning more sensitive to mouse movements (#1764 )

  • Added loading progress for large SVGs (#1766 )

  • Added getter/setter of field_of_view for CameraFrame (#1770 )

  • Renamed focal_distance to focal_dist_to_height and added getter/setter (#1770 )

  • Added getter and setter for VMobject.joint_type (#1770 )

  • Refactored VCube (#1770 )

  • Refactored Prism to receive width height depth instead of dimensions (#1770 )

  • Refactored Text , MarkupText and MTex based on LabelledString (#1772 )

  • Refactored LabelledString and relevant classes (#1779 )

v1.5.0

Fixed bugs

  • Bug fix for the case of calling Write on a null object (#1740 )

New features

  • Added TransformMatchingMTex (#1725 )

  • Added ImplicitFunction (#1727 )

  • Added Polyline (#1731 )

  • Allowed Mobject.set_points to take in an empty list, and added Mobject.add_point (#1739 )

  • Added Scene.refresh_locked_data (#1739 )

  • Added presenter mode to scenes with -p option (#1739 and #1742 )

  • Allowed for an embed by hitting ctrl+shift+e during interaction (#1739 and #1746 )

  • Added Mobject.set_min_width/height/depth (#1739 )

  • Allowed Mobject.match_coord/x/y/z to take in a point (#1739 )

  • Added text_config to DecimalNumber (#1744 )

Refactor

  • Refactored MTex (#1725 )

  • Refactored SVGMobject with svgelements (#1731 )

  • Made sure ParametricCurve has at least one point (#1739 )

  • Set default to no tips on Axes (#1739 )

  • Stopped displaying when writing tex string is happening (#1739 )

  • Reorganize inheriting order and refactor SVGMobject (#1745 )

Dependencies

  • Added dependency on isosurfaces (#1727 )

  • Removed dependency on argparse since it’s a built-in module (#1728 )

  • Removed dependency on pyreadline (#1728 )

  • Removed dependency on cssselect2 (#1731 )

  • Added dependency on svgelements (#1731 )

v1.4.1

Fixed bugs

  • Temporarily fixed boolean operations’ bug (#1724 )

  • Import Iterable from collections.abc instead of collections which is deprecated since python 3.9 (d2e0811 )

v1.4.0

Fixed bugs

  • Temporarily fixed Lightbulb (f1996f8 )

  • Fixed some bugs of SVGMobject (#1712 )

  • Fixed some bugs of SVG path string parser (#1717 )

  • Fixed some bugs of MTex (#1720 )

New features

  • Added option to add ticks on x-axis in BarChart (#1694 )

  • Added lable_buff config parameter for Brace (#1704 )

  • Added support for rotate skewX skewY transform in SVG (#1712 )

  • Added style support to SVGMobject (#1717 )

  • Added parser to <style >element of SVG (#1719 )

  • Added support for <line >element in SVGMobject (#1719 )

Refactor

  • Used FFMPEG_BIN instead of "ffmpeg" for sound incorporation (5aa8d15 )

  • Decorated CoordinateSystem.get_axes and .get_all_ranges as abstract method (#1709 )

  • Refactored SVG path string parser (#1712 )

  • Allowed Mobject.scale to receive iterable scale_factor (#1712 )

  • Refactored MTex (#1716 )

  • Improved config helper ( manimgl --config ) (#1721 )

  • Refactored MTex (#1723 )

Dependencies

v1.3.0

Fixed bugs

  • Fixed Mobject.stretch_to_fit_depth (#1653 )

  • Fixed the bug of rotating camera (#1655 )

  • Fixed SurfaceMesh to be evenly spaced (c73d507 )

  • Fixed angle_between_vectors add rotation_between_vectors (82bd02d )

  • Fixed VMobject.fade (a717314 )

  • Fixed angle_between_vectors (fbc329d )

  • Fixed bug in ShowSubmobjectsOneByOne (bcd0990 )

  • Fixed bug in TransformMatchingParts (7023548 )

New features

  • Added CLI flag --log-level to specify log level (e10f850 )

  • Added operations ( + and * ) for Mobject (#1667 )

  • Added 4 boolean operations for VMobject in manimlib/mobject/boolean_ops.py (#1675 )

    • Union(*vmobjects, **kwargs)

    • Difference(subject, clip, **kwargs)

    • Intersection(*vmobjects, **kwargs)

    • Exclusion(*vmobjects, **kwargs)

  • Added reflectiveness (81c3ae3 )

  • Enabled glow_factor on DotCloud (2c7689e )

  • Added option -e to insert embed line from the command line (d065e19 )

  • Improved point_from_proportion to account for arc length (0e78027 )

  • Added shortcut set_backstroke for setting black background stroke (781a993 )

  • Added Suface.always_sort_to_camera (0b898a5 )

  • Added getter methods for specific euler angles (e899604 )

  • Hade rotation_between_vectors handle identical/similar vectors (407c53f )

  • Added Mobject.insert_submobject method (49743da )

  • Created single progress display for full scene render (9dd1f47 )

  • Added Circle.get_radius (264f7b1 )

  • Added Dodecahedron (83841ae )

  • Added GlowDot (a1d5147 )

  • Added MTex , see #1678 for details (#1678 )

Refactor

  • Refactored support for command A in path of SVG (#1662 )

  • Refactored SingleStringTex.balance_braces (#1662 )

  • Slight tweaks to how saturation_factor works on newton-fractal (8b454fb )

  • Made it possible to set full screen preview as a default (317a5d6 )

  • Used quick_point_from_proportion for graph points (e764da3 )

  • Made sure Line.set_length returns self (d2182b9 )

  • Better align SurfaceMesh to the corresponding surface polygons (eea3c6b )

  • Match fix_in_frame status for FlashAround mobject (ee1594a )

  • Made sure Mobject.is_fixed_in_frame stays updated with uniforms (ba23fbe )

  • Made sure skip_animations and start_at_animation_number play well together (98b0d26 )

  • Updated progress display for full scene render (f8e6e7d )

  • VectorizedPoint should call __init__ for both super classes (8f1dfab )

  • Used array copy when checking need for refreshing triangulation (758f329 )

Dependencies

v1.2.0

Fixed bugs

  • Fixed put_start_and_end_on in 3D (#1592 )

  • Fixed DecimalNumber ’s scaling issue (#1601 )

  • Fixed bug with common range array used for all coordinate systems (56df154 )

  • Fixed CoordinateSystem init bug (8645894 )

  • Fixed bug for single-valued ValueTracker (0dc096b )

  • Fixed bug with SVG rectangles (54ad355 )

  • Fixed DotCloud.set_radii (d45ea28 )

  • Temporarily fixed bug for PMobject array resizing (b543cc0 )

  • Fixed match_style (5f878a2 )

  • Fixed negative path_arc case (719c81d )

  • Fixed bug with CoordinateSystem.get_lines_parallel_to_axis (c726eb7 )

  • Fixed ComplexPlane -i display bug (7732d2f )

New features

  • Supported the elliptical arc command A for SVGMobject (#1598 )

  • Added FlashyFadeIn (#1607 )

  • Save triangulation (#1607 )

  • Added new Code mobject (#1625 )

  • Add warnings and use rich to display log (#1637 )

  • Added VCube (bd356da )

  • Supported ValueTracker to track vectors (6d72893 )

  • Added set_max_width , set_max_height , set_max_depth to Mobject (3bb8f3f )

  • Added TracgTail (a35dd5a )

  • Added Scene.point_to_mobject (acba13f )

  • Added poly_fractal shader (f84b8a6 )

  • Added kwargs to TipableVMobject.set_length (b24ba19 )

  • Added Mobject.replicate (17c2772 )

  • Added mandelbrot_fractal shader (33fa76d )

  • Saved state before each embed (f22a341 )

  • Allowed releasing of Textures (e10a752 )

  • Consolidated and renamed newton_fractal shader (14fbed7 )

  • Hade ImageMoject remember the filepath to the Image (6cdbe0d )

Refactor

  • Changed back to simpler Mobject.scale implementation (#1601 )

  • Simplified Square (b667db2 )

  • Removed unused parameter triangulation_locked (40290ad )

  • Reimplemented Arrow (8647a64 )

  • Used make_approximately_smooth for set_points_smoothly by default (d8378d8 )

  • Refactored to call _handle_scale_side_effects after scaling takes place (7b4199c )

  • Refactored to only call throw_error_if_no_points once for get_start_and_end (7356a36 )

  • Made sure framerate is 30 for previewed scenes (0787c4f )

  • Pushed pixel_coords_to_space_coords to Window (c635f19 )

  • Refactored to pass tuples and not arrays to uniforms (d5a88d0 )

  • Refactored to copy uniform arrays in Mobject.copy (9483f26 )

  • Added bounding_box as exceptional key to point_cloud mobject (ed1fc4d )

  • Made sure stroke width is always a float (329d2c6 )

v1.1.0

Fixed bugs

  • Fixed the bug of resize_with_interpolation() in the case of length=0

  • Fixed the bug of __init__ in Elbow

  • If chosen monitor is not available, choose one that does exist

  • Make sure mobject data gets unlocked after animations

  • Fixed a bug for off-center vector fields

  • Had Mobject.match_points return self

  • Fixed chaining animation in example scenes

  • Fixed the default color of tip

  • Fixed a typo in ShowPassingFlashWithThinningStrokeWidth

  • Fixed the default size of Text

  • Fixed a missing import line in mobject.py

  • Fixed the bug in ControlsExample

  • Make sure frame is added to the scene when initialization

  • Fixed zooming directions

  • Rewrote earclip_triangulation to fix triangulation

  • Allowed sound_file_name to be taken in without extensions

New features

  • Added VShowPassingFlash

  • Added COLORMAP_3B1B

  • Added some methods to coordinate system to access all axes ranges

    • get_origin()

    • get_all_ranges()

  • Added set_color_by_rgba_func()

  • Updated VectorField and StreamLines

  • Allow 3b1b_colormap as an option for get_colormap_list()

  • Return stroke_width as 1d array

  • Added get_parts_by_text()

  • Use Text not TexText for Brace

  • Update to Cross to make it default to variable stroke width

  • Added FlashAround and FlashUnder

  • Allowed configuration in Brace.get_text

  • Added reorient() for quicker changes to frame angle

  • Added units to set_euler_angles()

  • Allowed any VMobject to be passed into TransformMatchingTex

  • Removed double brace convention in Tex and TexText

  • Added support for debugger launch

  • Added CLI flag --config_file to load configuration file manually

  • Added tip_style to tip_config

  • Added MarkupText

  • Take in u_range and v_range as arguments to ParametricSurface

  • Added TrueDot