manimで簡単アニメーションを作る
はじめに
manimは、、
私もXのポストで見ただけで実は詳細わかってないです✨
ということで、教えてChatGPT!Claude3!!ついでに(?)Gemini!!!
どうしたGeminiちゃんしっかりして…!!
ポンコツなGeminiちゃん回答は見なかったことにして、
manimでアニメーション作りが面白そうだったので
環境構築とか簡単な実装とかまとめたいと思います
相変わらずGoogleColabで作ります
GoobleColabでの実装方法
1) manimのインストール
!apt-get install libpango1.0-dev libcairo2-dev
!pip install manim
まずはmanimをインストール、、
しようとしたところ失敗したので、
必要なパッケージをインストールしつつmanimをいれます
2) アニメーションの記述作成
%%writefile sample.py
from manim import *
import random
import numpy as np
class BackgroundImageScene(Scene):
def construct(self):
# 背景画像を読み込む
background = ImageMobject("test.png") # 実際の画像ファイルのパスに置き換えてください。
background.scale_to_fit_height(config.frame_height)
background.scale_to_fit_width(config.frame_width)
background.to_edge(DOWN, buff=0)
# 背景画像をシーンに追加
self.add(background)
def create_falling_star():
# 星を表すオブジェクト(Starを使用)
star = Star(n=5, color=WHITE).scale(random.uniform(0.05, 0.2))
# 星の開始位置(画面の上部外側のランダムな位置)
start_pos = np.array([random.uniform(-config.frame_width / 2, config.frame_width / 2), config.frame_height * 0.6, 0])
star.move_to(start_pos)
# 星の終了位置(画面の下部へ直線的に移動)
end_pos = start_pos + np.array([random.uniform(-1, 1), -config.frame_height - 1, 0]) # さらに下に移動して画面外へ
# 移動アニメーション
move = star.animate.move_to(end_pos).set_run_time(random.uniform(2, 4))
return move
# 星が画面内に入る前にタイムラグを設定
self.wait(0.5)
# 複数の星を同時に降らせる
stars = [create_falling_star() for _ in range(30)]
self.play(AnimationGroup(*stars, lag_ratio=0.1))
アニメーションはなんでもよいのですが、
えるさんテーマはMVに使えないかなあということで、
イラストを読み込みつつ、星が降るようなアニメーションを目指してみます
ちなみに実装は、以下の感じでChatGPTが頑張りました
簡単!✨
3) 実行
!python -m manim -pqm sample.py BackgroundImageScene
(2)の記述作成のところで実行用記述が「sample.py」に記載されているので、
sample.pyを上記の感じに実行します
4) 動画のプレビュー
from IPython.display import Video
Video("/content/media/videos/sample/720p30/BackgroundImageScene.mp4", embed=True)
実行が上手くいっていれば所定場所に動画が出来ているはずなので
プレビューします
正直なところダウンロードして確認しても良いかも
結果
出来ました!!
まあ正直なところこれぐらいだったら動画編集ソフトで既存のものがありそうですが
ChatGPTに「~を作りたい」程度でサクッと出来ちゃうのは良いですねー
この記事が気に入ったらサポートをしてみませんか?