{/ Эта страница автоматически создается на основе файла SKILL.md навыка с помощью сайта site/scripts/generate-skill-docs.py. Редактируйте исходный код SKILL.md, а не эту страницу. /}

Блендер Mcp

Управляйте блендером напрямую из Hermes через сокет-соединение с аддоном blender-mcp. Создавайте 3D-объекты, материалы, анимацию и запускайте произвольный код Blender Python (bpy). Используйте, когда пользователь хочет создать или изменить что-либо в Blender.

Метаданные навыков

Источник Необязательно — установите с помощью hermesskills installofficial/creative/blender-mcp
Путь optional-skills/creative/blender-mcp
Версия 1.0.0
Автор Алиреза78а
Платформы Linux, MacOS, Windows

Ссылка: полная версия SKILL.md:::информация

Ниже приведено полное определение навыка, которое Гермес загружает при активации этого навыка. Это то, что агент видит в качестве инструкций, когда навык активен.

Блендер MCP

Управляйте работающим экземпляром Blender из Hermes через сокет TCP-порта 9876.

Настройка (однократно)

1. Установите дополнение Blender

curl -sL https://raw.githubusercontent.com/ahujasid/blender-mcp/main/addon.py -o ~/Desktop/blender_mcp_addon.py

В Блендере: «Правка» > «Настройки» > «Дополнения» > «Установить» > выберите blender_mcp_addon.py. Включите «Интерфейс: Blender MCP».

2. Запустите сервер сокетов в Blender.

Нажмите N в окне просмотра Blender, чтобы открыть боковую панель. Найдите вкладку «BlenderMCP» и нажмите «Запустить сервер».

3. Проверьте соединение

nc -z -w2 localhost 9876 && echo "ОТКРЫТЬ" || эхо "ЗАКРЫТО"

Протокол

Обычный JSON UTF-8 через TCP — без префикса длины.

Отправить: {"type": "<command>", "params": {<kwargs>}} Получите: {"статус": "успех", "результат": <value>} {"статус": "ошибка", "сообщение": "<причина>"}

Доступные команды

тип параметры описание
код_выполнения код (ул) Запуск произвольного кода bpy Python
get_scene_info (нет) Список всех объектов сцены
get_object_info имя_объекта (строка) Подробности по конкретному объекту
get_viewport_screenshot (нет) Скриншот текущего окна просмотра

Помощник Python

Используйте это внутри вызовов инструмента Execute_code:

импорт сокета, json

def blender_exec (код: str, хост="localhost", порт=9876, таймаут=15):
    s = сокет.сокет(сокет.AF_INET, сокет.SOCK_STREAM)
    s.connect((хост, порт))
    s.settimeout(тайм-аут)
    payload = json.dumps(&#123;"type": "execute_code", "params": &#123;"code": code&#125;&#125;)
    s.sendall(payload.encode("utf-8"))
    буф = б""
    пока правда:
        попробуйте:
            кусок = s.recv(4096)
            если не кусок:
                сломать
            буф += чанк
            попробуйте:
                json.loads(buf.decode("utf-8"))
                сломать
            кроме json.JSONDecodeError:
                продолжать
        кроме сокета.таймаут:
            сломать
    с.закрыть()
    вернуть json.loads(buf.decode("utf-8"))

Распространенные шаблоны bpy

Очистить сцену

bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()

Добавляем объекты сетки

bpy.ops.mesh.primitive_uv_sphere_add(радиус=1, местоположение=(0, 0, 0))
bpy.ops.mesh.primitive_cube_add(размер=2, местоположение=(3, 0, 0))
bpy.ops.mesh.primitive_cylinder_add(радиус=0,5, глубина=2, местоположение=(-3, 0, 0))

Создание и назначение материала

mat = bpy.data.materials.new(name="MyMat")
mat.use_nodes = Истина
bsdf = mat.node_tree.nodes.get("Принципиальный BSDF")
bsdf.inputs["Базовый цвет"].default_value = (R, G, B, 1.0)
bsdf.inputs["Грубость"].default_value = 0,3
bsdf.inputs["Металлический"].default_value = 0,0
obj.data.materials.append(мат)

Анимация ключевых кадров

obj.location = (0, 0, 0)
obj.keyframe_insert(data_path="location",frame=1)
obj.location = (0, 0, 3)
obj.keyframe_insert(data_path="location",frame=60)

Рендеринг в файл

bpy.context.scene.render.filepath = "/tmp/render.png"
bpy.context.scene.render.engine = 'ЦИКЛЫ'
bpy.ops.render.render(write_still=True)

Подводные камни