Сегодня балуюсь с Blender. Началось с чужого ролика, а закончилось тем, что у меня есть тяжёлый боевой робот, собранный целиком кодом, его ходьба с синтезированным звуком и минутное видео с HUD-инфографикой. Работали агенты Claude, а я ставил задачи, приносил референсы и решал, когда остановиться. Ниже разбор по частям, включая то, что не получилось.
Вот итоговое видео (60 секунд, со звуком):
Коротко. Робот сделан Python-скриптами в Blender, без генераторов 3D и скачанных ассетов. Сходство с референсом я мерил цифрами (IoU силуэта). Ходьба на самописной обратной кинематике, 12 шагов, звук шагов синтезирован кодом. Видео собрано на HyperFrames: это HTML-страница с анимацией, которую headless-браузер отрисовывает покадрово. Главная оговорка: никто из нас не слушал звук, а игра в Unity не собрана.
Повод
Я посмотрел ролик Игоря с канала «Студия Игор»: «Opus 5.5, Sonnet 5.5, Astra 6 и Sol 6.1: кто лучше делает игры?». Сорок минут, четырём моделям даётся одна задача: игра про боевых роботов в Unity, всё кодом и без скачанных ассетов. Пять тестов: три робота в Blender по референсу, звуки и музыка кодом, уровень, анимация с обратной кинематикой, сборка игры. По итогам автора Opus 5.5 лучший по качеству, Sonnet дешевле и слабее, GPT-модели дают более «пластиковый» результат.
Мне захотелось повторить и заодно понять, как автор делает инфографику в видео. Скачать ролик не получилось (yt-dlp отказался), так что разбирали по транскрипту и обложке, позже по субтитрам и кадрам. Вывод про графику: она выглядит как HUD меха и, вероятно, сделана кодом на HTML, HyperFrames или Remotion. Автор инструмент не называет, так что это предположение, а не факт.
Референсы: откуда что взялось
Это самое важное для честного рассказа. Референсы принёс я, готовыми картинками: один мех в три четверти спереди (оливковый, ракетные блоки на плечах, кулак слева, двуствольная пушка справа) и позже лист с четырьмя видами: спереди, сзади и два боковых. Агенты Claude референсы не рисовали. Кадры из ролика Игоря я в статью не беру, только ссылку выше.


Виды на листе местами противоречат друг другу: сбоку кулак перекрывает корпус, а сзади корпус уже, чем спереди. Агент сам это заметил. Позже это стало потолком точности: часть расхождения «выбить» нельзя. Зато лист с четырьмя видами дал самый заметный скачок точности по сравнению с одной картинкой.
Модель в Blender
Blender 5.2.2 LTS подключён к Claude через Blender MCP. Часть работы шла вживую в окне, часть в фоне. Робота строил один агент на Opus 5.5, всё процедурно: функции рисуют гранёные плиты с фасками, заклёпки, диски-шарниры, поршни, стволы и ракетные трубы. Материалы тоже процедурные: шум для ржавчины, Voronoi для сколов краски. Попытка взять готовую модель у генератора (Hyper3D Rodin) упёрлась в лимит бесплатного ключа, и я сказал: делай сам.
Иерархия простая и одинаковая во всех версиях: корень, таз, торс (кабина, плечи с ракетными блоками, руки с кулаком и пушкой), ноги из бедра, голени и стопы. Одинаковые имена важны: анимация, написанная под одну версию, переносится на следующую, а в игре робота можно разрушать по частям.
| Версия | Треугольников | Что получилось | Чего не хватало |
|---|---|---|---|
| v1 | 56 636 | Силуэт узнаётся | «Игрушечная»: ноги как стопка подушек, краска слишком чистая |
| v2 | 81 512 | Корпус шире на 22%, ноги выше и толще | Коробчатые формы, мало мелкой механики |
| v3 | 272 761 | Строго по листу «4 вида», силуэт подогнан | Ноги как стопка блоков, пушка как пружина |
| v3.1 | около 245 тыс. | Ноги-колонны из пластин с дисками, ступни из пальцев, гладкая пушка | Цвет серо-голубой вместо грязно-оливкового, меньше механики в щелях |
Я оценил v3.1 словом «Отлично». Агент сам предложил остановиться: дальше каждый проход давал бы 1–2%.
Сходство в цифрах, а не на глаз
Чтобы не судить на глаз, агент рендерил модель с тех же четырёх сторон (ортографическая камера, прозрачный фон) и сравнивал силуэт с маской листа. Метрика IoU: площадь пересечения делить на площадь объединения. Цели были: спереди не ниже 0.85, сбоку не ниже 0.80. Плюс сетка сравнения 2×2 рядом с листом.
| Прогон | Спереди | Сзади | Сбоку (кулак) | Сбоку (пушка) |
|---|---|---|---|---|
| v3, итерация 1 | 0.905 | 0.869 | 0.848 | 0.864 |
| v3, финал (9 итераций) | 0.892 | 0.861 | 0.823 | 0.857 |
| v3.1, после 11 итераций | 0.887 | 0.867 | 0.839 | 0.898 |
Любопытно, что после первой итерации цифры v3 упали: мелкие детали рвут силуэт, а остальные итерации ушли на материалы, свет и камеру. Метрика меряет только силуэт. Цвет и детали она не видит, и это легко принять за «почти идеально».


Ходьба и звук
Ходьба
Анимацию делал отдельный агент на Sonnet 5.5, параллельно с моделью. Он работал на v2, потому что v3 ещё строилась, а скрипт управляет объектами по именам. Ключевые кадры ставятся на каждый кадр, а ногами управляет двухзвенная обратная кинематика собственной реализации, не встроенное ограничение Blender. Размеры берутся из самой модели: нога 4.0 м, шаг 2.2 м.
Хореография на 20 секунд (480 кадров, 24 fps): секунда стоит, четыре шага вперёд, остановка, торс влево и вправо на 55°, разворот на 90° шестью мелкими шагами и ещё два шага. Всего 12 касаний земли. Кадры касаний записаны в файл, и дальше он стал расписанием для звука и для вспышек в видео.
Проверки: стопы стоят плоско, под пол не уходят, дрейф опорной стопы порядка 2e-6 м. Слабые места агент назвал сам: стопа приходит на пол резко, около 2.5 м/с, выглядит как удар, а руки раскачиваются слабо.
Звук кодом
Звуки (шаги, поворот торса, гидравлика, а ещё звери и боевая стычка) сделаны на numpy и scipy, без сэмплов и нейросетей: голоса через источник-импульсы и пять формант, металл через банки затухающих резонансов, сервопривод гармониками и FM, пространство через свёрточный реверб. Для ролика ходьбы взяли четыре варианта шага, сервопривод и шипение гидравлики и расставили по кадрам касания: громкость каждого шага случайна (0.61–1.11), высота тона плавает на 2–6%. Расхождение между ударом шага и кадром касания 1–2 мс, мастер -16.9 LUFS.
Честность: ни один агент не слушал звук, и я тоже. Оценки сделаны по спектрограммам и уровням. Металл и шаги, скорее всего, убедительны, а крики людей и зверей, вероятно, слабые, как синтезаторный хор. Качество на слух никем не проверено.
Видео с инфографикой на HyperFrames
Это делал основной агент примерно за час. 60 секунд, 1920×1080, 30 fps.
Как устроен HyperFrames
HyperFrames это открытый фреймворк, где видео равно HTML-странице. Элементы получают атрибуты data-start и data-duration, анимацию ведёт GSAP-таймлайн, а рендерит всё headless-браузер: открывает страницу, ставит таймлайн на кадр N, делает снимок, и так 1800 раз. Сверху ffmpeg склеивает MP4. У меня вся страница в одном файле на 342 строки, GSAP 3.14.2 с CDN. По сути это обычная вёрстка с HTML, CSS и SVG, только время управляется извне.
Из Blender пришли облёт 360° (192 кадра EEVEE: камера на пустышке-пивоте в центре модели с ограничением Track To), четыре рендера v3 и ролик ходьбы.
Шесть сцен и эффекты
- Загрузка. Лог, заголовок с глитчем (RGB-сплит), загрузочная полоса.
- Облёт. SVG-выноски на детали, карточка ТТХ со счётчиками.
- Сверка с референсом. Три ракурса, сканер-линия, счётчики IoU, гистограмма итераций.
- Ходьба. Прицел, радар, эквалайзер, телеметрия.
- Отчёт. Карточки 480 кадров, 12 шагов, 11 итераций, -16.9 LUFS и кольцевая диаграмма.
- Финал с глитчем.
Поверх всего постоянные эффекты: сканлайны, виньетка, бегущая полоса помех.






Синхронизация с шагами
Счётчик шагов, вспышка STEP и тряска кадра привязаны к тем самым 12 кадрам касания из расписания анимации. Не нарисовано «примерно в такт», а взято из данных: если шаг переставить, вспышка поедет вместе с ним. Звук шагов приходит из рендера Blender, к нему добавлен фоновый гул, синтезированный ffmpeg (три синуса 55, 82.5 и 110 Гц).
Два практических правила покадрового видео. Первое: детерминизм. Глитч берёт числа из генератора с фиксированным seed, иначе два рендера дадут разные кадры. Второе: линтер. hyperframes lint нашёл три проблемы (видео внутри тайм-секции, не указан звук у видео, анимация letter-spacing), все исправлены, затем снимки контрольных кадров и полный рендер.
Что в видео настоящее, а что декор
- Реальные цифры: 480 кадров, 12 шагов, 11 итераций, -16.9 LUFS, времена шагов, IoU.
- Декор: ТТХ «9.4 м / 62 т / броня 87%». Рост модели 9.0 м, а массы и брони в ней нет.
Расхождения, которые я нашёл при сверке
- Сцена «ходьба» показывает старую модель v2, а облёт и сверка v3. Ходьба ещё не перенесена на v3.1.
- Цифры IoU в сцене 3 (0.892 / 0.857 / 0.861) взяты из первого прохода v3, а не из финальной v3.1, при этом «11 итераций» в отчёте относятся именно к v3.1.
- Гистограмма итераций собрана из 30 значений, склеенных из нескольких столбцов журнала, а не из одной последовательности. Это визуальный эффект, не график одного показателя.
- «Side 0.857» относится к стороне пушки, сторона кулака была хуже.
Я решил оставить видео как есть и описать эти нестыковки здесь, а не прятать.
Стек
| Слой | Что использовано | Роль |
|---|---|---|
| Модели | Claude Opus 5.5, Claude Sonnet 5.5 | Opus: основной агент и сборка робота; Sonnet: звук, ходьба, установка Unity |
| Попытка генерации 3D | Hyper3D Rodin | Не удалась: лимит бесплатного ключа |
| Агенты | 6 фоновых сабагентов | Модель, звуки, ходьба, Unity, окружение, машины |
| 3D | Blender 5.2.2 LTS, EEVEE, Python (bpy, bmesh) | Модель, свет, анимация, рендер |
| Связь | Blender MCP, MCP for Unity | Управление редакторами из Claude |
| Игровой движок | Unity 6, шаблон URP | Проект создан, FBX робота v2 импортирован |
| Звук | Python: numpy, scipy, pyloudnorm, matplotlib | Синтез, нормализация, спектры |
| Анализ силуэта | Python: numpy, Pillow | IoU, сетки сравнения |
| Видео-инфографика | HyperFrames, GSAP 3.14.2, HTML/CSS/SVG | Шесть сцен HUD |
| Монтаж и звук ролика | ffmpeg | Гул, склейка, версия для Telegram |
| Разбор чужого ролика | yt-dlp, whisper.cpp, ffmpeg | Транскрипт и кадры по сменам сцен |
Сколько это стоило по токенам и подписке, отдельно не считалось.
OpenMontage: установлен, пробовал, но в итоговом ролике его нет
OpenMontage у меня установлен с 2 октября. HUD собран напрямую связкой Claude, HyperFrames, Blender и ffmpeg, а позже я попробовал собрать через OpenMontage весь ролик с голосом: работает, но мелкий текст и шрифт без кириллицы, поэтому в итоге взят только подход к голосу и субтитрам. Это open-source «агентная видеостудия» под лицензией AGPL-3.0: открываешь репозиторий в Claude Code, Codex или Cursor, описываешь ролик словами, а агент проходит цикл «ресёрч, сценарий, ассеты, монтаж, рендер (Remotion, HyperFrames или FFmpeg), самопроверка кадров и звука». Обязательных ключей нет, бесплатный путь есть: Piper TTS и стоки Archive.org и Wikimedia.
Где он был бы полезен здесь:
- склейка рендеров Blender и HUD-слоёв с переходами и миксом звука одной командой;
- автопроверка: обрезанный текст, рассинхрон, тишина;
- субтитры и версии на других языках;
- нарезка вертикальных 9:16 и тизеров из готового минутного ролика;
- озвучка и музыка, если ролик станет объясняющим.
Где не нужен: HUD и рендеры у меня уже идут своим пайплайном, а у OpenMontage свой оркестратор, который с ним конкурирует. Для разового ролика это лишний слой, для потока роликов (канал, клиенты) стоит попробовать. И осторожнее с одноимёнными форками и «зеркалами» со скачиванием.
Озвучка своим голосом и публикация
Минутный HUD-ролик шёл без голоса (только шаги и гул), и я добавил озвучку. Сначала собрал весь ролик в OpenMontage, но там мелкий текст, налезания и шрифт без кириллицы. Поэтому гибрид: картинка из HyperFrames, а голос и субтитры отдельно.
- Сценарий. Шесть реплик под шесть сцен, в конце приглашение в Telegram-канал. Цифры IoU голосом не называю: в картинке они устарели.
- Голос. Клон моего голоса в ElevenLabs, модель
eleven_multilingual_v2, шесть запросов, 587 символов. - Сборка в ffmpeg. Реплики стартуют через 0.3 с после начала сцены. Звук исходного ролика приглушён на 8 дБ и дополнительно проседает под голосом, голос нормализован до -16 LUFS.
- Субтитры. В моём ffmpeg нет фильтров
subtitlesиdrawtext(нет libass и freetype), поэтому строки нарисованы картинками в Pillow и наложены по времени. Недочёт: в сценах с 14 по 42 секунду субтитры лежат поверх гистограммы и эквалайзера. - Telegram. Видео, альбом из пяти фото и пошаговый текст вышли в канале «Рамас. Лаборатория» через скрипт на telethon: сначала черновик на приёмку, потом публикация.
- YouTube. Загрузка через YouTube Studio. Расширение браузера принимает файл до 10 МБ, поэтому ролик пережат двухпроходным x264 (1180 кбит/с, звук 96 кбит/с) до 9.4 МБ в 1080p. Отметка «ИИ использовался: да» нужна из-за клона голоса.
Ролик на YouTube:
Прямая ссылка: youtu.be/j16IRGWEMGc.
Что не получилось и уроки
Не получилось или не доделано:
- Unity-сцена не собрана. Unity 6 и мост установлены, проект создан, FBX v2 импортирован, но пол, свет, камера, управление и сам робот в сцене не расставлены. Игры нет.
- Ходьба сделана на v2, а не на v3.1. Перенос это запуск готового скрипта.
- Окружение и машины. Два агента запущены (блокпост и четыре машины), но файлов их работы я не нашёл и результат не подтверждаю.
- Текстуры не запечены. Процедурные материалы Blender в FBX не переходят, в Unity робот пришёл бы серым.
- Звук не прослушан, только спектры и уровни.
- Сходство ограничено: цвет серо-голубой вместо оливкового, меньше механики в щелях, ступни светлее.
- Шаг резкий, руки качаются слабо.
Уроки:
- Мера побеждает «на глаз». Как только сходство стало числом и появилась сетка 2×2, прогресс стал виден. Но метрика видит только силуэт.
- Лист с четырьмя видами лучше одной картинки, но только если виды согласованы.
- Генераторы 3D не панацея и не бесплатны. Общий бесплатный ключ быстро кончается, а процедурный код даёт управляемый результат с потолком по детализации.
- Одинаковые имена и иерархия позволяют вести модель и анимацию параллельно.
- Параллельные агенты работают, если у каждого свой файл. Фоновая правка
.blendи открытое окно Blender конфликтуют. - Для покадрового видео нужен детерминизм (seed) и линтер.
- Итоговый ролик стоит сверять с данными, иначе в красивой графике живут устаревшие цифры.
- «Нейронка сделала сама» означает: человек поставил задачу, дал референс и оценил результат, а агент исполнил. Референсы и ключевые решения («делай сам», «останавливаемся») мои.
Что дальше
- Перенести ходьбу на v3.1 и перерисовать сцену 4 (рендер около 5 минут).
- Обновить в HUD числа IoU до финала v3.1 или подписать, что это v3, а склеенную гистограмму заменить честным графиком.
- Покрасить и запечь текстуры, переэкспортировать FBX, чтобы в Unity робот был оливковым и грязным.
- Собрать сцену в Unity: пол, свет, камера, робот с управлением с клавиатуры, вращающиеся колёса машин.
- Дождаться и проверить окружение и машины.
- Послушать звуки. Слабые голоса, возможно, заменить синтезатором речи, а механику и металл оставить кодом.



