关于 3b1b-style-animation
3b1b-style-animation 是用于 Manim(ManimCE)的动画创作技能,面向数学动画、可视化和教育视频制作。它提供场景、动画、布局、音画同步及教学设计方面的模式和规则。
主要功能
- 01提供 Manim 场景模板
- 02指导动画效果与文本变换
- 03规定颜色、布局和元素间距
- 04支持图表、方程与 3D 曲面内容
- 05提供音画同步规则
- 06强调先建立直觉再形式化
适用场景
- 01制作数学概念动画
- 02构建图表或 3D 曲面可视化
- 03制作与音频同步的场景
- 04按直觉到形式化的顺序讲解概念
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ subinium/ 3b1b-style-animation-skill --skill 3b1b-style-animation安装后在 Claude Code 中输入/3b1b-style-animation确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
rules/3d-surfaces.mdanimation-patterns.mdaudio-sync.mdcamera-work.mdcolor-scheme.mdequations.mdgraphs.mdlayout-spacing.mdmanim-setup.mdmobject-grouping.mdpedagogy.mdscene-basics.mdseamless-transitions.mdstrict-sync.mdtext-transforms.mdupdaters.mdvisual-quality.md详细介绍
使用时机
使用 Manim(ManimCE)创建数学动画、可视化内容或教育视频时,请使用此技能。
快速参考(核心模式)
颜色
BG = "#1c1c1c" # Background (MUST use)
BLUE = "#3b82f6" # Primary, nodes
YELLOW = "#fbbf24" # Highlights, emphasis
GREEN = "#22c55e" # Success, done, positive
RED = "#ef4444" # Error, negative
GRAY = "#9ca3af" # Inactive, labels
场景模板
from manim import *
class MyScene(Scene):
def construct(self):
self.camera.background_color = "#1c1c1c"
# Your code here
self.wait(2) # End padding
音频同步场景(StrictSync)
TIMING = {
"01": {"start": 0, "end": 5.5},
"02": {"start": 5.5, "end": 10.0},
}
class SyncedScene(Scene):
def construct(self):
self.camera.background_color = "#1c1c1c"
for seg_id in sorted(TIMING.keys()):
method = getattr(self, f"seg_{seg_id}", None)
if method:
self._run(seg_id, method)
self.wait(2)
def _run(self, seg_id, method):
t = TIMING[seg_id]
target = t["end"] - t["start"]
start = self.renderer.time
method()
elapsed = self.renderer.time - start
if elapsed < target:
self.wait(target - elapsed)
def seg_01(self):
pass # Your animation
动画模式
# Cascading appear
self.play(LaggedStartMap(FadeIn, VGroup(*items), lag_ratio=0.15), run_time=1)
# Highlight
self.play(Flash(mob, color=YELLOW, line_length=0.2), run_time=0.3)
self.play(Indicate(mob, color=YELLOW), run_time=0.5)
# Transform text
self.play(TransformMatchingStrings(old_text, new_text), run_time=0.5)
# Coordinated (not sequential)
self.play(FadeIn(a), Create(b), Write(c), run_time=1) # Good
# self.play(FadeIn(a)); self.play(Create(b)) # Bad
布局
# Screen zones
title.to_edge(UP, buff=0.5)
content.move_to(ORIGIN)
info.to_edge(DOWN, buff=0.8)
sidebar.to_edge(RIGHT, buff=1.0)
# Spacing constants
NODE_GAP = 1.5 # Minimum between nodes
EDGE_LABEL_OFFSET = 0.22 # Perpendicular to edge
# Edge label placement
mid = line.get_center()
direction = end - start
perp = np.array([-direction[1], direction[0], 0])
perp = perp / np.linalg.norm(perp) * 0.22
label.move_to(mid + perp)
图形创建模式
self.node_to_circle = {} # Dictionary mapping
for name, pos in positions.items():
circle = Circle(radius=0.3, color=BLUE, fill_opacity=0.5, stroke_width=2)
circle.move_to(pos)
self.node_to_circle[name] = circle
教学法(3b1b 风格)
1. HOOK: Pose interesting question
2. INTUITION: Visual understanding (NO formulas yet)
3. STEP-BY-STEP: Concrete example with numbers
4. FORMALIZATION: NOW introduce formula/name
规则(详细参考)
设置与基础
- rules/manim-setup.md - 安装
- rules/scene-basics.md - 场景结构
- rules/color-scheme.md - 完整配色方案
动画
- rules/animation-patterns.md - LaggedStartMap、状态保存与恢复
- rules/text-transforms.md - TransformMatchingStrings
- rules/updaters.md - 用于动态运动的 add_updater
- rules/seamless-transitions.md - 平滑过渡
布局与视觉效果
- rules/layout-spacing.md - 间距、屏幕区域
- rules/mobject-grouping.md - VGroup 组织方式
- rules/visual-quality.md - 质量检查
- rules/camera-work.md - MovingCameraScene
内容类型
- rules/equations.md - LaTeX、MathTex
- rules/graphs.md - 函数绘图
- rules/3d-surfaces.md - ThreeDScene
音频与同步
- rules/audio-sync.md - 音画同步
- rules/strict-sync.md - StrictSyncScene
理念
- rules/pedagogy.md - 先讲直觉,再讲形式化
必须 / 禁止
必须
- 使用
#1c1c1c作为背景 - 使用
LaggedStartMap实现级联效果 - 用 VGroup + 字典对相关元素分组
- 以
self.wait(2)结束,留出缓冲时间 - 保持 NODE_GAP >= 1.5
- 将边标签垂直于边放置
禁止
- 使用纯黑色(#000000)背景
- 通过单独调用 play() 逐个为元素制作动画
- 将节点放得过近(间距 < 1.5 个单位)
- 尚未建立直觉就展示公式
- 在没有 wait() 的情况下结束 play()
评论
支持 Markdown