Manim Video
Анимации Manim CE: математические/алгоритмические видео в стиле 3Blue1Brown.
Метаданные навыка
| Источник | Встроенный (устанавливается по умолчанию) |
| Путь | skills/creative/manim-video |
| Версия | 1.0.0 |
| Платформы | linux, macos, windows |
Справочник: полный SKILL.md
Ниже приведено полное описание навыка, которое VibeOS загружает при его активации. Это инструкции, которые видит агент, когда навык активен.
Конвейер производства видео Manim
Когда использовать
Используйте, когда пользователи запрашивают: анимированные объяснения, математические анимации, визуализацию концепций, пошаговые алгоритмы, технические пояснения, видео в стиле 3Blue1Brown или любую программную анимацию с геометрическим/математическим содержанием. Создаёт объясняющие видео в стиле 3Blue1Brown, визуализации алгоритмов, вывод уравнений, диаграммы архитектур и истории на основе данных с помощью Manim Community Edition.
Творческий стандарт
Это образовательное кино. Каждый кадр учит. Каждая анимация раскрывает структуру.
Прежде чем написать хотя бы одну строку кода, сформулируйте повествовательную дугу. Какое заблуждение это исправляет? В чём «момент озарения»? Какая визуальная история ведёт зрителя от непонимания к пониманию? Запрос пользователя — это отправная точка; интерпретируйте её с педагогической амбициозностью.
Геометрия до алгебры. Сначала покажите форму, потом уравнение. Визуальная память кодируется быстрее символической. Когда зритель видит геометрический паттерн до формулы, уравнение кажется заслуженным.
Превосходство с первого рендера — обязательно. Вывод должен быть визуально чётким и эстетически целостным без итераций доработки. Если что-то выглядит загромождённым, плохо синхронизированным или как «слайды, сгенерированные ИИ», это неправильно.
Наслоение прозрачности направляет внимание. Никогда не показывайте всё с полной яркостью. Основные элементы — 1.0, контекстные — 0.4, структурные (оси, сетки) — 0.15. Мозг обрабатывает визуальную значимость слоями.
Пространство для дыхания. После каждой анимации нужен self.wait(). Зрителю нужно время, чтобы усвоить только что появившееся. Никогда не переходите от одной анимации к другой в спешке. Пауза в 2 секунды после ключевого открытия никогда не бывает лишней.
Целостный визуальный язык. Все сцены используют единую цветовую палитру, согласованный размер шрифта, одинаковую скорость анимации. Технически правильное видео, где каждая сцена использует случайные разные цвета, — это эстетическая неудача.
Предварительные требования
Запустите scripts/setup.sh, чтобы проверить все зависимости. Требуется: Python 3.10+, Manim Community Edition v0.20+ (pip install manim), LaTeX (texlive-full на Linux, mactex на macOS) и ffmpeg. Справочная документация протестирована с Manim CE v0.20.1.
Режимы
| Режим | Ввод | Вывод | Справочник |
|---|---|---|---|
| Объяснение концепции | Тема/концепция | Анимированное объяснение с геометрической интуицией | references/scene-planning.md |
| Вывод уравнения | Математические выражения | Пошаговое анимированное доказательство | references/equations.md |
| Визуализация алгоритма | Описание алгоритма | Пошаговое выполнение со структурами данных | references/graphs-and-data.md |
| История данных | Данные/метрики | Анимированные графики, сравнения, счётчики | references/graphs-and-data.md |
| Диаграмма архитектуры | Описание системы | Компоненты, собирающиеся с соединениями | references/mobjects.md |
| Объяснение статьи | Научная статья | Анимированные ключевые результаты и методы | references/scene-planning.md |
| 3D-визуализация | 3D-концепция | Вращающиеся поверхности, параметрические кривые, пространственная геометрия | references/camera-and-3d.md |
Стек
Один Python-скрипт на проект. Не требует браузера, Node.js или GPU.
| Слой | Инструмент | Назначение |
|---|---|---|
| Ядро | Manim Community Edition | Рендеринг сцен, движок анимации |
| Математика | LaTeX (texlive/MiKTeX) | Рендеринг уравнений через MathTex |
| Видео I/O | ffmpeg | Склейка сцен, конвертация форматов, мультиплексирование аудио |
| TTS | ElevenLabs / Qwen3-TTS (опционально) | Озвучка голосом |
Конвейер
ПЛАН --> КОД --> РЕНДЕР --> СКЛЕЙКА --> АУДИО (опционально) --> ПРОВЕРКА
- ПЛАН — Напишите
plan.mdс повествовательной дугой, списком сцен, визуальными элементами, цветовой палитрой, сценарием озвучки - КОД — Напишите
script.pyс одним классом на сцену, каждая сцена рендерится независимо - РЕНДЕР —
manim -ql script.py Scene1 Scene2 ...для черновика,-qhдля финальной версии - СКЛЕЙКА — Склейка клипов сцен через ffmpeg в
final.mp4 - АУДИО (опционально) — Добавьте озвучку и/или фоновую музыку через ffmpeg. См.
references/rendering.md - ПРОВЕРКА — Рендер превью-стоп-кадров, сверка с планом, корректировка
Структура проекта
project-name/
plan.md # Повествовательная дуга, разбивка сцен
script.py # Все сцены в одном файле
concat.txt # Список сцен для ffmpeg
final.mp4 # Склеенный вывод
media/ # Автоматически генерируется Manim
videos/script/480p15/
Творческое направление
Цветовые палитры
| Палитра | Фон | Основной | Вторичный | Акцент | Сценарий использования |
|---|---|---|---|---|---|
| Классическая 3B1B | #1C1C1C | #58C4DD (СИНИЙ) | #83C167 (ЗЕЛЁНЫЙ) | #FFFF00 (ЖЁЛТЫЙ) | Общая математика/CS |
| Тёплая академическая | #2D2B55 | #FF6B6B | #FFD93D | #6BCB77 | Дружелюбная |
| Неоновая техно | #0A0A0A | #00F5FF | #FF00FF | #39FF14 | Системы, архитектура |
| Монохромная | #1A1A2E | #EAEAEA | #888888 | #FFFFFF | Минималистичная |
Скорость анимации
| Контекст | run_time | self.wait() после |
|---|---|---|
| Появление заголовка/интро | 1.5с | 1.0с |
| Раскрытие ключевого уравнения | 2.0с | 2.0с |
| Трансформация/морфинг | 1.5с | 1.5с |
| Вспомогательная подпись | 0.8с | 0.5с |
| FadeOut очистка | 0.5с | 0.3с |
| Раскрытие «момента озарения» | 2.5с | 3.0с |
Шкала типографики
| Роль | Размер шрифта | Использование |
|---|---|---|
| Заголовок | 48 | Заголовки сцен, вступительный текст |
| Рубрика | 36 | Заголовки разделов внутри сцены |
| Основной текст | 30 | Пояснительный текст |
| Подпись | 24 | Аннотации, подписи осей |
| Подпись мелкая | 20 | Субтитры, мелкий шрифт |
Шрифты
Используйте моноширинные шрифты для всего текста. Рендерер Pango в Manim даёт сломанный кернинг с пропорциональными шрифтами любого размера. Полные рекомендации см. в references/visual-design.md.
MONO = "Menlo" # определить один раз в начале файла
Text("Ряды Фурье", font_size=48, font=MONO, weight=BOLD) # заголовки
Text("n=1: sin(x)", font_size=20, font=MONO) # подписи
MathTex(r"\nabla L") # математика (использует LaTeX)
Минимальный font_size=18 для читаемости.
Вариация между сценами
Никогда не используйте одинаковую конфигурацию для всех сцен. Для каждой сцены:
- Другой доминирующий цвет из палитры
- Другая компоновка — не центрируйте всё постоянно
- Другой способ появления — чередуйте Write, FadeIn, GrowFromCenter, Create
- Разный визуальный вес — одни сцены плотные, другие разреженные
Рабочий процесс
Шаг 1: План (plan.md)
Прежде чем писать код, напишите plan.md. Полный шаблон см. в references/scene-planning.md.
Шаг 2: Код (script.py)
Один класс на сцену. Каждая сцена рендерится независимо.
from manim import *
BG = "#1C1C1C"
PRIMARY = "#58C4DD"
SECONDARY = "#83C167"
ACCENT = "#FFFF00"
MONO = "Menlo"
class Scene1_Introduction(Scene):
def construct(self):
self.camera.background_color = BG
title = Text("Почему это работает?", font_size=48, color=PRIMARY, weight=BOLD, font=MONO)
self.add_subcaption("Почему это работает?", duration=2)
self.play(Write(title), run_time=1.5)
self.wait(1.0)
self.play(FadeOut(title), run_time=0.5)
Ключевые паттерны:
- Субтитры для каждой анимации:
self.add_subcaption("текст", duration=N)илиsubcaption="текст"вself.play() - Общие константы цветов в начале файла для согласованности между сценами
self.camera.background_colorзадаётся в каждой сцене- Чистый выход — FadeOut всех mobject'ов в конце сцены:
self.play(FadeOut(Group(*self.mobjects)))
Шаг 3: Рендер
manim -ql script.py Scene1_Introduction Scene2_CoreConcept # черновик
manim -qh script.py Scene1_Introduction Scene2_CoreConcept # финальная версия
Шаг 4: Склейка
cat > concat.txt << 'EOF'
file 'media/videos/script/480p15/Scene1_Introduction.mp4'
file 'media/videos/script/480p15/Scene2_CoreConcept.mp4'
EOF
ffmpeg -y -f concat -safe 0 -i concat.txt -c copy final.mp4
Шаг 5: Проверка
manim -ql --format=png -s script.py Scene2_CoreConcept # превью-стоп-кадр
Критические замечания по реализации
Сырые строки для LaTeX
# НЕПРАВИЛЬНО: MathTex("\frac{1}{2}")
# ПРАВИЛЬНО:
MathTex(r"\frac{1}{2}")
buff >= 0.5 для текста у края
label.to_edge(DOWN, buff=0.5) # никогда не < 0.5
FadeOut перед заменой текста
self.play(ReplacementTransform(note1, note2)) # не Write(note2) поверх
Никогда не анимируйте недобавленные mobject'ы
self.play(Create(circle)) # сначала нужно добавить
self.play(circle.animate.set_color(RED)) # потом анимировать
Целевые показатели производительности
| Качество | Разрешение | FPS | Скорость |
|---|---|---|---|
-ql (черновик) | 854x480 | 15 | 5-15 с/сцена |
-qm (среднее) | 1280x720 | 30 | 15-60 с/сцена |
-qh (финальное) | 1920x1080 | 60 | 30-120 с/сцена |
Всегда итерируйте на -ql. Рендерите -qh только для финального вывода.
Справочники
| Файл | Содержание |
|---|---|
references/animations.md | Основные анимации, функции скорости, композиция, синтаксис .animate, паттерны тайминга |
references/mobjects.md | Текст, фигуры, VGroup/Group, позиционирование, стилизация, пользовательские mobject'ы |
references/visual-design.md | 12 принципов дизайна, наслоение прозрачности, шаблоны компоновки, цветовые палитры |
references/equations.md | LaTeX в Manim, TransformMatchingTex, паттерны вывода |
references/graphs-and-data.md | Оси, построение графиков, BarChart, анимированные данные, визуализация алгоритмов |
references/camera-and-3d.md | MovingCameraScene, ThreeDScene, 3D-поверхности, управление камерой |
references/scene-planning.md | Повествовательные дуги, шаблоны компоновки, переходы между сценами, шаблон планирования |
references/rendering.md | Справочник CLI, пресеты качества, ffmpeg, рабочий процесс озвучки, экспорт GIF |
references/troubleshooting.md | Ошибки LaTeX, ошибки анимации, частые ошибки, отладка |
references/animation-design-thinking.md | Когда анимировать, а когда показывать статику, декомпозиция, темп, синхронизация с озвучкой |
references/updaters-and-trackers.md | ValueTracker, add_updater, always_redraw, обновления на основе времени, паттерны |
references/paper-explainer.md | Превращение научных статей в анимации — рабочий процесс, шаблоны, предметные паттерны |
references/decorations.md | SurroundingRectangle, Brace, стрелки, DashedLine, Angle, жизненный цикл аннотаций |
references/production-quality.md | Чек-листы до кода, до рендера, после рендера, пространственная компоновка, цвет, темп |
Творческое отклонение (используйте только когда пользователь запрашивает экспериментальный/креативный/уникальный вывод)
Если пользователь просит креативный, экспериментальный или нестандартный объяснительный подход, выберите стратегию и обоснуйте её ДО разработки анимации.
- SCAMPER — когда пользователь хочет свежего взгляда на стандартное объяснение
- Обращение допущений — когда пользователь хочет оспорить то, как что-то обычно преподаётся
Трансформация SCAMPER
Возьмите стандартную математическую/техническую визуализацию и трансформируйте её:
- Substitute (Заменить): замените стандартную визуальную метафору (числовая линия → извилистый путь, матрица → городская сетка)
- Combine (Объединить): объедините два подхода к объяснению (алгебраический + геометрический одновременно)
- Reverse (Обратить): выводите в обратном порядке — начните с результата и деконструируйте до аксиом
- Modify (Изменить): преувеличьте параметр, чтобы показать, почему он важен (10x скорость обучения, 1000x размер выборки)
- Eliminate (Устранить): удалите все обозначения — объясняйте исключительно через анимацию и пространственные отношения
Обращение допущений
- Перечислите, что «стандартно» в визуализации этой темы (слева направо, 2D, дискретные шаги, формальные обозначения)
- Выберите самое фундаментальное допущение
- Обратите его (вывод справа налево, 3D-вложение 2D-концепции, непрерывный морфинг вместо шагов, ноль обозначений)
- Исследуйте, что обращение раскрывает такого, что скрывает стандартный подход