Blender MCP
официальныйЛегковесный MCP-сервер для Blender. Предоставляет интерфейс на естественном языке для работы с Python API Blender, улучшает доступ к документации и позволяет пользователям изучать и понимать сложные настройки.
Что можно делать с Blender MCP?
- Анализировать производительность сцены — Попросите ассистента найти объекты с наибольшим количеством полигонов относительно их размера на экране с точки зрения камеры.
- Переименовывать блоки данных — Исправляйте опечатки или применяйте описательные соглашения об именах для объектов, источников света, камер, текстур и других блоков данных.
- Запрашивать связи данных — Используйте естественный язык, чтобы спросить, какие объекты используют конкретный материал или как связаны блоки данных.
- Отлаживать проблемы сцены — Определяйте объекты с наибольшим количеством полигонов, неориентируемые сетки или другие распространенные проблемы в открытом файле.
- Документировать настройки Geometry Nodes — Создавайте встроенные фреймы документации и текстовый блок данных, объясняющий, что делает группа узлов и как она устроена.
Документация
Легковесный MCP (Model Context Protocol) сервер для Blender. Он предоставляет интерфейс на естественном языке для Python API Blender, улучшая доступ к документации и позволяя пользователям исследовать и понимать сложные конфигурации.
Технические детали и документацию по архитектуре смотрите в исходном коде.
Предупреждение безопасности
MCP сервер будет выполнять сгенерированный LLM код в Blender без каких-либо ограничений для защиты ваших данных от удаления или отправки на удаленный сервер. Для обеспечения безопасности данных рекомендуется использовать виртуальную машину или систему без доступа к конфиденциальной информации.
Установка
Blender не имеет встроенной функциональности для подключения к LLM.
Чтобы Blender мог взаимодействовать с LLM, необходимо вручную загрузить, установить и запустить три внешних инструмента.
Требования:
- Blender 5.1 или новее
- Аддон
- LLM Клиент
- MCP Сервер
Аддон
Для взаимодействия с вашей сессией Blender необходимо установить специальный аддон для интеграции с MCP Сервером.
Перетащите в Blender
…или загрузите и установите с диска
Если вы перетаскиваете в Blender, вам потребуется сделать это дважды. Сначала для добавления репозитория Blender Lab, затем для установки самого аддона. Этот метод позволяет получать уведомления об обновлениях при появлении новой версии аддона.
LLM Клиент
MCP Серверы следуют четко определенному стандарту и совместимы с множеством клиентов. Пожалуйста, следуйте документации Llama.cpp или установите LLM клиент по вашему выбору.
MCP Сервер
Существуют различные способы установки MCP Сервера в зависимости от возможностей вашего LLM клиента.
- MCP Bundle: Для новых клиентов, поддерживающих файлы
.mcpb, загрузите последний пакет со страницы релизов. Llama.cpp пока не поддерживает это. - MCP Сервер: Для установки из исходного кода смотрите документацию Llama.cpp или инструкции по настройке.
Запуск
После настройки MCP Сервера в вашем LLM Клиенте вы можете начать исследовать свои сцены Blender.
Веб-интерфейс llama.cpp, запускающий blender-mcp сервер.
Пример 1: Анализ сцены
MCP можно использовать для программного анализа сцены на предмет узких мест производительности. Возьмем, к примеру, демо-файл Classroom:
Демо-файл Classroom.
Эта сцена является одним из бенчмарк-файлов Blender. Причина, по которой эти файлы используются в бенчмарках, заключается в том, что они хорошо представляют реальные производственные файлы, созданные художниками. И неудивительно, что они могут содержать объекты, требующие оптимизации.
Хотя проверки количества полигонов часто бывает достаточно, еще интереснее построить график количества полигонов в зависимости от их размера на финальном рендере. Это можно получить с помощью следующего промпта.
Analyze the scene and list the outliers: objects with highest polygon count but smaller size from the camera point of view.
Полученные данные на графике ясно показывают два объекта, которые выделяются среди остальных: alphabet и coat 1:
Графический анализ количества полигонов на площадь экрана для демо-сцены Classroom.
Объект alphabet имеет 20 тысяч полигонов. Из-за его плоской формы его можно заменить текстурой с минимальным ущербом для конечного результата. Объект coat 1 имеет 37 тысяч полигонов из-за модификатора Subsurf. Снижение уровня подразделения может облегчить сцену, если узким местом в вашей системе является память.
Алфавит находится на заднем плане сцены и легко может быть заменен текстурой. Пальто также находится достаточно далеко, чтобы его меш можно было упростить.
Насколько надежны эти результаты?
Первоначальный анализ, предоставленный LLM, учитывал только модификаторы, влияющие на вьюпорт. Объект coat 1 имеет модификатор Solidify, который удваивает количество его полигонов, делая его еще более выделяющимся. И хотя в этой сцене не был включен Simplify, эти настройки также повлияли бы на итоговый анализ.
Пример 2: Различные промпты
Вот некоторые другие протестированные сценарии использования. Вам нужно будет вставить всё содержимое «Промпта», чтобы они сработали. В качестве отправной точки следует использовать соответствующий демо-файл. Успех операции будет зависеть от используемой модели.
| Сценарий использования | Промпт | Демо-файл | Результат |
|---|---|---|---|
| Переименование блоков данных: исправление опечаток | В текущем открытом файле Blender исправь имена всех блоков данных, чтобы убрать опечатки. Сообщи, какие блоки данных были исправлены. | Scattering Pebbles | GRP-rocks → GRP-pebble, LGT-Lights → LGT-lights, Compositing Nodetree → Compositing Node Tree |
| Переименование блоков данных: более удачные имена | В текущем открытом файле Blender предложи описательные имена для всех блоков данных и примени, если одобрено. | Scattering Pebbles | Camera → CAM-main, Area → LGT-sun-key, Area.001 → LGT-sun-fill, Area.002 → LGT-area-rim, GEO-pebble.001 → GEO-pebble-B, … |
| Запрос связей данных с помощью естественного языка | Какие объекты используют следующий материал: pebbles | Scattering Pebbles | 7 объектов: GEO-pebble, GEO-pebble.001, GEO-pebble.002, GEO-pebble.003, GEO-pebble.004, GEO-pebble.005, GEO-pebble.006 |
| Отладка сцены | Какой объект в этом файле имеет наибольшее количество полигонов? Игнорируй объекты, не связанные ни с одной сценой. | Scattering Pebbles | GEO-ground с 4 096 гранями. |
| Документирование Geometry Nodes | В текущем открытом файле Blender объясни, что делает основная настройка geometry nodes. Добавь встроенную документацию с элементами frame. Создай текстовый блок данных с результатами анализа. | Scattering Pebbles | 4 основных цветных frame + текстовый файл с объяснением. |
Другие промпты, которые еще предстоит изучить:
- Переведи все блоки данных с французского на английский.
- Моя сетка не деформируется арматурой, как это исправить?
- Blender исчерпывает память при рендеринге этой сцены, как её оптимизировать?
- У этой сетки странные артефакты затенения, как это исправить?
- Найди объекты с сетками, имеющими плохие нормали.
- Проверь мою сцену на наличие объектов с неравномерно трансформированными сетками.
- Экспортированное видео не воспроизводится в моих веб-браузерах, какие настройки изменить?
- Какие кисти для скульптинга использовать для создания и детализации веток деревьев?
- Настрой ноды композитинга для сохранения изображения как в SDR, так и в HDR.
- Проверь этот контрольный список: сетки должны быть замкнутыми, все объекты должны иметь материалы, имена должны соответствовать соглашению, никаких абсолютных путей, … Переименование блоков данных: исправление опечаток
GRP-rocks → GRP-pebbles (сцена содержит только объекты-гальки, а не камни).
LGT-Lights → LGT-lights (непоследовательный регистр).
Compositing Nodetree → Compositing Node Tree (Nodetree — ошибка составного слова).
Переименование блоков данных: более удачные имена
Объекты:
Camera→CAM-mainArea→LGT-sun-keyArea.001→LGT-sun-fillArea.002→LGT-area-rimGEO-pebble.001→GEO-pebble-BGEO-pebble.002→GEO-pebble-CGEO-pebble.003→GEO-pebble-DGEO-pebble.004→GEO-pebble-EGEO-pebble.005→GEO-pebble-FGEO-pebble.006→GEO-pebble-G
Блоки данных освещения:
Area→LGT-sun-keyArea.001→LGT-sun-fillArea.002→LGT-area-rim
Блок данных камеры:
Camera→CAM-main
Текстуры:
Texture→TEX-ground-cloudsTexture.001→TEX-ground-image
Сцена и мир:
World→WLD-environmentScene→SCN-mainДокументирование Geometry Nodes
Созданные новые Frame:
Документирующие frame, добавленные в настройку geometry nodes.
Текстовый блок данных:
GEOMETRY NODES ANALYSIS -- "Pebble Scattering Nodes"
Applied to object: GEO-ground | Modifier: Pebbles
========================================================
OVERVIEW
--------
This node group scatters three size categories of pebble meshes across
the faces of a ground mesh. Each category uses its own density mask
and a global Factor multiplier so that coverage can be art-directed
per-layer without touching the raw mask textures. The three resulting
instance layers are merged with the original ground geometry and sent
to the Group Output.
INPUTS (Group Interface)
------------------------
Geometry -- The ground mesh to scatter pebbles on.
Large Pebbles Mask -- Float mask (e.g. vertex colour / texture) that
defines WHERE large pebbles may appear.
Medium Pebbles Mask-- Float mask for medium pebble placement regions.
Small Pebbles Mask -- Float mask for small pebble placement regions.
Factor -- Global density multiplier shared by all three
lanes (appears three times in the interface,
one per lane).
NODE GRAPH -- LANE BY LANE
--------------------------
+- LARGE PEBBLES LANE -----------------------------------------------------+
| Source object : GEO-pebble |
| Group Input.001 |
| +- Geometry ------------------------> Distribute Points on Faces |
| +- Large Pebbles Mask ------------> Distribute Points on Faces |
| | (Density Factor socket) |
| +- Factor --> Math.003 (x) -------> Distribute Points on Faces |
| (Density Max socket) |
| Distribute Points on Faces ----------> Instance on Points |
| Object Info (GEO-pebble) -----------> Instance on Points (Instance) |
| Random Rotation.001 [-pi, +pi] -----> Instance on Points (Rotation) |
| Random Value [0.25 - 0.60] -------> Instance on Points (Scale) |
| Instance on Points ------------------> Join Geometry.003 |
+--------------------------------------------------------------------------+
+- MEDIUM PEBBLES LANE ----------------------------------------------------+
| Source object : GEO-pebble.004 |
| Group Input.002 |
| +- Geometry ------------------------> Distribute Points on Faces.001 |
| +- Medium Pebbles Mask -----------> Math.004 (x) --> Math.005 (x) |
| +- Factor ------------------------> Math.005 (x) |
| Math.005 output --------------> Distribute Points on Faces.001 |
| (Density socket) |
| Distribute Points on Faces.001 -----> Instance on Points.001 |
| Object Info.001 (GEO-pebble.004) --> Instance on Points.001 |
| Random Rotation.002 [-pi, +pi] ----> Instance on Points.001 |
| Random Value.002 [0.25 - 0.45] -----> Instance on Points.001 |
| Instance on Points.001 -------------> Join Geometry.003 |
+--------------------------------------------------------------------------+
+- SMALL PEBBLES LANE -----------------------------------------------------+
| Source object : GEO-pebble.002 |
| Group Input.003 |
| +- Geometry ------------------------> Distribute Points on Faces.002 |
| +- Small Pebbles Mask -----------> Math.006 (x) --> Math.007 (x) |
| +- Factor ------------------------> Math.006 (x) |
| Math.007 output --------------> Distribute Points on Faces.002 |
| (Density socket) |
| Distribute Points on Faces.002 -----> Instance on Points.002 |
| Object Info.002 (GEO-pebble.002) --> Instance on Points.002 |
| Random Rotation [-pi, +pi] ----> Instance on Points.002 |
| Random Value.003 [0.10 - 0.35] -----> Instance on Points.002 |
| Instance on Points.002 -------------> Join Geometry.003 |
+--------------------------------------------------------------------------+
+- MERGE & OUTPUT ---------------------------------------------------------+
| Group Input.004 |
| +- Geometry (pass-through) --------> Join Geometry.003 |
| Join Geometry.003 |
| (inputs: large instances + medium instances + |
| small instances + original ground geo) |
| +- Geometry -----------------------> Group Output |
+--------------------------------------------------------------------------+
SCALE RANGES (uniform, per lane)
---------------------------------
Large pebbles : 0.25 - 0.60
Medium pebbles : 0.25 - 0.45
Small pebbles : 0.10 - 0.35
ROTATION (all lanes)
---------------------
All three axes randomised independently over [-pi, +pi],
giving each pebble instance a fully random orientation.
DENSITY CONTROL PATTERN (Medium & Small lanes)
-----------------------------------------------
The mask value and the Factor are first multiplied together
(Math.004 / Math.006), then that product is multiplied again
by a second value (Math.005 / Math.007) before being fed into
the Density socket. This two-stage multiply gives a non-linear
response curve, making the density fall off more aggressively
near the mask edges.
The Large lane uses a different (single-stage) approach:
the Density Factor socket receives the mask directly, and the
Factor is only used to scale Density Max via Math.003.
NOTES & SUGGESTIONS
--------------------
* The node group has no Seed input exposed; adding one would allow
re-randomising all three layers simultaneously without touching
individual nodes.
* The Factor input currently appears three times (once per lane).
Merging them into a single shared socket would simplify the
modifier panel.
* Consider labelling the unlabelled Math nodes (Math.003-.007)
and Random Value nodes to aid future maintenance.