Агент в Blender: MCP и Python-скрипты
Blender бесплатный, открытый и умеет всё: моделирование, материалы, свет, рендер, анимацию. Проблема в том, что учить его годами. Теперь между тобой и Blender может стоять агент: ты говоришь «коробка 120 на 60 на 18 миллиметров со скруглением 3 миллиметра, матовый алюминий», а он делает. Магия работает ровно до первого предмета, где важна точность, и дальше начинается работа: чертёж, измерения, малые шаги, контрольные рендеры. Эта тема про оба способа подключить агента к Blender и про дисциплину, без которой результат выходит дорогим и «примерно похожим». Всё ниже проверено на трёх моих проектах осени 2026: диктофон TP-7 через MCP, эмиратский дом с ветровой башней скриптами и 3D-иконка из SVG, упакованная в скилл.
Почему агент вообще может управлять Blender
Всё, что делается мышкой в Blender, доступно из Python через модуль bpy: создать куб, подвинуть вершину, назначить материал, поставить камеру, отрендерить. Интерфейс Blender сам построен на этих вызовах. Поэтому агенту не нужно «видеть» кнопки: он пишет код, а Blender его выполняет. Отсюда два способа подключения.
| MCP: живое подключение | Python-скрипты: файлом | |
|---|---|---|
| Как работает | аддон в Blender открывает сокет, MCP-сервер передаёт команды агента и возвращает результат и картинки вьюпорта | агент пишет .py, ты запускаешь его во вкладке Scripting или из терминала: blender --background --python build.py |
| Что агент видит | сцену, объекты, рендер прямо по ходу (look, get_scene_info) |
только то, что скрипт сам сохранил: рендеры и логи |
| Сильная сторона | диалог: «подвинь кнопку на 2 мм левее» выполняется за секунды | воспроизводимость: скрипт пересобирает сцену с нуля, лежит в git, запускается без интерфейса и на сервере |
| Слабая сторона | состояние живёт в сессии: закрыл Blender, история правок пропала | медленнее итерация, нет живой картинки для агента без лишних рендеров |
| Когда брать | исследование, концепт, свет и камера, правки по месту | финальная сборка предмета по чертежу, батч рендеров, всё, что будут повторять |
Лучший режим — оба сразу. Исследуешь и правишь через MCP, а каждое утверждённое решение агент переносит в скрипт build.py. Тогда через неделю предмет пересоберётся одной командой, а не воспоминаниями о чате. В проекте с иконкой у меня так и устроено: сцены собирает iconlib.py, а в README прямо написано: «пересборка перезаписывает сцены и материалы, поэтому удачные значения из ручных правок переноси в iconlib.py».

Путь 1: Blender MCP
Понадобятся Blender с blender.org (версия 3.0 и выше), Python и менеджер пакетов uv. Самый известный MCP — открытый проект ahujasid/blender-mcp. Установка в три шага:
- Скачай из репозитория файл
addon.pyи поставь его в Blender: Edit → Preferences → Add-ons → Install. В боковой панели 3D-вида появится вкладка BlenderMCP с кнопкой Connect. - Подключи MCP-сервер к агенту. Для Claude Code это одна команда в терминале:
claude mcp add blender -- uvx blender-mcp. Для Claude Desktop, Cursor и других — строка в конфиге, как в README. - Нажми Connect в Blender, запусти агента и попроси показать сцену.

Что умеет этот MCP, кроме выполнения кода: смотреть на вьюпорт и рендер несколькими ракурсами, искать и ставить HDRI, текстуры и модели с Poly Haven (ключ не нужен), тянуть модели со Sketchfab, генерировать меши через Rodin, Meshy, Tripo или Hunyuan3D прямо в сцену. Это соединяет тему «Генерация 3D-моделей» с этой: сгенерировал, поставил, осветил, отрендерил в одном диалоге.

Два ограничения из практики. Сложные запросы отваливаются по таймауту, проси маленькие шаги. Одновременно должен работать один экземпляр MCP, иначе команды путаются. И одна деталь, которую я понял не сразу: аддон слушает обычный сокет на порту 9876 с простым JSON-протоколом. Значит, к нему можно подключиться и без MCP-сервера, крошечным скриптом. У меня это bmcp.py на 60 строк: python3 bmcp.py exec build.py запускает файл внутри живого Blender и печатает его вывод, bmcp.py shot out.png снимает вьюпорт. Агент с терминалом пользуется им так же, как MCP-инструментами, а отлаживать такой скрипт проще.
Есть и официальный экспериментальный MCP от Blender Lab. Он требует Blender 5.1 и выше и заточен под анализ: найти тяжёлые объекты, переименовать данные, объяснить, как устроены материалы и Geometry Nodes. Для сборки предметов он не предназначен. Сам Blender при этом заявил, что генеративный ИИ в редактор встраивать не планирует. Поэтому всё, что описано здесь, живёт снаружи Blender, в аддонах и агентах.
Путь 2: Python-скрипты
Без MCP работает и обычный агент с терминалом (тема «CLI и терминальные ИИ-агенты»). Он пишет скрипт на bpy, а запускаешь его ты. Два способа: открыть вкладку Scripting в Blender, вставить и нажать Run, либо из терминала без интерфейса:
blender --background --python build.py -- --step 3 --out renders/step3.png
Агент сам может запускать эту команду, читать логи и смотреть на сохранённые рендеры. Получается тот же цикл «сделал, посмотрел, поправил», что в теме «Моушн-ролик кодом», только без живого окна. Плюсы: скрипт лежит в репозитории, пересобирает сцену с нуля детерминированно, гоняет батчи (десять цветов товара, двадцать ракурсов) и работает на сервере без монитора. Минусы: каждая итерация это полный пересчёт, и агенту нужно самому рендерить картинку, чтобы увидеть результат.
Структура скрипта, которую полезно потребовать сразу: размеры и материалы вынесены в отдельный модуль в начале, сборка разбита на функции по деталям, у каждого шага свой флаг --step и свой контрольный рендер. Дом у меня собран именно так: build_house.py принимает --step 1…6, а рядом лежат plan_data.py с измерениями, blockout.py, details.py, courtyard.py, materials.py. Тогда правка «парапет на 40 сантиметров» это одно число, а не новый диалог.
Один урок про смешивание путей. Пересобирать сцену скриптом через MCP под открытым окном Blender можно, но не когда во вьюпорте включён режим Rendered: пересборка удаляет и создаёт заново сцены и материалы прямо под рендером, и 1 октября 2026 это уронило мне Blender вместе с несохранёнными правками. Безопасный путь — blender --background в отдельном процессе, пока окно закрыто или открыт другой файл.
Безопасность: агент выполняет произвольный код
И MCP, и скрипты выполняют на твоём компьютере любой Python, который написала модель. Сокет MCP без авторизации, безопасный режим по умолчанию выключен, официальный MCP прямо предупреждает, что защиты нет и советует виртуальную машину. Минимальная гигиена: сохраняй файл перед каждым запуском, держи подключение на localhost, не открывай в этой же сессии чужие файлы и промпты с непонятных сайтов (prompt injection из темы «CLI и терминальные ИИ-агенты» работает и здесь), для серьёзной работы заведи отдельного пользователя или виртуалку.
Чертёж-бриф до первой команды
Мой первый заход в Blender MCP был диктофон TP-7 от Teenage Engineering: на сайте лежат красивые рендеры со всех ракурсов, осталось повторить. Запрос в духе «делай хорошо, плохо не делай» дал по традиции ужасное недоразумение. Дальше я вёл агента по шагам, как рукастого, но невнимательного специалиста, упёрся в потолок и объяснял, как поправить каждый миллиметр коробочки. Магия пропала: это не «вжух».
Лекарство я вынес оттуда же: ещё на старте потребовать распознать и задокументировать все детали и материалы, измерить пропорции и расстояния на референсах и регулярно сверяться с этим документом. Сам попробуй на глаз нарисовать берёзу, впервые придя на пленэр, и поймёшь, почему модель без размеров не справляется. Чертёж-бриф из темы «3D с ИИ» и есть этот документ. Второй проект, дом, я начал уже с него. Вот его скелет: это рабочий промпт, бери и подставляй свой предмет.
Задача: построить детализированную 3D-модель [предмета] в Blender через blender-mcp на основе приложенных референсов.
Референсы (используй именно в этой роли):
- plan_A_1.jpg, plan_A_2.jpg — план, вид сверху, ОСНОВНОЙ источник геометрии в плане
- plan_alt.jpg — альтернативный план. НЕ смешивай с основным. Если что-то берёшь оттуда, явно проговори
- facade_1.jpg … facade_3.jpg — фасады: что где стоит, какие проёмы
- iso_1.jpg … iso_3.jpg — общие виды только для сверки массинга и материалов, НЕ источник размеров
Элементы для моделирования: [нумерованный список деталей с расположением и материалом; ключевые детали стиля пометить «не забыть»]
Масштаб: за точку привязки взять [известный размер: высота двери ≈ 2,05–2,1 м], от неё вывести остальное. В отчёте укажи итоговые габариты.
Порядок работы, поэтапно, с рендером после каждого шага, дальше не переходить без подтверждения:
1. Референс-плоскости в сцене: план под моделью, фасады в своих проекциях, масштаб по привязке
2. Блокинг примитивами, сверка силуэта с фасадами и планом
3. Детализация
4. Окружение и декор
5. Материалы
6. Экспорт
Единицы — метры, Z вверх, origin — [угол предмета]. Если референсы противоречат друг другу и это нельзя разрешить, не додумывай, а сообщи и предложи, на какой ориентироваться.
Три вещи в этом брифе делают всю работу. У каждого референса своя роль, и агенту запрещено смешивать источники. Масштаб привязан к одному известному размеру, остальное выводится из него. И прямое правило «не додумывай, а сообщи»: без него модель молча выберет вариант и нарисует убедительную отсебятину.
Положи бриф в docs/blueprint.md, референсы в refs/, а правила «сверяться с чертежом после каждого шага» в CLAUDE.md (тема «Терминальные агенты: настройка под себя»):
## Проект: модель [предмет] в Blender
- Источник истины: docs/blueprint.md и refs/. Расходишься с ними — останавливайся и спрашивай
- Единицы: миллиметры. Центр предмета в начале координат, низ на нуле
- Один шаг за сообщение: референсы → блокаут → детали → материалы → свет → камера → рендер
- После каждого шага: контакт-лист 4 ракурса (спереди, сбоку, три четверти, сверху) в reviews/, рядом с теми же ракурсами из refs/
- Каждое утверждённое решение переноси в build.py
- Ассеты: HDRI и текстуры только с Poly Haven, модели со Sketchfab только с лицензией CC
- Сохраняй .blend перед выполнением любого кода
Измерить, а не прикинуть: TP-7
Вторая попытка с диктофоном пошла иначе. Вместо «посмотри на фото и повтори» агент получил задачу измерить. Он написал скрипты, которые отделяют предмет от фона маской, считают масштаб в пикселях на миллиметр по известной ширине корпуса, а потом сканами яркости и цветовыми масками находят отверстия, кнопки и гравировки. Из этого получился чертёж в цифрах: корпус 84,3 × 123,7 × 21,5 мм, положение каждой детали. Модель собрана по этим числам, в ней 173 объекта.
Проверка тоже не на глаз. Рендер накладывается на референс красно-зелёным: красный канал от фото, зелёный от рендера. Там, где силуэты совпали, получается жёлтый. Там, где красное или зелёное торчит отдельно, расхождение. Совпадение силуэтов в итоге 95,5%, и каждое расхождение видно ещё до того, как ты откроешь оба кадра рядом.



Урок простой. Агент хорошо пишет код, который измеряет, и плохо оценивает пропорции взглядом. Отдай ему измерение как задачу, и он сделает чертёж сам. Сверку тоже сделай кодом: наложение, разница силуэтов, число в процентах. Тогда «похоже или нет» перестаёт быть спором.
Ворота на практике: дом за один день
Эмиратский дом с ветровой башней собран скриптами за один день, с 12:42 до 17:21, по брифу выше. Референсы для него я сгенерировал в Nano Banana: план, три фасада и три общих вида, в одном стиле и с одним домом. Дальше шесть шагов, у каждого свой --step, свой .blend и свой рендер.
Шаг 1: референс-плоскости

Шаг 2: блокаут

Шаг 3: детали

Шаг 4: двор и свет

Шаг 5: материалы

Три приёма отсюда повторяй в любом проекте.
- Референсы внутри сцены. Первым шагом скрипт ставит план на пол и фасады вертикально, в правильном масштабе. Масштаб посчитан в
refs.pyпо привязке: дверь 2,07 м, значит 132,9 пикселя на метр на фасаде и 105 на плане. Любой следующий шаг рендерится на фоне этих плоскостей, и расхождение видно без отдельного сравнения. - Метровая сетка и оси в кадре. Пока нет материалов, по сетке читается масштаб, а по цветным осям — где origin. Без них блокаут на рендере выглядит убедительно при любых размерах.
- Файл на каждый шаг.
house_step1.blend,house_step2.blendи так далее. Шаг не получился — откатываешься к предыдущему файлу, а не распутываешь историю.


Минимальный пример: один предмет двумя этапами
Для этого материала я собрал предмет попроще, чтобы показать те же ворота на одном файле: карманный диктофон 120 × 60 × 18 мм. Скрипт scripts/blender-demo-object.py задаёт размеры словарём, собирает детали по функциям и рендерит четыре ракурса на каждом этапе. Запуск через --background, без интерфейса.

Ворота 1: блокаут. Только габариты из чертежа и расположение деталей.

Ворота 3–5: фаски, материалы и три источника света.
Чертёж в начале скрипта
корпус 120 × 60 × 18 мм, скругление рёбер 3 мм, матовый анодированный алюминий
диск радиус 14 мм, высота 2 мм, чёрный, оранжевая метка; центр (38, 0)
шесть кнопок 10 × 10 × 1,5 мм в два ряда, фаска 0,8 мм, первая оранжевая
камеры: три четверти, сверху, сбоку, сзади; объектив 85 ммПорядок шагов тот же, что у моделлеров, и агент его знает. Твоя роль — ворота между шагами.
- Референсы в сцене. План под моделью, фасады или фото по сторонам, масштаб по известному размеру.
- Блокаут. Примитивы в точных габаритах из чертежа. Никаких фасок и кнопок. Сравни силуэт с референсом наложением.
- Детали. Фаски, кнопки, разъёмы, надписи, по чертежу с размерами. Один блок деталей за шаг.
- Материалы. PBR из чертежа: цвет, шероховатость, металличность. Текстуры с Poly Haven.
- Свет. HDRI для общего света плюс рисующий, заполняющий и контровой. Под готовые материалы, не раньше.
- Камера. Фокусное расстояние и кадрирование как на референсных рендерах. Для продуктовых кадров 50–85 мм.
- Рендер. Eevee для контрольных листов, Cycles для финала. Разрешение и число сэмплов проси назвать до запуска, иначе ночь уйдёт на один кадр.
После каждого шага агент рендерит контакт-лист и сам пишет, где расхождения с референсом. Ты утверждаешь словом «дальше» или возвращаешь. Это ворота из темы «Моушн-ролик кодом», перенесённые в объём.
Экспорт в веб: две ловушки glTF
У TP-7 есть веб-вьюер на Three.js: tp7-3d.vercel.app, модель в GLB на 2,1 МБ, орбита мышкой, семь пресетов камеры, код в репозитории. По дороге из Blender в браузер я поймал две ошибки, которые невидимы в самом Blender.
Ловушка 2: анизотропия без тангенсов

Ловушка 1: вывернутая оболочка

После обеих правок

- Вывернутая оболочка. После десятков булевых операций нормали корпуса смотрели внутрь. Cycles это не замечает, а браузер с отсечением задних граней делает корпус невидимым. Проверяется кодом: знак объёма меша, посчитанного по треугольникам, отрицательный у вывернутой модели.
- Чёрные грани от анизотропии. Шлифованный металл Blender экспортирует как расширение
KHR_materials_anisotropy. Без тангенсов в геометрии Three.js красит такие поверхности в чёрный. Вьюер обнуляет анизотропию при загрузке.
И ещё одно: металл с metalness = 1 освещается только отражениями окружения. На пустой сцене боковые стенки уходят в чёрный, поэтому вьюер строит процедурный студийный купол с софтбоксами. Сжатие и форматы для веба разобраны в теме «Генерация 3D-моделей».
Скилл: иконка из SVG одной командой
Третий проект — объёмная иконка из плоского логотипа. Задача повторяется у каждого бренда, поэтому вместо диалога она упакована в скилл svg-to-3d-icon (тема «Терминальные агенты: настройка под себя»): один скрипт svg3d.py на 800 строк, который сам находит Blender, перезапускает себя внутри него и отдаёт JSON с итогом. Скилл открытый, ставится одной командой из README в папку скиллов агента.
python3 scripts/svg3d.py logo.svg --preview # 768 px, 20 секунд, лист для ревью
python3 scripts/svg3d.py logo.svg --preset matte --depth 0.24 --relief 0.07
python3 scripts/svg3d.py logo.svg --turntable 96 # финал 2048 px + видео с вращением
Рабочий цикл внутри скилла тот же, что во всей теме: превью, лист для ревью, подстройка флагами, финал, проверка. Лист показывает три ракурса на светлом и тёмном фоне, и по нему видно, что силуэт совпал с SVG, фаски чистые, тень не обрезана.

Два правила в скилле заработаны ошибками, и они переносятся на любую продуктовую сцену. Первое: цвет бренда зависит от экспозиции. Световая установка откалибрована так, чтобы грань, повёрнутая к камере, рендерилась ровно в цвет заливки SVG. Добавил света в 2,4 раза, и лаймовый #C6E800 превратился в обычный жёлтый. Поэтому скрипт сам считает color_check и предупреждает. Второе: пол невидим для отражений. Иначе каждая глянцевая грань отражает освещённый пол, чёрный глиф сереет, а цвета мутнеют.
Когда нужно глубже, чем скилл, начинается ручная работа, и там агент тоже помогает, но по-другому. Гиперреалистичная версия той же иконки — это файл с одиннадцатью сценами и материалами, у которых все настройки выведены на одну групповую ноду: Color, Roughness, Brushing, Sparkle. Память проекта лежит в README: какие приёмы сработали (view transform Khronos PBR Neutral держит лаймовый, AgX уводил его в горчичный), что ломалось (микрорельеф мельче пикселя даёт «соль-перец») и как пересобрать всё из кода. Без такого README через месяц проект пришлось бы вскрывать заново.

Где больно и сколько стоит
Честная картина на осень 2026 по трём проектам. Концепт-рендеры и абстрактные крупные планы получаются быстро и хорошо. Иконка из SVG — одна команда. Дом в архитектурном стиле по сгенерированным референсам — один день скриптами, с материалами и двором. Точный гаджет с десятками деталей упирается в потолок: даже на сильных моделях много косяков, которые придётся ловить руками, а для этого нужны насмотренность и понимание, как устроено 3D.
Публичных смет на 3D с агентом пока нет, так что считай по своим счётчикам. Бюджет TP-7 до результата, к которому нет вопросов, ушёл в десятки долларов, то есть заметную часть недельного лимита подписки, и рос с каждой деталью. Дороже всего обходятся не сами скрипты, а проверки: каждый контрольный лист — это картинка в контексте, каждая итерация «поправь и перерендери» — новый проход по всей сцене. Часто дешевле купить готовую модель на стоке.
При этом скорость и сам воркфлоу местами впечатляют: пишешь задачу агенту, а через пару часов он присылает рендеры. Правильная стратегия: начинать с простых предметов, держать чертёж, измерять кодом, не экономить на контрольных листах и считать токены как бюджет проекта (тема «Тарифы и лимиты»).
Примеры команд для практики
Покажи текущую сцену: список объектов с размерами, материалы, свет, камера. Ничего не меняй
Вот фото предмета с четырёх сторон в refs/. Напиши скрипт, который отделит предмет от фона, посчитает пикселей на миллиметр по известной ширине [X мм] и найдёт положение отверстий, кнопок и надписей. Результат сохрани в docs/measurements.md таблицей
Прочитай docs/blueprint.md и refs/. Поставь референс-плоскости в сцену в правильном масштабе, собери блокаут из примитивов в точных габаритах. Отрендери наложение блокаута на фасад в ортографической камере и перечисли расхождения в процентах. Жди моего «дальше»
Отрендери модель с той же камеры, что фото refs/front.jpg, и наложи на фото красно-зелёным: фото в красный канал, рендер в зелёный. Посчитай совпадение силуэтов в процентах
Поставь HDRI студии с Poly Haven, добавь рисующий свет слева-сверху и мягкий контровой. Камера 85 мм, ракурс как на refs/front-34.jpg. Контрольный рендер в Eevee 1280×720
Перенеси всё, что мы утвердили в этой сессии, в build.py: размеры и материалы отдельным модулем, сборка по функциям, флаг --step на каждый этап, в конце камера и контакт-лист. Запусти его в фоне и покажи, что сцена пересобралась один в один
Напиши build.py на bpy, который собирает [предмет] по docs/blueprint.md и рендерит четыре ракурса в renders/. Запусти через blender --background, посмотри на рендеры и сравни с refs/. Исправь расхождения и запусти ещё раз, пока пропорции не сойдутся
Экспортируй модель в GLB и проверь перед экспортом: знак объёма каждого меша положительный, у материалов нет анизотропии без тангенсов, суммарный размер до 3 МБ. Собери страницу с Three.js: орбита, автоповорот, студийный купол для металла
Сделай из build.py батч: десять вариантов цвета корпуса из палитры в docs/colors.md, по одному рендеру три четверти на каждый, имена файлов по названию цвета
Заверни пайплайн в скилл: на вход SVG логотипа, на выход три ракурса на светлом и тёмном фоне, GLB и .blend. Превью за 20 секунд, финал в фоне. В JSON-итоге проверка цвета бренда на грани, повёрнутой к камереВозьми простой предмет: визитку, зажигалку, книгу, кружку. Положи чертёж-бриф из темы «3D с ИИ» в docs/blueprint.md, референсы в refs/, правила в CLAUDE.md. Подключи Blender через MCP или работай скриптами, выбери сам и запиши почему. Первым шагом поставь референсы в сцену и попроси агента измерить предмет кодом, а не на глаз. Проведи его через семь ворот, после каждого утверждай контакт-лист, а блокаут сверь наложением на референс. В конце запусти build.py в чистой сцене: если предмет пересобрался и наложение даёт больше 90% совпадения силуэта, пайплайн у тебя есть. Дальше его можно усложнять.
Источники
- Blender MCP (ahujasid)github.com
Аддон и MCP-сервер: выполнение Python в Blender, просмотр вьюпорта, Poly Haven, Sketchfab, генераторы
- Blender Lab: MCP Serverblender.org
Официальный экспериментальный MCP для Blender 5.1+: анализ сцены, без защиты от кода модели
- Upcoming Blender Development Fund and AI policiesblender.org
Blender не планирует встраивать генеративный ИИ в сам редактор
- Blender Python APIdocs.blender.org
Модуль bpy: вся функциональность Blender из скрипта
- Blender Command Line Argumentsdocs.blender.org
Запуск Blender без интерфейса со скриптом: --background --python
- glTF 2.0: KHR_materials_anisotropygithub.com
Расширение, в которое Blender экспортирует анизотропный металл; без тангенсов в геометрии three.js красит его в чёрный
- Poly Haven Licensepolyhaven.com
HDRI, текстуры и модели под CC0
Нашёл ошибку или устаревший факт? Напиши: hey@iskra.guide