Manimを使い始める

スポンサーリンク
Uncategorized

はじめに

Manimというオープンソースのアニメーションエンジンがあります。

大人気youtubeチャンネルの3BlueBrownの動画で使われていることで有名です。

以下はそのチャンネルです。

3Blue1Brown
My name is Grant Sanderson. Videos here cover a variety of topics in math, or adjacent fields like physics and CS, all w

というのもこのチャンネルの運営者の方によって作成されたオープンソースのエンジンになります。

僕もこの3BlueBrownの動画の虜になった一人なので、自分でも動画を作ってみたいと思いました。

今回はインストールをしてみて、試しに動画を作成した記録です。

インストール

まずはインストールから。

以下のサイトを参考にさせていただきました。

manimの環境構築と使用方法|Meta!Perceptio

pythonがwindowsにインストールされている状態を前提としています。

まず、powershellでmanimをインストールします。

> pip install manim

以下のmanimのpathを環境変数に設定するようなのですが、僕の環境では設定しなくても動きました。。(<ユーザー名>のところは自分の環境に合わせて変更してください)

C:\Users\<ユーザー名>\AppData\Local\Programs\Python\\Lib\site-packages\manim

ためしに実行

manimを試してみたいと思います。

from manim import *

class PointMovingOnShapes(Scene):
    def construct(self):

        # 地球(中央)
        earth = Circle(radius=1, color=BLUE).set_fill(BLUE_E, opacity=1)
        earth_label = Text("Earth", font_size=16).next_to(earth, DOWN)
        self.add(earth, earth_label)

        moon = Dot(color=GRAY).move_to(RIGHT * 2.5)
        moon_label = Text("Moon", font_size=16).next_to(moon, UP)

        self.add(moon, moon_label)

        # 月だけを回転させるアップデーター
        def update_moon(mob, dt):
            mob.rotate(dt * PI, about_point=ORIGIN)

        moon.add_updater(update_moon)

        # ラベルの位置は常に月に追従するが、ラベル自体は回転しない
        def update_label(label):
            label.next_to(moon, UP)

        moon_label.add_updater(update_label)

        self.wait(4)

        # 最後にアップデーターを止める(必要なら)
        moon.remove_updater(update_moon)
        moon_label.remove_updater(update_label)

実行は

manim <ファイル名> <クラス名> 

のように実行するので、以下のように実行します。

> manim .\orbit.py PointMovingOnShapes

動画は実行したファイルから見て

media\videos\<ファイル名>\1080p60

配下に保存されます。

ちなみに「-i」を付けて、

> manim .\orbit.py PointMovingOnShapes -i

だとgifで保存できます。

では、できた動画を見てみましょう。

以下のようなファイルが出力されていました。

月が地球の周りを回っていますね!

最後に

manimで地球の周囲を回る月を表現することができました。

タイトルとURLをコピーしました