motion-graphics について
タイトルやイントロなどのアニメーション制作に使うモーショングラフィックススキルです。デザイン原則、タイミングとイージングの資料、カラーパレット、Manim のテンプレートを提供します。
主な機能
- 01モーションデザインの原則と基礎
- 02キネティックタイポグラフィとタイミングのルール
- 03再利用可能な Manim アニメーションテンプレート
- 04イージング関数のリファレンス
- 05カラーパレットの例
活用シーン
- 01タイトルシーケンスやイントロの制作
- 02単語ごとのテキストアニメーション
- 03ロゴのリビールやグリッチ効果の作成
- 04イージングを使ったカウンターのデザイン
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rohitg00/ manim-video-generator --skill motion-graphicsインストール後、Claude Code で/motion-graphicsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
presets/animation-presets.pycolor-palettes.pythumbnail-presets.pyrules/audio-sync.mdbrand-consistency.mdcommunity-edition-patterns.mdkinetic-typography.mdopengl-renderer-patterns.mdtiming-and-easing.mdvisual-hierarchy.mdweb-export.md詳細
モーショングラフィックススキル
モーショングラフィックススキルは、美しさを重視した視覚的に印象的なアニメーションを作成します。タイトル、イントロ、注目を集めるコンテンツに最適です。
デザインの原則
モーショングラフィックスの4つのS
- スタイル:全体を通じて一貫したビジュアル表現
- サプライズ:見る人を楽しませる意外な動き
- 滑らかさ:流れるようなトランジションとイージング
- シンプルさ:すっきりとしたデザインで、視覚的な煩雑さを避ける
モーションデザインの基本
- 予備動作:主要な動きの前に加える小さな動き
- フォロースルー:停止した後も要素が動き続けること
- オーバーシュート:目標を通り過ぎてから、所定の位置に収まる動き
- スクワッシュ&ストレッチ:重さや衝撃を強調すること
ルール
rules/kinetic-typography.md
感情を伝える、印象的なテキストアニメーションの作成方法です。
rules/timing-and-easing.md
プロ品質のイージングカーブとタイミングパターンです。
rules/visual-hierarchy.md
サイズ、色、動きを通じて注意を誘導します。
rules/brand-consistency.md
アニメーション全体で一貫したスタイルを保ちます。
テンプレート
キネティックタイポグラフィ - 単語ごと
from manim import *
class KineticTypography(Scene):
def construct(self):
self.camera.background_color = "#1a1a2e"
words = ["The", "Future", "Is", "NOW"]
colors = [WHITE, BLUE, WHITE, YELLOW]
for word, color in zip(words, colors):
text = Text(word, font_size=96, color=color, weight=BOLD)
# Dramatic entrance
text.scale(0)
self.add(text)
self.play(
text.animate.scale(1),
rate_func=rate_functions.ease_out_back,
run_time=0.4
)
self.wait(0.3)
# Exit with style
self.play(
text.animate.shift(UP * 2).set_opacity(0),
rate_func=rate_functions.ease_in_cubic,
run_time=0.3
)
self.remove(text)
# Final combination
final = Text("THE FUTURE IS NOW", font_size=48, color=GOLD)
self.play(Write(final), run_time=1)
self.play(Indicate(final, scale_factor=1.1, color=WHITE))
ロゴのリビール - パーティクルの組み立て
from manim import *
import random
class LogoReveal(Scene):
def construct(self):
self.camera.background_color = "#0a0a0a"
# Create logo text
logo = Text("BRAND", font_size=120, color=WHITE, weight=BOLD)
# Create particles that will form the logo
particles = VGroup()
for _ in range(100):
dot = Dot(
point=[random.uniform(-7, 7), random.uniform(-4, 4), 0],
radius=0.05,
color=random_color()
)
particles.add(dot)
self.add(particles)
# Swirl particles
self.play(
*[Rotating(p, radians=PI * 2, about_point=ORIGIN)
for p in particles],
run_time=1.5,
rate_func=rate_functions.ease_in_out_sine
)
# Converge to logo position
self.play(
FadeOut(particles),
FadeIn(logo, scale=0.5),
run_time=0.8
)
# Glow effect
glow = logo.copy().set_color(BLUE).set_opacity(0.5)
self.play(
glow.animate.scale(1.2).set_opacity(0),
run_time=0.5
)
self.remove(glow)
self.wait()
タイトルシーケンス - スライド&スタック
from manim import *
class TitleSequence(Scene):
def construct(self):
self.camera.background_color = "#16213e"
# Main title
title = Text("EPISODE ONE", font_size=72, color=WHITE)
subtitle = Text("The Beginning", font_size=36, color=BLUE_C)
# Slide in from sides
title.shift(LEFT * 10)
subtitle.shift(RIGHT * 10)
self.add(title, subtitle)
self.play(
title.animate.move_to(UP * 0.5),
subtitle.animate.move_to(DOWN * 0.5),
run_time=0.8,
rate_func=rate_functions.ease_out_cubic
)
# Add decorative lines
line_left = Line(LEFT * 3, LEFT * 0.5, color=GOLD, stroke_width=2)
line_right = Line(RIGHT * 0.5, RIGHT * 3, color=GOLD, stroke_width=2)
lines = VGroup(line_left, line_right).next_to(title, UP, buff=0.3)
self.play(
Create(line_left),
Create(line_right),
run_time=0.5
)
# Fade all together
self.wait(2)
self.play(
FadeOut(VGroup(title, subtitle, lines), shift=UP),
run_time=0.6
)
テキストグリッチ効果
from manim import *
class GlitchText(Scene):
def construct(self):
self.camera.background_color = "#000000"
text = Text("GLITCH", font_size=96, color=WHITE, weight=BOLD)
# Create glitch copies
red_copy = text.copy().set_color(RED).shift(LEFT * 0.05 + UP * 0.02)
blue_copy = text.copy().set_color(BLUE).shift(RIGHT * 0.05 + DOWN * 0.02)
self.add(red_copy, blue_copy, text)
# Glitch animation
for _ in range(5):
# Random offset
self.play(
red_copy.animate.shift(RIGHT * 0.1),
blue_copy.animate.shift(LEFT * 0.1),
run_time=0.05
)
self.play(
red_copy.animate.shift(LEFT * 0.1),
blue_copy.animate.shift(RIGHT * 0.1),
run_time=0.05
)
# Settle
self.play(
red_copy.animate.move_to(text.get_center()),
blue_copy.animate.move_to(text.get_center()),
run_time=0.2
)
self.remove(red_copy, blue_copy)
self.wait()
カウンターアニメーション
from manim import *
class CounterAnimation(Scene):
def construct(self):
self.camera.background_color = "#1a1a2e"
# Value tracker
counter = ValueTracker(0)
# Dynamic text
number = always_redraw(lambda: Text(
f"{int(counter.get_value()):,}",
font_size=120,
color=WHITE,
weight=BOLD
))
label = Text("SUBSCRIBERS", font_size=32, color=BLUE_C)
label.next_to(number, DOWN, buff=0.5)
self.add(number, label)
# Animate count
self.play(
counter.animate.set_value(1000000),
run_time=3,
rate_func=rate_functions.ease_out_cubic
)
# Celebration effect
self.play(
Indicate(number, scale_factor=1.2, color=GOLD),
run_time=0.5
)
イージング関数リファレンス
| 効果 | レート関数 | 使用例 |
|---|---|---|
| 滑らか | smooth | 汎用 |
| ドラマチックな登場 | ease_out_back | ポップイン効果 |
| 穏やかな退出 | ease_in_cubic | フェードアウト |
| バウンス | ease_out_bounce | 遊び心のある動き |
| キビキビした動き | ease_out_expo | 素早く、印象的な動き |
| 自然 | ease_in_out_sine | 有機的な動き |
| リニア | linear | 一定の速度 |
カラーパレット
ネオン・サイバーパンク
NEON_PINK = "#ff00ff"
NEON_BLUE = "#00ffff"
NEON_GREEN = "#00ff00"
DARK_BG = "#0a0a0a"
コーポレート・プロフェッショナル
CORP_BLUE = "#0066cc"
CORP_GRAY = "#333333"
CORP_WHITE = "#ffffff"
CORP_ACCENT = "#ff6600"
ミニマル・モダン
MIN_BLACK = "#1a1a1a"
MIN_WHITE = "#f5f5f5"
MIN_GRAY = "#888888"
MIN_ACCENT = "#3366ff"
ベストプラクティス
- 控えめが効果的です - 抑制することで、重要な瞬間が際立ちます
- タイミングがすべてです - タイミングを誤ると、良いアニメーションも台無しになります
- 一貫性が信頼を築きます - 全体を通じて同じスタイルを保ちます
- サウンドデザインも重要です - 音声を考慮してデザインします
- 対象プラットフォームでテストします - デバイスによって体験は異なります
コメント
Markdown 対応