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 (manimx --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 manimx/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