v0.10.0#

Date:

September 01, 2021

Contributors#

A total of 40 people contributed to this release. People with a ‘+’ by their names authored a patch for the first time.

  • Animfysyk +

  • Benjamin Hackl

  • Christian Clauss

  • Daniel Adelodun +

  • Darigov Research

  • Darylgolden

  • Eric Biedert +

  • Harivinay

  • Jan-Hendrik Müller

  • Jephian Lin +

  • Joy Bhalla +

  • Laith Bahodi

  • Lalourche +

  • Max Stoumen

  • Naveen M K

  • Oliver

  • Partha Das +

  • Raj Dandekar +

  • Rohan Sharma +

  • Ryan McCauley

  • Václav Hlaváč +

  • asjadaugust +

  • ccn

  • icedcoffeeee

  • sparshg

  • vinnniii15 +

  • vladislav doster +

  • xia0long +

The patches included in this release have been reviewed by the following contributors.

  • Aathish Sivasubrahmanian

  • Benjamin Hackl

  • Darylgolden

  • Devin Neal

  • Eric Biedert

  • GameDungeon

  • Harivinay

  • Hugues Devimeux

  • Jan-Hendrik Müller

  • Jason Villanueva

  • Jephian Lin

  • Joy Bhalla

  • KingWampy

  • Laith Bahodi

  • Naveen M K

  • Oliver

  • Raghav Goel

  • Raj Dandekar

  • Ryan McCauley

  • ccn

  • icedcoffeeee

  • ralphieraccoon

  • sparshg

Pull requests merged#

A total of 59 pull requests were merged for this release.

Breaking changes#

  • #1843: Dropped redundant OpenGL files and add metaclass support for Surface
    • OpenGL<x> classes from opengl_geometry.py, opengl_text_mobject.py, opengl_tex_mobject.py, opengl_svg_path.py, opengl_svg_mobject.py and most of opengl_three_dimensions.py have been removed.

    • ParametricSurface has been renamed to Surface

Deprecated classes and functions#

New features#

  • #1929: Implementing a zoom parameter for ThreeDScene.move_camera()

    Zooming into a ThreeDScene can now be done by calling, for example, self.move_camera(zoom=2) in the construct method.

  • #1980: Added a dissipating_time keyword argument to TracedPath to allow animating a dissipating path

  • #1899: Allow switching the renderer to OpenGL at runtime

    Previously, the metaclass approach only changed the inheritance chain to switch between OpenGL and cairo mobjects when the class objects are initialized, i.e., at import time. This PR also triggers the changes to the inheritance chain when the value of config.renderer is changed.

  • #1828: Added configuration option zero_pad for zero padding PNG file names

Enhancements#

  • #1882: Added OpenGL support for PMobject and its subclasses

  • #1881: Added methods Angle.get_lines() and Angle.get_value() to Angle

  • #1952: Added the option to save last frame for OpenGL

  • #1922: Fixed IPython interface to exit cleanly when OpenGL renderer raises an error

  • #1923: Fixed CLI help text for manim init subcommand so that it is not truncated

  • #1868: Added OpenGL support to IPython magic

    The OpenGL renderer can now be used in jupyter notebooks when using the %%manim magic command.

  • #1841: Reduced default resolution of Dot3D

  • #1866: Allow passing keyword argument corner_radius to SurroundingRectangle

  • #1847: Allow Cross to be created without requiring a mobject

Fixed bugs#

  • #1985: Use height to determine font_size instead of the _font_size attribute

  • #1758: Fixed scene selection being ignored when using the OpenGL renderer

  • #1871: Fixed broken VectorScene.vector_to_coords()

  • #1973: Fixed indexing of Table.get_entries() to respect row length

  • #1950: Fixed passing custom arrow shapes to CurvedArrow

  • #1967: Fixed Axes.coordinate_labels referring to the entire axis, not just its labels

  • #1951: Fixed Axes.get_line_graph() returning a graph rendered below the axes

  • #1943: Added buff keyword argument to BraceLabel

  • #1938: Fixed Rotate for angles that are multiples of \(2\pi\)

  • #1924: Made arrow tips rotate IN and OUT properly

  • #1931: Fixed row_heights in Mobject.arrange_in_grid()

  • #1893: Fixed CLI error when rendering a file containing a single scene without specifying the scene name

  • #1744: Fixed bug in NumberPlane with strictly positive or strictly negative values for x_range and y_range

  • #1887: Fixed custom_config not working in frames_comparison

  • #1879: Fixed how the installed version is determined by Poetry

Changes concerning the testing system#

  • #1894: Fixed an OpenGL test

Changes to our development infrastructure#

  • #1987: Added support for using OpenGL in subprocess in Windows pipeline

  • #1964: Added CITATION.cff and a method to automatically update this citation with new releases

  • #1856: Modified Dockerfile to support multi-platform builds via docker buildx

  • #1955: Partially support OpenGL rendering with Docker

  • #1896: Made RTD apt install FFMPEG instead of installing a Python binding

  • #1864: Shortened and simplified PR template

  • #1853: Updated Sphinx to 4.1.2

Code quality improvements and similar refactors#

  • #1960: Ignore fewer flake8 errors

  • #1947: Set flake8 not to ignore undefined names in Python code

  • #1948: flake8: Set max-line-length instead of ignoring long lines

  • #1956: Upgrade to modern Python syntax
  • #1898: Replaced self.data["attr"] and self.uniforms["attr"] with self.attr

    In particular, OpenGLVMobject.points can now be accessed directly.

  • #1934: Improved code quality by implementing suggestions from LGTM

  • #1861: Updated dearpygui version to 0.8.x

New releases#

  • #1989: Prepare new release v0.10.0