Перейти к основному содержимому

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/OffmpegСклейка сцен, конвертация форматов, мультиплексирование аудио
TTSElevenLabs / Qwen3-TTS (опционально)Озвучка голосом

Конвейер​

ПЛАН --> КОД --> РЕНДЕР --> СКЛЕЙКА --> АУДИО (опционально) --> ПРОВЕРКА
  1. ПЛАН — Напишите plan.md с повествовательной дугой, списком сцен, визуальными элементами, цветовой палитрой, сценарием озвучки
  2. КОД — Напишите script.py с одним классом на сцену, каждая сцена рендерится независимо
  3. РЕНДЕР — manim -ql script.py Scene1 Scene2 ... для черновика, -qh для финальной версии
  4. СКЛЕЙКА — Склейка клипов сцен через ffmpeg в final.mp4
  5. АУДИО (опционально) — Добавьте озвучку и/или фоновую музыку через ffmpeg. См. references/rendering.md
  6. ПРОВЕРКА — Рендер превью-стоп-кадров, сверка с планом, корректировка

Структура проекта​

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_timeself.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 (черновик)854x480155-15 с/сцена
-qm (среднее)1280x7203015-60 с/сцена
-qh (финальное)1920x10806030-120 с/сцена

Всегда итерируйте на -ql. Рендерите -qh только для финального вывода.

Справочники​

ФайлСодержание
references/animations.mdОсновные анимации, функции скорости, композиция, синтаксис .animate, паттерны тайминга
references/mobjects.mdТекст, фигуры, VGroup/Group, позиционирование, стилизация, пользовательские mobject'ы
references/visual-design.md12 принципов дизайна, наслоение прозрачности, шаблоны компоновки, цветовые палитры
references/equations.mdLaTeX в Manim, TransformMatchingTex, паттерны вывода
references/graphs-and-data.mdОси, построение графиков, BarChart, анимированные данные, визуализация алгоритмов
references/camera-and-3d.mdMovingCameraScene, 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.mdValueTracker, add_updater, always_redraw, обновления на основе времени, паттерны
references/paper-explainer.mdПревращение научных статей в анимации — рабочий процесс, шаблоны, предметные паттерны
references/decorations.mdSurroundingRectangle, Brace, стрелки, DashedLine, Angle, жизненный цикл аннотаций
references/production-quality.mdЧек-листы до кода, до рендера, после рендера, пространственная компоновка, цвет, темп

Творческое отклонение (используйте только когда пользователь запрашивает экспериментальный/креативный/уникальный вывод)​

Если пользователь просит креативный, экспериментальный или нестандартный объяснительный подход, выберите стратегию и обоснуйте её ДО разработки анимации.

  • SCAMPER — когда пользователь хочет свежего взгляда на стандартное объяснение
  • Обращение допущений — когда пользователь хочет оспорить то, как что-то обычно преподаётся

Трансформация SCAMPER​

Возьмите стандартную математическую/техническую визуализацию и трансформируйте её:

  • Substitute (Заменить): замените стандартную визуальную метафору (числовая линия → извилистый путь, матрица → городская сетка)
  • Combine (Объединить): объедините два подхода к объяснению (алгебраический + геометрический одновременно)
  • Reverse (Обратить): выводите в обратном порядке — начните с результата и деконструируйте до аксиом
  • Modify (Изменить): преувеличьте параметр, чтобы показать, почему он важен (10x скорость обучения, 1000x размер выборки)
  • Eliminate (Устранить): удалите все обозначения — объясняйте исключительно через анимацию и пространственные отношения

Обращение допущений​

  1. Перечислите, что «стандартно» в визуализации этой темы (слева направо, 2D, дискретные шаги, формальные обозначения)
  2. Выберите самое фундаментальное допущение
  3. Обратите его (вывод справа налево, 3D-вложение 2D-концепции, непрерывный морфинг вместо шагов, ноль обозначений)
  4. Исследуйте, что обращение раскрывает такого, что скрывает стандартный подход