v0.1.0#
- Date
October 21, 2020
This is the first release of manimce after forking from 3b1b/manim. As such, developers have focused on cleaning up and refactoring the codebase while still maintaining backwards compatibility wherever possible.
New Features#
Command line#
Output of ‘manim –help’ has been improved
Implement logging with the
rich
library and alogger
object instead of plain ol’ printsAdded a flag
--dry_run
, which doesn’t write any mediaAllow for running manim with
python3 -m manim
Refactored Tex Template management. You can now use custom templates with command line args using
--tex_template
!Re-add
--save_frames
flag, which will save each frame as a pngRe-introduce manim feature that allows you to type manim code in
stdin
if you pass a minus sign(-)
as filenameAdded the
--custom_folders
flag which yields a simpler output folder structureRe-implement GIF export with the
-i
flag (using this flag outputs ONLY a .gif file, and no .mp4 file)Added a
--verbose
flagYou can save the logs to a file by using
--log_to_file
Read
tex_template
from config file if not specified by--tex_template
.Add experimental javascript rendering with
--use_js_renderer
Add
-q/--quality [k|p|h|m|l]
flag and removed-m/-l
flags.Removed
--sound
flag
Config system#
Implement a
manim.cfg
config file system, that consolidates the global configuration, the command line argument parsing, and some of the constants defined inconstants.py
Added utilities for manipulating Manim’s
.cfg
files.Added a subcommand structure for easier use of utilities managing
.cfg
filesAlso some variables have been moved from
constants.py
to the new config system:FRAME_HEIGHT
toconfig["frame_width"]
TOP
toconfig["frame_height"] / 2 * UP
BOTTOM
toconfig["frame_height"] / 2 * DOWN
LEFT_SIDE
toconfig["frame_width"] / 2 * LEFT
RIGHT_SIDE
toconfig["frame_width"] / 2 * RIGHT
self.camera.frame_rate
toconfig["frame_rate"]
Mobjects, Scenes, and Animations#
Add customizable left and right bracket for
Matrix
mobject andset_row_colors
method for matrix mobjectAdd
AddTeXLetterByLetter
animationEnhanced GraphScene
You can now add arrow tips to axes
extend axes a bit at the start and/or end
have invisible axes
highlight the area between two curves
ThreeDScene now supports 3dillusion_camera_rotation
Add
z_index
for manipulating depth of Objects on scene.Add a
VDict
class: aVDict
is to aVGroup
what adict
is to alist
Added Scene-caching feature. Now, if a partial movie file is unchanged in your code, it isn’t rendered again! [HIGHLY UNSTABLE We’re working on it ;)]
Most
get_
andset_
methods have been removed in favor of instance attributes and propertiesThe
Container
class has been made into an AbstractBaseClass, i.e. in cannot be instantiated. Instead, use one of its children classesThe
TextMobject
andTexMobject
objects have been deprecated, due to their confusing names, in favour ofTex
andMathTex
. You can still, however, continue to useTextMobject
andTexMobject
, albeit with Deprecation Warnings constantly reminding you to switch.Add a
Variable
class for displaying text that continuously updates to reflect the value of a python variable.The
Tex
andMathTex
objects allow you to specify a custom TexTemplate using thetemplate
keyword argument.VGroup
now supports printing the class names of contained mobjects andVDict
supports printing the internal dict of mobjectsAdd all the standard easing functions
Scene
now renders whenScene.render()
is called rather than upon instantiation.ValueTracker
now supports increment using the += operator (in addition to the already existing increment_value method)Add
PangoText
for rendering texts using Pango.
Documentation#
Added clearer installation instructions, tutorials, examples, and API reference [WIP]
Fixes#
Initialization of directories has been moved to
config.py
, and a bunch of bugs associated to file structure generation have been fixedNonfunctional file
media_dir.txt
has been removedNonfunctional
if
statements inscene_file_writer.py
have been removedFix a bug where trying to render the example scenes without specifying the scene would show all scene objects in the library
Many
Exceptions
have been replaced for more specific exception subclassesFixed a couple of subtle bugs in
ArcBetweenPoints
Of interest to developers#
Python code formatting is now enforced by using the
black
toolPRs now require two approving code reviews from community devs before they can be merged
Added tests to ensure stuff doesn’t break between commits (For developers) [Uses Github CI, and Pytest]
Add contribution guidelines (for developers)
Added autogenerated documentation with sphinx and autodoc/autosummary [WIP]
Made manim internally use relative imports
Since the introduction of the
TexTemplate
class, the filestex_template.tex
andctex_template.tex
have been removedAdded logging tests tools.
Added ability to save logs in json
Move to Poetry.
Colors have moved to an Enum
Other Changes#
Cleanup 3b1b Specific Files
Rename package from manimlib to manim
Move all imports to
__init__
, sofrom manim import *
replacesfrom manimlib.imports import *
Global dir variable handling has been removed. Instead
initialize_directories
, if needed, overrides the values from the cfg files at runtime.