Giter VIP home page Giter VIP logo

manim's Introduction

pypi version MIT License Manim Subreddit Manim Discord docs

Manim is an engine for precise programmatic animations, designed for creating explanatory math videos.

Note, there are two versions of manim. This repository began as a personal project by the author of 3Blue1Brown for the purpose of animating those videos, with video-specific code available here. In 2020 a group of developers forked it into what is now the community edition, with a goal of being more stable, better tested, quicker to respond to community contributions, and all around friendlier to get started with. See this page for more details.

Installation

WARNING: These instructions are for ManimGL only. Trying to use these instructions to install ManimCommunity/manim or instructions there to install this version will cause problems. You should first decide which version you wish to install, then only follow the instructions for your desired version.

Note: To install manim directly through pip, please pay attention to the name of the installed package. This repository is ManimGL of 3b1b. The package name is manimgl instead of manim or manimlib. Please use pip install manimgl to install the version in this repository.

Manim runs on Python 3.7 or higher.

System requirements are FFmpeg, OpenGL and LaTeX (optional, if you want to use LaTeX). For Linux, Pango along with its development headers are required. See instruction here.

Directly

# Install manimgl
pip install manimgl

# Try it out
manimgl

For more options, take a look at the Using manim sections further below.

If you want to hack on manimlib itself, clone this repository and in that directory execute:

# Install manimgl
pip install -e .

# Try it out
manimgl example_scenes.py OpeningManimExample
# or
manim-render example_scenes.py OpeningManimExample

Directly (Windows)

  1. Install FFmpeg.
  2. Install a LaTeX distribution. MiKTeX is recommended.
  3. Install the remaining Python packages.
    git clone https://github.com/3b1b/manim.git
    cd manim
    pip install -e .
    manimgl example_scenes.py OpeningManimExample

Mac OSX

  1. Install FFmpeg, LaTeX in terminal using homebrew.

    brew install ffmpeg mactex
  2. Install latest version of manim using these command.

    git clone https://github.com/3b1b/manim.git
    cd manim
    pip install -e .
    manimgl example_scenes.py OpeningManimExample

Anaconda Install

  1. Install LaTeX as above.
  2. Create a conda environment using conda create -n manim python=3.8.
  3. Activate the environment using conda activate manim.
  4. Install manimgl using pip install -e ..

Using manim

Try running the following:

manimgl example_scenes.py OpeningManimExample

This should pop up a window playing a simple scene.

Some useful flags include:

  • -w to write the scene to a file
  • -o to write the scene to a file and open the result
  • -s to skip to the end and just show the final frame.
    • -so will save the final frame to an image and show it
  • -n <number> to skip ahead to the n'th animation of a scene.
  • -f to make the playback window fullscreen

Take a look at custom_config.yml for further configuration. To add your customization, you can either edit this file, or add another file by the same name "custom_config.yml" to whatever directory you are running manim from. For example this is the one for 3blue1brown videos. There you can specify where videos should be output to, where manim should look for image files and sounds you want to read in, and other defaults regarding style and video quality.

Look through the example scenes to get a sense of how it is used, and feel free to look through the code behind 3blue1brown videos for a much larger set of example. Note, however, that developments are often made to the library without considering backwards compatibility with those old videos. To run an old project with a guarantee that it will work, you will have to go back to the commit which completed that project.

Documentation

Documentation is in progress at 3b1b.github.io/manim. And there is also a Chinese version maintained by @manim-kindergarten: docs.manim.org.cn (in Chinese).

manim-kindergarten wrote and collected some useful extra classes and some codes of videos in manim_sandbox repo.

Contributing

Is always welcome. As mentioned above, the community edition has the most active ecosystem for contributions, with testing and continuous integration, but pull requests are welcome here too. Please explain the motivation for a given change and examples of its effect.

License

This project falls under the MIT license.

manim's People

Contributors

3b1b avatar astarysky avatar asutoshgha avatar bhbr avatar danwaxman avatar eulertour avatar friedkeenan avatar frozar avatar fwcd avatar gztimewalker avatar hanwenzhu avatar jeanimal avatar kyarik avatar mertyildiran avatar mirefek avatar naveen521kk avatar npetrangelo avatar sahilmakhijani avatar scottopell avatar soerface avatar solara570 avatar sridhar3b1b avatar sunkisser avatar tonycrane avatar turkeybilly avatar wallbreaker5th avatar widcardw avatar xfbs avatar xy-23 avatar yishimichael avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

manim's Issues

Preview option from extract_scene

In the current file extract_scene.py, the preview option seems to be inefficient. When I check the script, it seems to have no effect at all in the configuration variable.

Is it possible to get back this feature please?

IOError: No file matching Bubbles_thought.svg in image directory

Hi
Error occurs when I run in OSx

python extract_scene.py -p old_projects/eola/chapter0.py
Choose number corresponding to desired scene/arguments.
(Use comma separated list for multiple entries)

Choice(s): 1
Animation 1: WriteTextMobject: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:00<00:00, 64.03it/s]
Animation 2: ShowCreationVMobject, etc.: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:02<00:00, 14.35it/s]



Traceback (most recent call last):
  File "extract_scene.py", line 178, in main
    handle_scene(SceneClass(**scene_kwargs), **config)
  File "/Users/austin/workspace/manim/scene/scene.py", line 38, in __init__
    self.construct(*self.construct_args)
  File "/Users/austin/workspace/manim/./old_projects/eola/chapter0.py", line 112, in construct
    self.to_thought_bubble()
  File "/Users/austin/workspace/manim/./old_projects/eola/chapter0.py", line 152, in to_thought_bubble
    bubble = randy.get_bubble(width = 10)
  File "/Users/austin/workspace/manim/topics/characters.py", line 168, in get_bubble
    bubble = bubble_class(**kwargs)
  File "/Users/austin/workspace/manim/topics/objects.py", line 427, in __init__
    Bubble.__init__(self, **kwargs)
  File "/Users/austin/workspace/manim/topics/objects.py", line 339, in __init__
    SVGMobject.__init__(self, **kwargs)
  File "/Users/austin/workspace/manim/mobject/svg_mobject.py", line 26, in __init__
    self.ensure_valid_file()
  File "/Users/austin/workspace/manim/mobject/svg_mobject.py", line 42, in ensure_valid_file
    raise IOError("No file matching %s in image directory"%self.file_name)
IOError: No file matching Bubbles_thought.svg in image directory

AttributeError when running curves.py

Hi,

I am trying to run the code run extract_scene.py -p curves.py.
When choosing one of the scenes, I get attributeErrors.
These are a few of the errors I get.

  1. scene: BrachistochroneWordSliding
    Traceback (most recent call last): File "C:\Users\Koen\manim\extract_scene.py", line 200, in main handle_scene(SceneClass(**scene_kwargs), **config) File "C:\Users\Koen\manim\scene\scene.py", line 48, in __init__ self.construct(*self.construct_args) File ".\curves.py", line 128, in construct File ".\curves.py", line 78, in __init__ File "C:\Users\Koen\manim\animation\animation.py", line 35, in __init__ self.update(0) File "C:\Users\Koen\manim\animation\animation.py", line 54, in update self.update_mobject(self.rate_func(alpha)) File ".\curves.py", line 95, in update_mobject AttributeError: 'TexMobject' object has no attribute 'rgbs'

  2. scene BumpyDefineCurveWithKnob
    Traceback (most recent call last): File "C:\Users\Koen\manim\extract_scene.py", line 200, in main handle_scene(SceneClass(**scene_kwargs), **config) File "C:\Users\Koen\manim\scene\scene.py", line 48, in __init__ self.construct(*self.construct_args) File ".\curves.py", line 643, in construct AttributeError: 'Circle' object has no attribute 'add_line'

And there are many more. Is this a known phenomenon and how can I deal with this?

kind regards,

Can't install on Windows/Anaconda/Python 3

Collecting progressbar==2.3 (from -r requirements.txt (line 4))
Downloading progressbar-2.3.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "", line 1, in
File "C:\Users\Dmitri\AppData\Local\Temp\pip-build-saceb6m0\progressbar\setup.py", line 5, in
import progressbar
File "c:\users\dmitri\appdata\local\temp\pip-build-saceb6m0\progressbar\progressbar__init__.py", line 59, in
from progressbar.widgets import *
File "c:\users\dmitri\appdata\local\temp\pip-build-saceb6m0\progressbar\progressbar\widgets.py", line 121, in
class FileTransferSpeed(Widget):
File "C:\Anaconda3\lib\abc.py", line 133, in new
cls = super().new(mcls, name, bases, namespace)
ValueError: 'format' in slots conflicts with class variable

----------------------------------------

Command "python setup.py egg_info" failed with error code 1 in C:\Users\Dmitri\AppData\Local\Temp\pip-build-saceb6m0\progressbar\

How is this piped to ffmpeg?

For each scene, the frames are written as RGB data straight to stdin which gets piped to the input of ffmpeg. Is this correct? If so, then how large can the data be that is passed? Where is the data written in stdin stored? If I have 60 frames of 1920 x 1080 scenery then shouldn't that be much too large to store in RAM?

Aggdraw Installation not working

Hey, so I'm trying to install the manim engine requirements but whenever I try, it always throws the following error for the aggdraw package:

Collecting aggdraw from git+https://github.com/scottopell/aggdraw-64bits@c95aac4369038706943fd0effb7d888683860e5a#egg=aggdraw (from -r requirements.txt (line 7))
Cloning https://github.com/scottopell/aggdraw-64bits (to c95aac4369038706943fd0effb7d888683860e5a) to c:\users\user\appdata\local\temp\pip-build-erhnfr\aggdraw
Error [Error 2] The system cannot find the file specified while executing command git clone -q https://github.com/scottopell/aggdraw-64bits c:\users\user\appdata\local\temp\pip-build-erhnfr\aggdraw
Cannot find command 'git'

Animating All Scenes

Is there any way for extract_scene.py to extract all scenes in a given source file? Or is there no way, and I'd have to generate each scene individually?

ThreeDScene crashes

This playground:

from helpers import *
from mobject import Mobject
from mobject.vectorized_mobject import *
from animation.animation import Animation
from animation.transform import *
from animation.simple_animations import *
from topics.geometry import *
from scene import Scene
from camera import Camera
from topics.three_dimensions import *


class SampleScene(ThreeDScene):

    def construct(self):

        mob = Circle()
        self.add(mob)

yields:

Bens-MacBook-Pro:manim Ben$ python extract_scene.py ben_playground.py SampleScene -s
Played a total of 0 animations



Traceback (most recent call last):
  File "extract_scene.py", line 242, in main
    handle_scene(SceneClass(**scene_kwargs), **config)
  File "extract_scene.py", line 125, in handle_scene
    scene.save_image(mode = config["saved_image_mode"])
  File "/Users/Ben/Developer/manim/scene/scene.py", line 520, in save_image
    self.update_frame()
  File "/Users/Ben/Developer/manim/scene/scene.py", line 150, in update_frame
    self.capture_mobjects_in_camera(mobjects, **kwargs)
  File "/Users/Ben/Developer/manim/scene/scene.py", line 131, in capture_mobjects_in_camera
    self.camera.capture_mobjects(mobjects, **kwargs)
  File "/Users/Ben/Developer/manim/camera/camera.py", line 202, in capture_mobjects
    self.display_multiple_vectorized_mobjects(vmobjects)
  File "/Users/Ben/Developer/manim/topics/three_dimensions.py", line 98, in display_multiple_vectorized_mobjects
    self, sorted(vmobjects, cmp = z_cmp)
  File "/Users/Ben/Developer/manim/camera/camera.py", line 226, in display_multiple_vectorized_mobjects
    self.display_multiple_non_background_colored_vmobjects(batch)
  File "/Users/Ben/Developer/manim/camera/camera.py", line 232, in display_multiple_non_background_colored_vmobjects
    self.display_vectorized(vmobject, canvas)
  File "/Users/Ben/Developer/manim/camera/camera.py", line 241, in display_vectorized
    pen, fill = self.get_pen_and_fill(vmobject)
  File "/Users/Ben/Developer/manim/camera/camera.py", line 251, in get_pen_and_fill
    stroke_rgb = self.get_stroke_rgb(vmobject)
  File "/Users/Ben/Developer/manim/topics/three_dimensions.py", line 50, in get_stroke_rgb
    return self.modified_rgb(vmobject, vmobject.get_stroke_rgb())
  File "/Users/Ben/Developer/manim/topics/three_dimensions.py", line 47, in modified_rgb
    return color
NameError: global name 'color' is not defined



Bens-MacBook-Pro:manim Ben$

What's the best way to run the scenes that need Pi creatures?

Yet to experiment in this area yet, but I'm wondering, will any replacement SVG file do? Or are certain "keys"
needed for the animations? I know little about SVG.

I'm hoping someone else has found a work around. No need for the scenes to look good. I just want to use them as a way to understand the system.

how to move an end point of a line and animate

What are the different ways you could move one end point of a Line and animate it?
The only way I know of so far is to construct a new Line object with the desired points and Transform between them. But is there a proper way to do this without constructing a new Line object?

What exactly to install for latex to work?

Could you be more specific on what exactly to install for latex to work?
e.g. :
$python extract_scene.py -p example_scenes.py WriteStuff
does run, but shows only black screen

Exception: Latex error converting to dvi.

Exception: Latex error converting to dvi. See log output above or the log file: \3b1b animation master\files\Tex-1710913467.log

The system cannot find the path specified.

How to resolve it? There is no log file at the path directed.

Duplicate implementation of Integer?

This here trips my Python up:

class Integer(VGroup):
...
class Integer(DecimalNumber):
...

resulting in:

File "/Users/Ben/Developer/manim/topics/numerals.py", line 69, in <module>
    class Integer(VGroup):
File "/Users/Ben/Developer/manim/topics/numerals.py", line 72, in Integer
    for i, c in enumerate(num_string):
NameError: name 'num_string' is not defined

This appears to be a recent change. Is it even possible to have one class inherit from two different superclasses? Or did a merge go wrong here?

Python version problem?

While running the demo, ( python extract_scene.py -p example_scenes.py SquareToCirclepython extract_scene.py -p example_scenes.py SquareToCircle ) I get the following exception:

File "extract_scene.py", line 46
print str(err)
^
SyntaxError: invalid syntax

I believe it is somehow related to python version, right?

Can't install using anaconda on OSX 10.11.6

I can't seem to get it to install on OSX 10.11.6 using the anaconda python distribution. Following your instructions:

(python2) ➜  src git clone https://github.com/scottopell/aggdraw-64bits
Cloning into 'aggdraw-64bits'...
remote: Counting objects: 216, done.
remote: Total 216 (delta 0), reused 0 (delta 0), pack-reused 216
Receiving objects: 100% (216/216), 308.91 KiB | 367.00 KiB/s, done.
Resolving deltas: 100% (105/105), done.
Checking connectivity... done.
(python2) ➜  src cd aggdraw-64bits
(python2) ➜  aggdraw-64bits git:(master) python setup.py build_ext -i
=== freetype support disabled
running build_ext
building 'aggdraw' extension
creating build
creating build/temp.macosx-10.5-x86_64-2.7
creating build/temp.macosx-10.5-x86_64-2.7/agg2
creating build/temp.macosx-10.5-x86_64-2.7/agg2/src
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c aggdraw.cxx -o build/temp.macosx-10.5-x86_64-2.7/aggdraw.o
aggdraw.cxx:504:55: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
        PyObject* buffer = PyObject_CallMethod(image, "tobytes", NULL);
                                                      ^
aggdraw.cxx:530:64: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
        self->draw = new draw_adaptor<agg::pixfmt_gray8>(self, "L");
                                                               ^
aggdraw.cxx:533:64: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
        self->draw = new draw_adaptor<agg::pixfmt_rgb24>(self, "RGB");
                                                               ^
aggdraw.cxx:536:64: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
        self->draw = new draw_adaptor<agg::pixfmt_bgr24>(self, "BGR");
                                                               ^
aggdraw.cxx:539:65: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
        self->draw = new draw_adaptor<agg::pixfmt_rgba32>(self, "RGBA");
                                                                ^
aggdraw.cxx:639:62: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
        result = PyObject_CallFunction(aggdraw_getcolor_obj, "O", color);
                                                             ^
aggdraw.cxx:1059:47: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    result = PyObject_CallMethod(self->image, "frombytes", "N", buffer);
                                              ^
aggdraw.cxx:1059:60: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    result = PyObject_CallMethod(self->image, "frombytes", "N", buffer);
                                                           ^
aggdraw.cxx:1114:5: warning: delete called on 'draw_adaptor_base' that is
      abstract but has non-virtual destructor [-Wdelete-non-virtual-dtor]
    delete self->draw;
    ^
aggdraw.cxx:1133:31: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "width", "opacity", NULL };
                              ^
aggdraw.cxx:1133:40: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "width", "opacity", NULL };
                                       ^
aggdraw.cxx:1133:49: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "width", "opacity", NULL };
                                                ^
aggdraw.cxx:1164:31: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "opacity", NULL };
                              ^
aggdraw.cxx:1164:40: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "opacity", NULL };
                                       ^
aggdraw.cxx:1195:31: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "file", "size", "opacity", NULL };
                              ^
aggdraw.cxx:1195:40: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "file", "size", "opacity", NULL };
                                       ^
aggdraw.cxx:1195:48: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "file", "size", "opacity", NULL };
                                               ^
aggdraw.cxx:1195:56: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "file", "size", "opacity", NULL };
                                                       ^
aggdraw.cxx:169:21: warning: unused variable 'FontType' [-Wunused-variable]
static PyTypeObject FontType = {
                    ^
19 warnings generated.
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c agg2/src/agg_arc.cpp -o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_arc.o
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c agg2/src/agg_bezier_arc.cpp -o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_bezier_arc.o
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c agg2/src/agg_curves.cpp -o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_curves.o
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c agg2/src/agg_path_storage.cpp -o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_path_storage.o
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c agg2/src/agg_rasterizer_scanline_aa.cpp -o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_rasterizer_scanline_aa.o
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c agg2/src/agg_trans_affine.cpp -o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_trans_affine.o
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c agg2/src/agg_vcgen_contour.cpp -o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_vcgen_contour.o
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c agg2/src/agg_vcgen_stroke.cpp -o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_vcgen_stroke.o
g++ -bundle -undefined dynamic_lookup -L/Users/diego/anaconda/envs/python2/lib -arch x86_64 -arch x86_64 build/temp.macosx-10.5-x86_64-2.7/aggdraw.o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_arc.o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_bezier_arc.o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_curves.o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_path_storage.o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_rasterizer_scanline_aa.o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_trans_affine.o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_vcgen_contour.o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_vcgen_stroke.o -L/Users/diego/anaconda/envs/python2/lib -o /Users/diego/src/aggdraw-64bits/aggdraw.so
(python2) ➜  aggdraw-64bits git:(master) python setup.py install
=== freetype support disabled
running install
running build
running build_ext
building 'aggdraw' extension
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c aggdraw.cxx -o build/temp.macosx-10.5-x86_64-2.7/aggdraw.o
aggdraw.cxx:504:55: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
        PyObject* buffer = PyObject_CallMethod(image, "tobytes", NULL);
                                                      ^
aggdraw.cxx:530:64: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
        self->draw = new draw_adaptor<agg::pixfmt_gray8>(self, "L");
                                                               ^
aggdraw.cxx:533:64: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
        self->draw = new draw_adaptor<agg::pixfmt_rgb24>(self, "RGB");
                                                               ^
aggdraw.cxx:536:64: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
        self->draw = new draw_adaptor<agg::pixfmt_bgr24>(self, "BGR");
                                                               ^
aggdraw.cxx:539:65: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
        self->draw = new draw_adaptor<agg::pixfmt_rgba32>(self, "RGBA");
                                                                ^
aggdraw.cxx:639:62: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
        result = PyObject_CallFunction(aggdraw_getcolor_obj, "O", color);
                                                             ^
aggdraw.cxx:1059:47: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    result = PyObject_CallMethod(self->image, "frombytes", "N", buffer);
                                              ^
aggdraw.cxx:1059:60: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    result = PyObject_CallMethod(self->image, "frombytes", "N", buffer);
                                                           ^
aggdraw.cxx:1114:5: warning: delete called on 'draw_adaptor_base' that is
      abstract but has non-virtual destructor [-Wdelete-non-virtual-dtor]
    delete self->draw;
    ^
aggdraw.cxx:1133:31: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "width", "opacity", NULL };
                              ^
aggdraw.cxx:1133:40: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "width", "opacity", NULL };
                                       ^
aggdraw.cxx:1133:49: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "width", "opacity", NULL };
                                                ^
aggdraw.cxx:1164:31: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "opacity", NULL };
                              ^
aggdraw.cxx:1164:40: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "opacity", NULL };
                                       ^
aggdraw.cxx:1195:31: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "file", "size", "opacity", NULL };
                              ^
aggdraw.cxx:1195:40: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "file", "size", "opacity", NULL };
                                       ^
aggdraw.cxx:1195:48: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "file", "size", "opacity", NULL };
                                               ^
aggdraw.cxx:1195:56: warning: conversion from string literal to 'char *' is
      deprecated [-Wc++11-compat-deprecated-writable-strings]
    static char* kwlist[] = { "color", "file", "size", "opacity", NULL };
                                                       ^
aggdraw.cxx:169:21: warning: unused variable 'FontType' [-Wunused-variable]
static PyTypeObject FontType = {
                    ^
19 warnings generated.
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c agg2/src/agg_arc.cpp -o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_arc.o
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c agg2/src/agg_bezier_arc.cpp -o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_bezier_arc.o
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c agg2/src/agg_curves.cpp -o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_curves.o
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c agg2/src/agg_path_storage.cpp -o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_path_storage.o
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c agg2/src/agg_rasterizer_scanline_aa.cpp -o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_rasterizer_scanline_aa.o
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c agg2/src/agg_trans_affine.cpp -o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_trans_affine.o
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c agg2/src/agg_vcgen_contour.cpp -o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_vcgen_contour.o
gcc -fno-strict-aliasing -I/Users/diego/anaconda/envs/python2/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Iagg2/include -I/Users/diego/anaconda/envs/python2/include/python2.7 -c agg2/src/agg_vcgen_stroke.cpp -o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_vcgen_stroke.o
creating build/lib.macosx-10.5-x86_64-2.7
g++ -bundle -undefined dynamic_lookup -L/Users/diego/anaconda/envs/python2/lib -arch x86_64 -arch x86_64 build/temp.macosx-10.5-x86_64-2.7/aggdraw.o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_arc.o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_bezier_arc.o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_curves.o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_path_storage.o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_rasterizer_scanline_aa.o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_trans_affine.o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_vcgen_contour.o build/temp.macosx-10.5-x86_64-2.7/agg2/src/agg_vcgen_stroke.o -L/Users/diego/anaconda/envs/python2/lib -o build/lib.macosx-10.5-x86_64-2.7/aggdraw.so
running install_lib
copying build/lib.macosx-10.5-x86_64-2.7/aggdraw.so -> /Users/diego/anaconda/envs/python2/lib/python2.7/site-packages
running install_egg_info
Removing /Users/diego/anaconda/envs/python2/lib/python2.7/site-packages/aggdraw-1.1_64bits-py2.7.egg-info
Writing /Users/diego/anaconda/envs/python2/lib/python2.7/site-packages/aggdraw-1.1_64bits-py2.7.egg-info

I then issue a self test, as described on the aggdraw repo and I get:

(python2) ➜  aggdraw-64bits git:(master) python selftest.py
Traceback (most recent call last):
  File "selftest.py", line 5, in <module>
    import Image
ImportError: No module named Image

But then I fire up ipython to try and import aggdraw and I get:

(python2) ➜  aggdraw-64bits git:(master) ipython
Python 2.7.11 |Anaconda 4.0.0 (x86_64)| (default, Dec  6 2015, 18:57:58)
Type "copyright", "credits" or "license" for more information.

IPython 4.1.2 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: from aggdraw import *

In [2]:

But when I then try to install the missing requirements I get:

(python2) ➜  manim git:(master) pip install -r requirements.txt
Collecting aggdraw===2.0 (from -r requirements.txt (line 1))
  Could not find a version that satisfies the requirement aggdraw===2.0 (from -r requirements.txt (line 1)) (from versions: )
No matching distribution found for aggdraw===2.0 (from -r requirements.txt (line 1))
You are using pip version 8.1.1, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(python2) ➜  manim git:(master)

I searched the ImportError: No module named Image error during the self test, and I came across the mention of PIL vs Pillow

FadeOut and transparency

When fading out a composed Mobject (i. e. containing submobs), the pixels fade to black instead of the color of the mobject hidden behind it.

from helpers import *
from mobject import Mobject
from mobject.vectorized_mobject import *
from animation.animation import Animation
from animation.transform import *
from animation.simple_animations import *
from topics.geometry import *
from scene import Scene
from camera import Camera

class SampleScene(Scene):

    def construct(self):

        lines = Mobject() # VMobject()
        line1 = Line(LEFT, RIGHT)
        line2 = Line(UP, DOWN)
        lines.add(line1, line2)

        rect = Rectangle(fill_color = BLUE, fill_opacity = 1)

        self.add(lines)
        self.add(rect)

        self.wait()

        self.play(FadeOut(lines))

Result:

bildschirmfoto 2018-02-15 um 20 52 11

This does not happen in the exported PNG, and also not if lines is instantiated as a VMobject.

Image Import Error

Also` I went through the README and it looks like line 5 of selftest.py leads to there being a problem with the image it's trying to import.

See here:

aggdraw-64bits kbrower$ python selftest.py Traceback (most recent call last): File "selftest.py", line 5, in import Image ImportError: No module named Image

Open-sourcing Video "Scripts"

Hello!

Have you ever considered open-sourcing the "script" for your videos? A file that generates all the animations used in your videos?

Thanks!

No module named

I'm trying to run the program but it says no module named every time.

Tips of DoubleArrow scale differently

Something I have noticed, but don't need to work right now. And couldn't figure out how to fix fast.

from helpers import *
from mobject import Mobject
from mobject.vectorized_mobject import *
from animation.animation import Animation
from animation.transform import *
from animation.simple_animations import *
from topics.geometry import *
from scene import Scene
from camera import Camera


class SampleScene(Scene):

    def construct(self):

        mob = DoubleArrow([-1,-1,0],[1,1,0])
        self.add(mob)

        self.play(
            mob.scale,2
        )

gives:

samplescene

CTex fontset `mac' is unavailable in current mode

I'm trying to run manim on a mac with latex installed via the Tex Live Utility. I'm trying to run old_projects/eoc/chapter1.py. Perhaps that's not intended to work any longer.

I see this error in a tex log:

.................................................
. LaTeX info: "xparse/define-command"
.
. Defining command \CTeX with sig. '' on line 746.
.................................................

(/usr/local/texlive/2017/texmf-dist/tex/latex/ctex/fontset/ctex-fontset-mac.def
File: ctex-fontset-mac.def 2017/11/22 v2.4.11 Mac OS X fonts definition (CTEX)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! Critical ctex error: "fontset-unavailable"
!
! CTeX fontset `mac' is unavailable in current mode.
!
! See the ctex documentation for further information.
!
! For immediate help type H .
!...............................................

Any thoughts anyone?

TypeError while running a triangle.py scene

I got an error when I try to run some of the old_projects/triangle_of_power/triangle.py scene.
My command is:

python extract_scene.py -p old_projects/triangle_of_power/triangle.py DrawInsideTriangle

But after that I get:

Traceback (most recent call last):
  File "extract_scene.py", line 187, in main
    handle_scene(SceneClass(**scene_kwargs), **config)
  File "/home/loic/Sources/Git/manim/scene/scene.py", line 47, in __init__
    self.construct(*self.construct_args)
  File "/home/loic/Sources/Git/manim/./old_projects/triangle_of_power/triangle.py", line 527, in construct
    top = TOP()
  File "/home/loic/Sources/Git/manim/./old_projects/triangle_of_power/triangle.py", line 91, in __init__
    VMobject.__init__(self, **kwargs)
  File "/home/loic/Sources/Git/manim/mobject/mobject.py", line 33, in __init__
    self.generate_points()
  File "/home/loic/Sources/Git/manim/./old_projects/triangle_of_power/triangle.py", line 104, in generate_points
    self.set_values(self.x, self.y, self.z)
  File "/home/loic/Sources/Git/manim/./old_projects/triangle_of_power/triangle.py", line 108, in set_values
    self.set_value(i, mob)
  File "/home/loic/Sources/Git/manim/./old_projects/triangle_of_power/triangle.py", line 111, in set_value
    self.values[index] = self.put_on_vertex(index, value)
  File "/home/loic/Sources/Git/manim/./old_projects/triangle_of_power/triangle.py", line 125, in put_on_vertex
    value.center()
  File "/home/loic/Sources/Git/manim/mobject/mobject.py", line 230, in center
    self.shift(-self.get_center())
  File "/home/loic/Sources/Git/manim/mobject/mobject.py", line 124, in shift
    mob.points += total_vector
TypeError: Cannot cast ufunc add output from dtype('float64') to dtype('int64') with casting rule 'same_kind'

And then the fail sound.

Is there something wrong in what am I doing?

Which scenes should currently work?

I assumed the way to learn to use this tool would be to find existing scenes that do something similar to ones aims and use those as a starting point, but I've just read a comment that said development hasn't maintained backward compatibility, so lots of old scenes are no longer intended to work. It would be very useful to have a file that kept track of which scenes are currently intended to work. Just trying them to see is no good because they may fail because of not having installed everything correctly.

Windows 10 - No module named . (period)

I've tried the python extract_scene.py -p example_scenes.py SquareToCircle example on cmd, and I get the above error.
*I've looked around and it seems that a few a people have had this problem, but I can't find any one who has a solution. .(period) is syntax for relative import, but I don't know how to fix from there.

Errno 2: no such file or directory

Traceback (most recent call last):
File "extract_scene.py", line 175, in main
handle_scene(SceneClass(**scene_kwargs), **config)
File "extract_scene.py", line 107, in handle_scene
scene.write_to_movie(os.path.join(config["movie_prefix"], name))
File "/home/leohardt/Programação/Python/manim-master/scene/scene.py", line 380, in write_to_movie
process = sp.Popen(command, stdin=sp.PIPE)
File "/usr/lib/python2.7/subprocess.py", line 710, in init
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

play WARN alsa: under-run
play WARN alsa: under-run
play WARN alsa: under-run
play WARN alsa: under-run
play WARN alsa: under-run
play WARN alsa: under-run
play WARN alsa: under-run
play WARN alsa: under-run
play WARN alsa: under-run
play WARN alsa: under-run
play WARN alsa: under-run
play WARN alsa: under-run
play WARN alsa: under-run
play WARN alsa: under-run
play WARN alsa: under-run
play WARN alsa: under-run

Installation issue (Win10, Python 2.7)

I understand that you don't have the time to look into this, but on Win10 with Python 2.7 installation fails.
Does it require Python 3? Or is it that the Colour module dependency requires Python 3?
I rarely use Python, so it's hard to tell for me right away what the problem is.

$ python --version
Python 2.7.14 :: Anaconda, Inc.
$ pip install -r requirements.txt                                                                                                                                  
Collecting colour==0.1.2 (from -r requirements.txt (line 1))                                                                                                       
  Downloading colour-0.1.2.tar.gz                                                                                                                                  
    Complete output from command python setup.py egg_info:                                                                                                         
    Importing new compiler from distutils.msvc9compiler                                                                                                            
                                                                                                                                                                   
    Installed c:\users\dmitr\appdata\local\temp\pip-build-x2uthk\colour\.eggs\d2to1-0.2.12.post1-py2.7.egg                                                         
    error in setup command: Error parsing c:\users\dmitr\appdata\local\temp\pip-build-x2uthk\colour\setup.cfg: TypeError: super() argument 1 must be type, not None
                                                                                                                                                                   
    ----------------------------------------                                                                                                                       
Command "python setup.py egg_info" failed with error code 1 in c:\users\dmitr\appdata\local\temp\pip-build-x2uthk\colour\                                          

Permission Denied to aggdraw.so

Here was the text in Terminal

~``kbrower$ cd $TMPDIR T kbrower$ git clone https://github.com/scottopell/aggdraw-64bits fatal: destination path 'aggdraw-64bits' already exists and is not an empty directory. T kbrower$ cd aggdraw-64bits aggdraw-64bits kbrower$ /usr/local/bin/python setup.py build_ext -i -bash: /usr/local/bin/python: No such file or directory aggdraw-64bits kbrower$ python setup.py build_ext -i === freetype support disabled running build_ext Kellys-MacBook-Pro:aggdraw-64bits kbrower$ python setup.py install === freetype support disabled running install running build running build_ext running install_lib copying build/lib.macosx-10.11-intel-2.7/aggdraw.so -> /Library/Python/2.7/site-packages error: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/aggdraw.so' aggdraw-64bits``kbrower$

Please help?

how to use this source?

i'm a student,watch your video on youtube ,in the video,i know this source ,but ,today ,i use this source on python 3.xx,it's error,sorry ,my english is poor ,so ,you can tell me how to use this source? i really want to use this,thx

problems with tex_to_dvi in tex_mobject.py

Hi all,
run extract_scene.py -p curves.py in python jupyter notebook. I got always following error which I don't manage to solve.
Traceback (most recent call last): File "C:\Users\Koen\manim\extract_scene.py", line 200, in main handle_scene(SceneClass(**scene_kwargs), **config) File "C:\Users\Koen\manim\scene\scene.py", line 48, in __init__ self.construct(*self.construct_args) File ".\curves.py", line 126, in construct anim = SlideWordDownCycloid("Brachistochrone") File ".\curves.py", line 67, in __init__ word_mob = TextMobject(list(word)) File "C:\Users\Koen\manim\mobject\tex_mobject.py", line 54, in __init__ self.template_tex_file File "C:\Users\Koen\manim\mobject\tex_mobject.py", line 255, in tex_to_svg_file dvi_file = tex_to_dvi(tex_file) File "C:\Users\Koen\manim\mobject\tex_mobject.py", line 297, in tex_to_dvi "See log output above or the log file: %s" % log_file) Exception: Latex error converting to dvi. See log output above or the log file: C:\Users\Koen\manim\files\Tex\-91855429.log
Does anyone know how to deal with this error?

many thanks from a bit frustrated person

How can the quality be so high using ffmpeg?

No explicit settings have been set for the bitrate or quality. How is it that the videos produced have such a high quality to them? I have tried using the same exact settings and get very poor video quality.

Latex error converting to dvi.

Hello, I'm using ubuntu 17.04. Whenever I try "sudo python extract_scene.py -p example_scenes.py WriteStuff", the error "Latex error converting to dvi." occurs. Can anybody help me with that issue?

[libx264] "width not divisible by 2"

When running the sample script with the option -pw (preview & write to file), this happens:

Bens-MacBook-Pro:manim Ben$ python2.7 extract_scene.py -pw example_scenes.py WarpSquare
Writing to /Users/Ben/Dropbox/3b1b_videos/animations/example_scenes/WarpSquareTemp.mp4
Animation 1: ApplyPointwiseFunctionSquareToSquare:   2%| | 1/45 [00:00<00:07,  6.06it/s][libx264 @ 0x7fa42c80ce00] width not divisible by 2 (853x480)
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height




Traceback (most recent call last):
  File "extract_scene.py", line 206, in main
    handle_scene(SceneClass(**scene_kwargs), **config)
  File "/Users/Ben/Developer/manim/scene/scene.py", line 52, in __init__
    self.construct(*self.construct_args)
  File "/Users/Ben/Developer/manim/./example_scenes.py", line 43, in construct
    square
  File "/Users/Ben/Developer/manim/scene/scene.py", line 399, in play
    self.add_frames(self.get_frame())
  File "/Users/Ben/Developer/manim/scene/scene.py", line 445, in add_frames
    self.writing_process.stdin.write(frame.tostring())
IOError: [Errno 32] Broken pipe



sh: play: command not found

There is no output file, only an empty WarpSquareTemp.mp4.

When fixing the width "by hand" in scene/scene.py:485 with:

if (width % 2 == 1):
    width += 1

ffmpeg produces a slanted video file, because now the dimensions and buffer size don't match up:

Bens-MacBook-Pro:manim Ben$ python2.7 extract_scene.py -pw example_scenes.py WriteStuff
Writing to /Users/Ben/Dropbox/3b1b_videos/animations/example_scenes/WriteStuffTemp.mp4
Animation 1: WriteTextMobject: 100%|████████| 30/30 [00:00<00:00, 38.94it/s]
[rawvideo @ 0x7f978c002600] Invalid buffer size, packet size 1582080 < expected frame_size 1639680
Error while decoding stream #0:0: Invalid argument



Traceback (most recent call last):
  File "extract_scene.py", line 206, in main
    handle_scene(SceneClass(**scene_kwargs), **config)
  File "extract_scene.py", line 109, in handle_scene
    scene.preview()
  File "/Users/Ben/Developer/manim/scene/scene.py", line 456, in preview
    TkSceneRoot(self)
  File "/Users/Ben/Developer/manim/scene/tk_scene.py", line 29, in __init__
    self.show_new_image(frame)
  File "/Users/Ben/Developer/manim/scene/tk_scene.py", line 38, in show_new_image
    photo = ImageTk.PhotoImage(image)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL/ImageTk.py", line 117, in __init__
    self.__photo = tkinter.PhotoImage(**kw)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 3371, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 3308, in __init__
    raise RuntimeError, 'Too early to create image'
RuntimeError: Too early to create image



sh: play: command not found
Exception AttributeError: "'PhotoImage' object has no attribute '_PhotoImage__photo'" in <bound method PhotoImage.__del__ of <PIL.ImageTk.PhotoImage object at 0x111c95cd0>> ignored

10 undefined names in old_projects

flake8 testing of https://github.com/3b1b/manim on Python 2.7.14

$ flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics

./old_projects/number_line_scene.py:6:23: F821 undefined name 'Scene'
class NumberLineScene(Scene):
                      ^
./old_projects/number_line_scene.py:15:18: F821 undefined name 'SPACE_WIDTH'
        radius = SPACE_WIDTH/unit_length_to_spatial_width
                 ^
./old_projects/number_line_scene.py:49:40: F821 undefined name 'UP'
            new_point += mob_center[1]*UP
                                       ^
./old_projects/number_line_scene.py:53:35: F821 undefined name 'ApplyMethod'
                transforms.append(ApplyMethod(mob.shift, new_point - mob_center))
                                  ^
./old_projects/number_line_scene.py:55:35: F821 undefined name 'Line'
        line_to_hide_pixelation = Line(
                                  ^
./old_projects/number_line_scene.py:72:39: F821 undefined name 'straight_path'
                kwargs["path_func"] = straight_path
                                      ^
./old_projects/number_line_scene.py:74:39: F821 undefined name 'counterclockwise_path'
                kwargs["path_func"] = counterclockwise_path()
                                      ^
./old_projects/number_line_scene.py:76:13: F821 undefined name 'ApplyMethod'
            ApplyMethod(self.number_line.stretch, num, 0, **kwargs)
            ^
./old_projects/number_line_scene.py:78:13: F821 undefined name 'ApplyMethod'
            ApplyMethod(mob.shift, (num-1)*mob.get_center()[0]*RIGHT, **kwargs)
            ^
./old_projects/number_line_scene.py:78:64: F821 undefined name 'RIGHT'
            ApplyMethod(mob.shift, (num-1)*mob.get_center()[0]*RIGHT, **kwargs)
                                                               ^
10    F821 undefined name 'Scene'

Can't open videos

Hello, when I'm trying to render a scene, it renders the video, but I can't open it. I'm not getting any errors (except when I try to preview a video), and the file is saved. But, I can't open it, I think it's empty.
I don't think it comes from ffmpeg. I'm running everything with python 2.7, on OS X El Capitan.

This might help:

python2.7 extract_scene.py -w example_scenes.py
1: CountingScene
2: PiCreatureScene
3: SquareToCircle
4: TeacherStudentsScene
5: WarpSquare
6: WriteStuff

Choose number corresponding to desired scene/arguments.
(Use comma separated list for multiple entries)

Choice(s): 3
Writing to ~/DEV/others/manim/files/movies/example_scenes/SquareToCircle.mp4
  0%|                                                              | 0/60 [00:00<?, ?it/s]

Project lacks a software license

At first, thank you for publishing the source of the videos. That is very nice from a software point of view. I would like to contribute a bit with some trivial software quality and found out the project lacks a license.

A license protect your rights and lets users have a guarantee they are not breaching your rights when reusing your software. That is quite important. Github has a FAQ about it https://help.github.com/articles/licensing-a-repository/ and have even created a tutorial to pick one https://choosealicense.com/

The three top recommendations are the most popular licenses: MIT and Apache 2.0 Licenses are very permissive, GPLv3 guarantee derivative are placed under the same license (it is viral).

The repository 3b1b/manim host both the software and the code to generate the video. Most probably the software can be placed under an open source license that would let others reuse the project. The YouTube videos do not seem to be free to redistribute, so maybe the code that is used to generate them should be under a different license.

Thank you for all the videos :]

Error with PIL?

Hello, I tried running the command 'python extract_scene.py -p example_scenes.py SquareToCircle' as instructed. I have install all requirements and the project looks fine and all. But in console, I'm getting this error, could someone enlightening me on this problem.

Stevens-MacBook-Pro:manim Steven$ python extract_scene.py -p example_scenes.py SquareToCircle

Traceback (most recent call last):
File "extract_scene.py", line 173, in main
handle_scene(SceneClass(**scene_kwargs), **config)
File "/Users/Steven/PycharmProjects/manim/scene/scene.py", line 36, in init
self.construct(*self.construct_args)
File "/Users/Steven/PycharmProjects/manim/./example_scenes.py", line 34, in construct
self.play(ShowCreation(square))
File "/Users/Steven/PycharmProjects/manim/scene/scene.py", line 240, in play
self.update_frame(static_mobjects)
File "/Users/Steven/PycharmProjects/manim/scene/scene.py", line 70, in update_frame
self.camera.capture_mobjects(mobjects, **kwargs)
File "/Users/Steven/PycharmProjects/manim/camera.py", line 84, in capture_mobjects
canvas = aggdraw.Draw(image)
File "/Users/Steven/Library/Python/2.7/lib/python/site-packages/PIL/Image.py", line 510, in getattr
raise AttributeError(name)
AttributeError: tobytes

sh: play: command not found

I've reviewed the code over and over again but maybe I'm just not understanding the process behind it. But I'm at a loss, any help would be much appreciated.

Help,The error how to solve?

C:\Users\Administrator\Desktop\github\manim>python extract_scene.py -p example_scenes.py SquareToCircle
Traceback (most recent call last):
File "extract_scene.py", line 185, in
main()
File "extract_scene.py", line 163, in main
module = get_module(config["file"])
File "extract_scene.py", line 155, in get_module
last_module = imp.load_module(".", *imp.find_module("."))
ImportError: No module named .

ImportError: cannot import name

While running the code of example scene (or other file, e.g. basel.py), I get stuck into the ImportError:

File "extract_scene.py", line 15, in
from scene import Scene
ImportError: cannot import name 'Scene'

The error varies as I try to run different files, which the same error ImportError is encountered in different modules/classes in different py file.

I suppose that the cause is somehow related to location of files I should put. Now I just download the file , move nothing and compile the code. Is there any clue what might be the cause of the error?

Why is TextMObject taking huge amount of memory?

I can play other exmaples from example_scenes.py but the only ones with text, that are WriteStuff and SpinAroundCube never seems to finish rendering. I have 8GB of RAM, WriteStuff takes up 7.3GB out of it, almost 10GB of Swap is also used, but the rendering is just stuck around 20%. Maybe most of the time is spent doing swap in and swap out. I don't know what is going on.

Latex Error converting to dvi. (Other issues concerning this don't work...)

Hi! I'm on mac, got all the requirements installed, but everytime I run WriteStuff in example_scenes.py:
$ python extract_scene.py example_scenes.py WriteStuff -p
and I get the following error:
Writing to /Users/jacob 1/Desktop/manim-master/animations/example_scenes/WriteStuffTemp.mp4 Traceback (most recent call last): File "extract_scene.py", line 255, in main handle_scene(SceneClass(**scene_kwargs), **config) File "/Users/jacob 1/Desktop/manim-master/scene/scene.py", line 69, in __init__ self.construct(*self.construct_args) File "/Users/jacob 1/Desktop/manim-master/./example_scenes.py", line 66, in construct self.play(Write(TextMobject("Stuff").scale(3))) File "/Users/jacob 1/Desktop/manim-master/mobject/tex_mobject.py", line 56, in __init__ self.template_tex_file File "/Users/jacob 1/Desktop/manim-master/mobject/tex_mobject.py", line 331, in tex_to_svg_file dvi_file = tex_to_dvi(tex_file) File "/Users/jacob 1/Desktop/manim-master/mobject/tex_mobject.py", line 376, in tex_to_dvi "See log output above or the log file: %s" % log_file) Exception: Latex error converting to dvi. See log output above or the log file: /Users/jacob 1/Desktop/manim-master/files/Tex/2819777233570814671.log
I know that there are a few issues concerning similar errors, but I either don't understand the solutions or they just don't work for me. Can someone help me? Thank you so much!

'module' object has no attribute 'meta_animations'

Looks like the init.py file in animation declares a module meta_animations which does not exist. Here is my traceback:

Traceback (most recent call last):
  File "extract_scene.py", line 188, in <module>
    main()
  File "extract_scene.py", line 166, in main
    module = get_module(config["file"])
  File "extract_scene.py", line 161, in get_module
    last_module = imp.load_module(part, *load_args)
  File "/Users/mitchallain/Development/Python/3b1b/manim/./music_and_measure.py", line 9, in <module>
    from animation import *
AttributeError: 'module' object has no attribute 'meta_animations'

Should be a simple fix, but I wanted to make sure there wasn't any functionality missing here.

"ImportError: No module named PIL" even after "pip install -r requirements.txt" and Pillow installed

Hi,

To test out the library, I downloaded & opened the zip, navigated into the directory, installed dependency, and executed pip install -r requirements.txt and then python extract_scene.py -p example_scenes.py SquareToCircle, yielding the following.

Traceback (most recent call last):
  File "extract_scene.py", line 12, in <module>
    from helpers import *
  File "/Users/joeykellison-linn/Desktop/manim-master/helpers.py", line 4, in <module>
    from PIL import Image
ImportError: No module named PIL

This confuses me greatly. Pillow is definitely installed. I'm on a Mac running python installed by homewbrew. Thoughts?

Latex error converting to DVI on macOS

When attempting to animate any TexMobject, I get an error saying
Exception: Latex error converting to dvi

I have looked at all the relevant issues here (including #64 and #36 ) and none of them seem to work. Perhaps I just didn't see the post the solved my issue.

For example, while trying to run SpinAroundCube:
Traceback (most recent call last): File "extract_scene.py", line 242, in main handle_scene(SceneClass(**scene_kwargs), **config) File "/Users/MaxCoplan/Documents/workspace/manim/scene/scene.py", line 68, in __init__ self.construct(*self.construct_args) File "/Users/MaxCoplan/Documents/workspace/manim/./example_scenes.py", line 171, in construct text = TextMobject("Your ad here") File "/Users/MaxCoplan/Documents/workspace/manim/mobject/tex_mobject.py", line 52, in __init__ self.template_tex_file File "/Users/MaxCoplan/Documents/workspace/manim/mobject/tex_mobject.py", line 321, in tex_to_svg_file dvi_file = tex_to_dvi(tex_file) File "/Users/MaxCoplan/Documents/workspace/manim/mobject/tex_mobject.py", line 366, in tex_to_dvi "See log output above or the log file: %s" % log_file) Exception: Latex error converting to dvi. See log output above or the log file: /Users/MaxCoplan/Documents/workspace/manim/files/Tex/-6949998171807781965.log

-6949998171807781965.log

zeta.py AttributeError: 'ShowZetaOnHalfPlane' object has no attribute 'y_min'

When I run

python extract_scene.py -p old_projects/zeta.py ShowZetaOnHalfPlane

I have the following error

Writing "\zeta( s )= \frac{1}{1^s} +  \frac{1}{2^s} +  \frac{1}{3^s} +  \frac{1}{4^s} +  \cdots" to /Users/laurent/Work/xxxx/manim/files/Tex/-5201468256000681301.tex
Writing "\zeta(" to /Users/laurent/Work/xxxx/manim/files/Tex/3529308138940232413.tex
Writing ")=" to /Users/laurent/Work/xxxx/manim/files/Tex/8430908102380925009.tex
Writing "\frac{1}{1^s} +" to /Users/laurent/Work/xxxx/manim/files/Tex/1583025563881409802.tex
Writing "\frac{1}{2^s} +" to /Users/laurent/Work/xxxx/manim/files/Tex/6484072650047720569.tex
Writing "\frac{1}{3^s} +" to /Users/laurent/Work/xxxx/manim/files/Tex/1463901432775095568.tex
Writing "\frac{1}{4^s} +" to /Users/laurent/Work/xxxxs/manim/files/Tex/5428990312259487727.tex
Writing "\cdots" to /Users/laurent/Work/xxxx/manim/files/Tex/5511331107690932742.tex

Traceback (most recent call last):
  File "extract_scene.py", line 206, in main
    handle_scene(SceneClass(**scene_kwargs), **config)
  File "/Users/laurent/Work/xxxx/manim/scene/scene.py", line 52, in __init__
    self.construct(*self.construct_args)
  File "/Users/laurent/Work/xxxx/manim/./old_projects/zeta.py", line 1760, in construct
    self.initial_transformation()
  File "/Users/laurent/Work/xxxx/manim/./old_projects/zeta.py", line 1788, in initial_transformation
    self.add_extra_plane_lines_for_zeta(animate = True)
  File "/Users/laurent/Work/xxxx/manim/./old_projects/zeta.py", line 84, in add_extra_plane_lines_for_zeta
    dense_grid = self.get_dense_grid(**kwargs)
  File "/Users/laurent/Work/xxxx/manim/./old_projects/zeta.py", line 98, in get_dense_grid
    max(self.y_min, self.extra_lines_y_min),
AttributeError: 'ShowZetaOnHalfPlane' object has no attribute 'y_min'

sh: play: command not found

Black Screen Error

The code compiles perfectly alright but when I open the WarpSquare.mp4 file it shows a black screen.

Why does this happen

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.