[HN Gopher] Manim: An animation engine for explanatory math videos ___________________________________________________________________ Manim: An animation engine for explanatory math videos Author : agmm Score : 427 points Date : 2021-08-20 12:32 UTC (10 hours ago) (HTM) web link (github.com) (TXT) w3m dump (github.com) | stevenpetryk wrote: | Shameless plug for my React library for creating similar-looking, | interactive visualizations on the web. Highly inspired by | 3blue1brown/manim's style. Less focused around animation, more | focused on interaction. :) | | https://mafs.dev/ | | Edit: probably needs a bit of chores done, especially around | typescript declaration organization. I built it during a brief | 3-week funemployment last year. Side projects are hard! | da39a3ee wrote: | That looks like a really nice project. Are you familiar with | Mathbox https://github.com/unconed/mathbox? | stevenpetryk wrote: | Nope! I like Three.js though. These visualizations are pretty | intense. | Uehreka wrote: | I'm pretty sure mathbox got abandoned when mathbox2 came out | (understandably, it's mostly one guy building it). But then | mathbox2 appears to be abandoned now, and last time I tried | to use it (a couple years ago) the coffeescript would no | longer compile. | | It was a really visionary piece of work, it's a bummer to see | it fall apart like this, and I don't think anything has come | out since that really replaces it (though manim does look | cool). | 6gvONxR4sf7o wrote: | That looks super clean. Very cool. | tenaciousDaniel wrote: | This is great, do you use anything under the hood? D3/ThreeJS? | stevenpetryk wrote: | SVG. It's remarkably powerful given that it supports | arbitrary linear transformations and all sorts of computer | graphics things. | westoncb wrote: | Can anyone give a brief explanation of what it means to use | SVG in this context? | | I think of it as a file format, but I'm assuming no files | are involved here. Aside from that I've noticed the | contents of SVG files look similar to the 2d canvas | operations--which to my mind seems like the natural thing | to use for something like this--so why use SVG instead? And | is there any relationship between canvas drawing and SVG? | stevenpetryk wrote: | SVG works much more naturally with React, since it's able | to be managed via the DOM. Doesn't have to be an <img />. | remram wrote: | JavaScript can write SVG just like it writes HTML. Your | React render() can return <svg><rect ... /></svg> as | easily as <div><p>...</p></div> | tenaciousDaniel wrote: | Yep, svg + react = declarative graphics. I love it. I | used it to replace D3 in a project I worked on last year | and no regrets at all. | nighthawk454 wrote: | glancing at the code, it appears to just be SVG. and pretty | cleanly at that | pc86 wrote: | Haven't looked at the code yet but the animations/interactivity | is gorgeous. | [deleted] | dxbydt wrote: | Your example on Projectile motion and Riemann sum is quite | nice! I am going to share it with a few kids I work with. Thank | you for creating this. | snicker7 wrote: | For Julia coders, there is Javis.jl | | https://www.youtube.com/watch?v=ckvsc6ukdOc | nuclearnice1 wrote: | Very cool | | At a glance, it seems tightly bound to making math animations, | unsurprisingly. | | Are there more general open source animation tools? Or other | narrow tools for other niches? | cmrdsprklpny wrote: | You might like Wick Editor: https://wickeditor.com | 5faulker wrote: | Nice name. | bsenftner wrote: | Does anyone have experience to compare this with MathBox? | https://github.com/unconed/mathbox Mathbox is JavaScript, not | Python, but presentation graphics are often web based, so I | consider these two to be supplying solutions for similar needs. | Zhyl wrote: | I've only seen on the author's website [0], but the | explainables there are some of the best I've seen. [1,2] | | [0] https://acko.net | | [1] https://acko.net/blog/how-to-fold-a-julia-fractal/ | | [2] https://acko.net/blog/to-infinity-and-beyond/ | bsenftner wrote: | I've used Mathbox quite a bit, it is flat out incredible, a | jaw dropping artful simplicity to use. So I am wondering if | this is worth even looking into... | baby wrote: | Feedback on the landing page: it's an animation engine but I can | find no examples. | srott wrote: | There is a link to "our online Jupyter environment."... | | https://mybinder.org/v2/gist/behackl/725d956ec80969226b7bf9b... | bradrn wrote: | A Haskell equivalent: https://reanimate.github.io/. Haven't used | it myself, but the examples are incredibly impressive. | lordleft wrote: | I've always marveled at Grant's videos -- very cool to see this | skratlo wrote: | Why does it follow this pattern, at least in the docs, where the | user is supposed to subclass Scene and provide a construct | method? How does inheritance help here? Wouldn't it be simpler if | instead users can make Scene using their own abstractions and | functions in whatever way they feel is appropriate? | kzrdude wrote: | That's how OOP (but not Python) is taught sometimes | nuclearnice1 wrote: | I assume the Scene class is called into from some other part of | the engine. So, your code needs to at least enter via those | functions and return the right value / have the required side | effects. | | There are probably other methods defining the scene interface | defined in the base class definition. | [deleted] | SamBam wrote: | This is very nice. It looks well-designed for a moderately- | technical teacher to create stuff with a lot of reasonable | defaults and assumptions over configuration. | | Here's the gallery of example stuff you can do: | https://docs.manim.community/en/stable/examples.html | mcphage wrote: | Why is the method to set the text on an object "get_text()" ? | SamBam wrote: | It seems slightly confusing, but I think the idea is that the | brace is creating a new text object, which is returned and | you can then add it to the scene. So it's not "get the | current string" it's "give me a text object with this | string." Could have been named `create_text()` perhaps. | msdrigg wrote: | This is an extension of an animation library used by math | YouTuber 3blue1brown [0]. He has an excellent channel that I | would recommend anything from. One of my favorite videos of his | is where he shows the thought process behind solving a level 6 | Putnam competition problem and makes it seem almost doable [1]. | | [0] https://m.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw | | [1] https://m.youtube.com/watch?v=OkmNXy7er84 | sundarurfriend wrote: | I've never been able to get into these animated videos of 3b1b, | but the more recent videos with a more conversational tone | (Lockdown math, the MIT Computational thinking course, the | podcast) have made me a big fan of Grant. | abetusk wrote: | A community fork of 3Brown1Blue's [0] Manim [1] for creating the | math animations and pictures used in their videos. From the | manimcommunity's README: | | """ NOTE: This repository is maintained by the Manim Community | and is not associated with Grant Sanderson or 3Blue1Brown in any | way (although we are definitely indebted to him for providing his | work to the world). If you would like to study how Grant makes | his videos, head over to his repository (3b1b/manim). This fork | is updated more frequently than his, and it's recommended to use | this fork if you'd like to use Manim for your own projects. """ | | See the gallery for it in action [2]. | | [0] https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw | | [1] https://github.com/3b1b/manim | | [2] https://docs.manim.community/en/stable/examples.html | omgJustTest wrote: | While this seems to be good intentions, the message is unclear | and confusing. | | 3b1b's explaination in his readme is much clearer and Manim | community should decouple itself from the 3B1B name / | popularity. | | "Manim is an animation engine for explanatory math videos. It's | used to create precise animations programmatically, as | demonstrated in the videos of 3Blue1Brown." [1] | | "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." [2] | | [1] Manim Community Edition Readme [2] Manim 3B1B edition | dmix wrote: | Agreed, I immediately got the impression it was what 3b1b was | using... | AnotherGoodName wrote: | To be fair the gist of it is that "this is what the 3b1b | team are using except it is a bit better". | xmprt wrote: | Although the fact that the 3b1b team isn't using the | community version makes me wonder why and whether the | community version is actually better. In any case I'll | take their word for it that it's more beginner friendly. | tjader wrote: | I believe 3b1b uses his extensive knowledge of the system | he developed to sometimes do hacky things that wouldn't | be easy to support long-term. His repo may be better for | someone who has a similar extensive knowledge, but won't | be ideal for someone who is mostly interested in it as a | tool and doesn't want to learn its innards. | a9h74j wrote: | IIRC older projects of 3b1b don't necessarily build with | later, evolving versions of 3b1b Manim. There might be | some mix of versioning questions mixed in with branding | questions. | sitkack wrote: | Someone please correct me if I am wrong (always, but am extra | asking for it), is that the main 3b1b/manim is really just for | Grant and folks in making his videos, and while he did open | source it, he isn't interested in running a big OSS project. | | To me this really shows the power of OSS, and that one can | "take ownership" of their destiny through forking and that it | doesn't need to be adversarial. | | In many ways, ideas are much more powerful than code. That code | itself can be a thought terminating thing, by making ideas | reified, it also instantly constructs an Overton Window or | maybe a Chesteron's Fence, or maybe a Winchester House. A | Knot's Berry Farm of technical debt built on soggy metaphors. | davidscolgan wrote: | Yes, I've heard him say in a few places in his videos that he | gives his blessing to this fork and encourages its use over | his own repo for that exact reason. | ngmc wrote: | Shameless plug: I'm mentoring a student who is building a | beginner-friendly version of manim on top of p5.js for his Google | Summer of Code Project - check it out! | | https://two-ticks.github.io/p5.teach.js/ | | https://discourse.processing.org/t/animating-maths-in-p5-js | liorben-david wrote: | Love 3b1b, glad someone made a fork of his software | EMM_386 wrote: | 3blue1brown has fantastic videos, I always wondered how they were | created. | | The official Quickstart documents have animations showing how the | transitions work: | | https://docs.manim.community/en/stable/tutorials/quickstart.... | nrjames wrote: | While not Manim generated, I came across this video explaining | Bezier curves yesterday and thought it was pretty awesome. | | https://www.youtube.com/watch?v=aVwxzDHniEw | dmix wrote: | I've noticed a bunch of Youtube channels have really upped | their animation game and mastered how to structure/pace their | videos. Especially the science oriented ones like Kurzgesagt | [1] and Veritasium [2]. It's a really great movement, I'm happy | to see it. 3blue1brown definitely played a role in this in the | early days. | | It reminds me of the way websites evolved around 2005-2010 to | start to take design seriously, not just on specialist web | design sites but on major news sites and search engines, etc. | Part of it was "Web 2.0" and then Bootstrap style CSS | frameworks and the maturity of browsers as IE6 died off. | | 1. https://www.youtube.com/user/Kurzgesagt | | 2. https://www.youtube.com/channel/UCHnyfMqiRRG1u-2MsSQLbXA | jameshart wrote: | Grant from 3b1b is actually explicitly encouraging people to | try to make more mathematical education videos this summer | [1] - and Freya Holmer cites that as being what encouraged | her to expand from little gif explanations into a full-length | exposition video for that piece on Bezier curves, so this is | all connected! | | And in the spirit of sharing a bit of the 'how it's done' - | obviously while Grant uses Manim, Freya uses Unity3D and her | 'Shapes' library [2] to produce her visualizations - she also | streams a lot of her dev work so if you want to follow along | with how it's done, that's another avenue to look at. | | 1: https://www.3blue1brown.com/blog/some1 | | 2: https://assetstore.unity.com/packages/tools/particles- | effect... | mdoms wrote: | Fantastic animation, thanks for sharing. | longas wrote: | I believe that video has been animated in Unity, she is the | creator of https://acegikmo.com/shapes/. | lifeisstillgood wrote: | I look at this (and most animated video) and think I _ought_ to | be able to use this in my boring grey corporate life - but maths | at management levels rarely peeks above a std dev. I wonder how | to raise the game? | bee_rider wrote: | Synergy is just the management way of saying covariance, right? | Surely you can introduce some more advanced statistics | concepts. ___________________________________________________________________ (page generated 2021-08-20 23:00 UTC)