Blender MCP

chính thức

Một máy chủ MCP (Model Context Protocol) nhẹ dành cho Blender. Nó cung cấp giao diện ngôn ngữ tự nhiên với API Python của Blender, cải thiện khả năng truy cập tài liệu và cho phép người dùng khám phá cũng như hiểu các thiết lập phức tạp.

Bạn có thể làm gì với Blender MCP?

  • Phân tích hiệu suất cảnh — Yêu cầu trợ lý tìm các đối tượng có số lượng đa giác cao nhất so với kích thước màn hình từ góc nhìn camera.
  • Đổi tên khối dữ liệu — Sửa lỗi chính tả hoặc áp dụng quy tắc đặt tên mô tả cho các đối tượng, đèn, camera, kết cấu và các khối dữ liệu khác.
  • Truy vấn mối quan hệ dữ liệu — Sử dụng ngôn ngữ tự nhiên để hỏi đối tượng nào sử dụng một vật liệu cụ thể hoặc cách các khối dữ liệu được kết nối với nhau.
  • Gỡ lỗi sự cố cảnh — Xác định các đối tượng có số lượng đa giác cao nhất, lưới không phải dạng khối đa diện kín, hoặc các vấn đề phổ biến khác trong tệp đang mở.
  • Ghi lại thiết lập Geometry Nodes — Tạo khung tài liệu nội tuyến và một khối dữ liệu văn bản giải thích chức năng của một nhóm nút và cách nó được cấu trúc.

Tài liệu

Một máy chủ MCP (Model Context Protocol) nhẹ dành cho Blender. Nó cung cấp giao diện ngôn ngữ tự nhiên với API Python của Blender, cải thiện khả năng truy cập tài liệu và cho phép người dùng khám phá cũng như hiểu các thiết lập phức tạp.

Để biết chi tiết kỹ thuật và tài liệu về kiến trúc, hãy xem mã nguồn.

Cảnh báo bảo mật
Máy chủ MCP sẽ thực thi mã do LLM tạo ra trong Blender mà không có bất kỳ biện pháp bảo vệ nào để ngăn dữ liệu của bạn bị xóa hoặc gửi đến vị trí từ xa. Để giữ an toàn cho dữ liệu, bạn nên sử dụng máy ảo hoặc hệ thống không có quyền truy cập vào thông tin nhạy cảm.

Cài đặt

Blender không có bất kỳ chức năng tích hợp sẵn nào để kết nối với LLM.

Để Blender có thể kết nối với LLM, ba công cụ bên ngoài phải được tải xuống, cài đặt và chạy thủ công.

Yêu cầu:

  1. Blender 5.1 trở lên
  2. Add-on
  3. Ứng dụng khách LLM
  4. Máy chủ MCP

Add-on

Để tương tác với phiên Blender của bạn, bạn cần cài đặt một add-on cụ thể cho việc tích hợp Máy chủ MCP.

Kéo và thả vào Blender

…hoặc tải xuống và Cài đặt từ Ổ đĩa

Nếu bạn kéo và thả vào Blender, bạn sẽ cần thực hiện hai lần. Lần đầu để thêm kho lưu trữ Blender Lab, lần thứ hai để cài đặt chính add-on đó. Phương pháp này cho phép bạn nhận thông báo cập nhật bất cứ khi nào có phiên bản mới của add-on này.


Ứng dụng khách LLM

Máy chủ MCP tuân theo một tiêu chuẩn được xác định rõ ràng và tương thích với vô số ứng dụng khách. Vui lòng làm theo tài liệu LLama.cpp hoặc cài đặt ứng dụng khách LLM mà bạn ưa thích.


Máy chủ MCP

Có nhiều cách khác nhau để cài đặt Máy chủ MCP tùy thuộc vào khả năng của ứng dụng khách LLM của bạn.

  • Gói MCP: Dành cho các ứng dụng khách mới hơn hỗ trợ tệp .mcpb, hãy tải xuống gói mới nhất từ trang phát hành. Llama.cpp hiện chưa hỗ trợ tính năng này.
  • Máy chủ MCP: Để cài đặt từ mã nguồn, hãy xem tài liệu Llama.cpp hoặc hướng dẫn thiết lập.

Chạy

Khi bạn đã thiết lập Máy chủ MCP trong Ứng dụng khách LLM của mình, bạn có thể bắt đầu khám phá các cảnh Blender của mình.

Giao diện web llama.cpp đang chạy máy chủ blender-mcp.


Ví dụ 1: Phân tích cảnh

MCP có thể được sử dụng để phân tích cảnh theo chương trình nhằm tìm ra các điểm nghẽn hiệu suất. Lấy ví dụ tệp demo Lớp học:

Tệp demo lớp học.

Cảnh này là một trong những tệp benchmark của Blender. Lý do những tệp này nằm trong benchmark là vì chúng đại diện tốt cho các tệp sản xuất thực tế do nghệ sĩ tạo ra. Và không có gì ngạc nhiên khi nó có thể chứa các đối tượng dễ được tối ưu hóa.

Mặc dù việc kiểm tra số lượng đa giác thường là đủ, nhưng thú vị hơn cả là vẽ biểu đồ số lượng đa giác dựa trên kích thước chúng hiển thị trong kết xuất cuối cùng. Điều này có thể đạt được với lời nhắc sau.

Analyze the scene and list the outliers: objects with highest polygon count but smaller size from the camera point of view.

Dữ liệu kết quả được vẽ biểu đồ cho thấy rõ ràng hai đối tượng nổi bật so với phần còn lại: alphabetcoat 1:

Phân tích biểu đồ số lượng đa giác trên mỗi diện tích màn hình cho cảnh demo lớp học.

Đối tượng alphabet có 20k đa giác. Do cách bố trí phẳng của nó, nó có thể được thay thế bằng một kết cấu mà ít ảnh hưởng đến kết quả cuối cùng. Đối tượng coat 1 có 37k đa giác do công cụ sửa đổi Subsurf của nó. Việc giảm mức phân chia có thể giảm tải cho cảnh, nếu bộ nhớ là điểm nghẽn trong hệ thống của bạn.

Bảng chữ cái nằm ở phía sau cảnh và có thể dễ dàng được thay thế bằng một kết cấu. Chiếc áo khoác cũng đủ xa để có thể đơn giản hóa lưới của nó.

Những kết quả này đáng tin cậy đến mức nào?

Phân tích ban đầu do LLM trả về chỉ xem xét các công cụ sửa đổi ảnh hưởng đến khung nhìn. Đối tượng coat 1 có công cụ sửa đổi Solidify làm tăng gấp đôi số lượng đa giác của nó, khiến nó càng trở nên ngoại lệ hơn. Và mặc dù cảnh này không bật Simplify, cài đặt này cũng sẽ ảnh hưởng đến phân tích cuối cùng.


Ví dụ 2: Các lời nhắc khác nhau

Đây là một số trường hợp sử dụng đã được thử nghiệm khác. Bạn sẽ cần dán toàn bộ nội dung "Lời nhắc" để chúng hoạt động. Điểm bắt đầu bạn nên sử dụng tệp demo tương ứng. Sự thành công của thao tác sẽ phụ thuộc vào mô hình được sử dụng.

Trường hợp sử dụngLời nhắcTệp DemoKết quả
Đổi tên khối dữ liệu: sửa lỗi chính tảVới tệp Blender hiện đang mở, hãy sửa tên của tất cả các khối dữ liệu để loại bỏ lỗi chính tả. Báo cáo lại những khối dữ liệu nào đã được sửa.Scattering PebblesGRP-rocks → GRP-pebble, LGT-Lights → LGT-lights, Compositing Nodetree → Compositing Node Tree
Đổi tên khối dữ liệu: tên hay hơnVới tệp Blender hiện đang mở, hãy đề xuất tên mô tả cho tất cả các khối dữ liệu và áp dụng nếu được phê duyệt.Scattering PebblesCamera → CAM-main, Area → LGT-sun-key, Area.001 → LGT-sun-fill, Area.002 → LGT-area-rim, GEO-pebble.001 → GEO-pebble-B, …
Truy vấn quan hệ dữ liệu bằng ngôn ngữ tự nhiênNhững đối tượng nào đang sử dụng vật liệu sau: pebblesScattering Pebbles7 đối tượng: GEO-pebble, GEO-pebble.001, GEO-pebble.002, GEO-pebble.003, GEO-pebble.004, GEO-pebble.005, GEO-pebble.006
Gỡ lỗi cảnhĐối tượng nào có số lượng đa giác cao nhất trong tệp này? Bỏ qua các đối tượng không được liên kết với bất kỳ cảnh nào.Scattering PebblesGEO-ground với 4.096 mặt.
Tài liệu Geometry NodesVới tệp Blender hiện đang mở, hãy giải thích thiết lập geometry nodes chính đang làm gì. Thêm tài liệu nội tuyến cho nó bằng các phần tử khung. Tạo một khối dữ liệu Văn bản với kết quả phân tích.Scattering Pebbles4 khung chính được mã hóa màu + tệp văn bản có giải thích.

Các lời nhắc khác chưa được khám phá:

  • Dịch tất cả các khối dữ liệu từ tiếng Pháp sang tiếng Anh.
  • Lưới của tôi không bị biến dạng bởi armature, làm thế nào để sửa?
  • Blender hết bộ nhớ khi kết xuất cảnh này, làm thế nào để tối ưu hóa?
  • Lưới này có các tạo tác đổ bóng kỳ lạ, làm thế nào để sửa?
  • Tìm các đối tượng có lưới với pháp tuyến xấu.
  • Kiểm tra cảnh của tôi để tìm các đối tượng lưới được biến đổi không đồng nhất.
  • Video tôi xuất ra không phát trong trình duyệt web, tôi nên thay đổi cài đặt nào?
  • Tôi nên sử dụng bút vẽ điêu khắc nào để tạo và chi tiết hóa cành cây?
  • Thiết lập các nút compositing để lưu hình ảnh của tôi dưới dạng cả SDR và HDR.
  • Xác minh danh sách kiểm tra này:: lưới phải là manifold, tất cả các đối tượng phải có vật liệu, đặt tên phải tuân theo quy ước, không có đường dẫn tuyệt đối, … Đổi tên khối dữ liệu: sửa lỗi chính tả

GRP-rocksGRP-pebbles (cảnh chỉ chứa các đối tượng pebble, không phải rock).

LGT-LightsLGT-lights (cách viết hoa không nhất quán).

Compositing NodetreeCompositing Node Tree (Nodetree là lỗi từ ghép).

Đổi tên khối dữ liệu: tên hay hơn

Đối tượng:

  • CameraCAM-main
  • AreaLGT-sun-key
  • Area.001LGT-sun-fill
  • Area.002LGT-area-rim
  • GEO-pebble.001GEO-pebble-B
  • GEO-pebble.002GEO-pebble-C
  • GEO-pebble.003GEO-pebble-D
  • GEO-pebble.004GEO-pebble-E
  • GEO-pebble.005GEO-pebble-F
  • GEO-pebble.006GEO-pebble-G

Khối dữ liệu Đèn:

  • AreaLGT-sun-key
  • Area.001LGT-sun-fill
  • Area.002LGT-area-rim

Khối dữ liệu Camera:

  • CameraCAM-main

Kết cấu:

  • TextureTEX-ground-clouds
  • Texture.001TEX-ground-image

Cảnh & Thế giới:

  • WorldWLD-environment
  • SceneSCN-main Tài liệu Geometry Nodes

Các Khung mới được tạo:

Các khung tài liệu được thêm vào thiết lập geometry nodes.

Khối dữ liệu Văn bản:

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.