Blender MCP

resmi

Server MCP (Model Context Protocol) ringan untuk Blender. Menyediakan antarmuka bahasa alami dengan API Python Blender, meningkatkan akses ke dokumentasi, dan memungkinkan pengguna menjelajahi serta memahami pengaturan yang kompleks.

Apa yang bisa Anda lakukan dengan Blender MCP?

  • Analisis performa scene — Minta AI Anda untuk menganalisis scene Blender yang terbuka dan mengidentifikasi objek dengan jumlah poligon tinggi relatif terhadap ukuran di layar, seperti deteksi outlier pada demo kelas.
  • Penggantian nama data-block — Minta asisten untuk memperbaiki kesalahan ketik atau menyarankan nama deskriptif untuk semua data-block di file saat ini, menerapkan perubahan hanya setelah persetujuan Anda.
  • Pertanyaan scene bahasa alami — Ajukan pertanyaan tentang hubungan antar objek, seperti "Objek mana yang menggunakan material 'pebbles'?" atau identifikasi objek dengan jumlah poligon tertinggi di scene.
  • Dokumentasi Geometry Nodes — Minta penjelasan tentang pengaturan geometry nodes utama, dengan dokumentasi bingkai inline dan data-block teks yang merangkum analisis.
  • Debugging scene — Dapatkan bantuan untuk memecahkan masalah seperti mesh dengan skala tidak seragam, normal yang buruk, atau objek yang tidak berdeformasi dengan benar menggunakan armature.

Dokumentasi

Server MCP (Model Context Protocol) yang ringan untuk Blender. Server ini menyediakan antarmuka bahasa alami dengan API Python Blender, meningkatkan akses ke dokumentasi, serta memungkinkan pengguna untuk mengeksplorasi dan memahami pengaturan yang kompleks.

Untuk detail teknis dan dokumentasi tentang arsitektur, periksa kode sumber.

[!warning] Peringatan Peringatan Keamanan
Server MCP akan mengeksekusi kode yang dihasilkan LLM di Blender tanpa ada pengaman yang melindungi data Anda dari penghapusan atau pengiriman ke lokasi jarak jauh. Untuk menjaga keamanan data Anda, disarankan menggunakan mesin virtual, atau sistem tanpa akses ke informasi sensitif.

Instalasi

Blender tidak memiliki fungsionalitas bawaan untuk terhubung dengan LLM.

Agar Blender dapat terhubung dengan LLM, tiga alat eksternal harus diunduh, diinstal, dan dijalankan secara manual.


Add-on

Untuk berinteraksi dengan sesi Blender Anda, Anda perlu menginstal add-on khusus untuk integrasi Server MCP.

…atau unduh dan Instal dari Disk

Jika Anda menyeret & menjatuhkan ke Blender Anda perlu melakukannya dua kali. Pertama untuk menambahkan repositori Blender Lab, kedua untuk menginstal add-on itu sendiri. Metode ini memungkinkan Anda menerima notifikasi pembaruan setiap kali versi baru add-on ini tersedia.


Klien LLM

Server MCP mengikuti standar yang terdefinisi dengan baik dan kompatibel dengan berbagai klien. Silakan ikuti dokumentasi LLama.cpp, atau instal klien LLM sesuai preferensi Anda.


Server MCP

Ada beberapa cara untuk menginstal Server MCP tergantung pada kemampuan klien LLM Anda.

Menjalankan

Setelah Anda mengatur Server MCP di dalam Klien LLM Anda, Anda dapat mulai menjelajahi scene Blender Anda.

Antarmuka web llama.cpp yang menjalankan server blender-mcp.


Contoh 1: Analisis Scene

MCP dapat digunakan untuk menganalisis scene secara terprogram untuk mencari hambatan kinerja. Ambil contoh file demo Classroom:

File demo Classroom.

Scene ini adalah salah satu file benchmark Blender. Alasan file-file tersebut ada di benchmark adalah karena file-file tersebut merupakan representasi yang baik dari file produksi nyata yang dibuat oleh seniman. Dan tidak mengherankan jika file tersebut dapat mengandung objek yang rentan untuk dioptimalkan.

Meskipun memeriksa jumlah poligon sering kali cukup, yang lebih menarik adalah memplot jumlah poligon berdasarkan seberapa besar tampilannya pada render akhir. Ini dapat diperoleh dengan prompt berikut.

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

Data hasil plot menunjukkan dengan jelas dua objek yang menonjol dari yang lain: alphabet dan coat 1:

Graph analysis of the polycount per screen area

Analisis grafik jumlah poligon per area layar untuk scene demo classroom.

Objek alphabet memiliki 20 ribu poligon. Karena susunannya yang datar, objek tersebut dapat diganti dengan tekstur dengan sedikit dampak negatif pada hasil akhir. Objek coat 1 memiliki 37 ribu poligon karena modifier Subsurf-nya. Menurunkan tingkat subdivisi dapat meringankan scene, jika memori menjadi hambatan pada sistem Anda.

Alfabet berada di bagian belakang scene dan dapat dengan mudah diganti dengan tekstur. Mantel juga cukup jauh sehingga mesh-nya dapat disederhanakan.

[!info] Info Seberapa andal hasil tersebut?

Analisis awal yang dikembalikan oleh LLM hanya mempertimbangkan modifier yang memengaruhi viewport. Objek coat 1 memiliki modifier Solidify yang menggandakan jumlah poligonnya, menjadikannya lebih menonjol. Dan meskipun scene ini tidak memiliki Simplify yang diaktifkan, pengaturan ini juga akan memengaruhi analisis akhir.


Contoh 2: Berbagai Prompt

Berikut adalah beberapa kasus penggunaan lain yang telah diuji. Anda perlu menempelkan seluruh konten "Prompt" agar berfungsi. Sebagai titik awal, Anda harus menggunakan file demo yang sesuai. Keberhasilan operasi akan bergantung pada model yang digunakan.

Kasus PenggunaanPromptFile DemoHasil
Penggantian nama data-block: perbaiki typoWith the current open Blender file fix the name of all the data-blocks to remove typos. Report back which data-blocks got fixed.Scattering PebblesGRP-rocks → GRP-pebble, LGT-Lights → LGT-lights, Compositing Nodetree → Compositing Node Tree
Penggantian nama data-block: nama yang lebih baikWith the current open Blender file suggest descriptive names for all data-blocks, and apply if approved.Scattering PebblesCamera → CAM-main, Area → LGT-sun-key, Area.001 → LGT-sun-fill, Area.002 → LGT-area-rim, GEO-pebble.001 → GEO-pebble-B, …
Menanyakan hubungan data menggunakan bahasa alamiWhich objects are using the following material: pebblesScattering Pebbles7 objek: GEO-pebble, GEO-pebble.001, GEO-pebble.002, GEO-pebble.003, GEO-pebble.004, GEO-pebble.005, GEO-pebble.006
Debugging sceneWhat is the object with the highest poly-count on this file? Ignore objects which are not linked to any scene.Scattering PebblesGEO-ground dengan 4.096 wajah.
Dokumentasi Geometry NodesWith the current open Blender file explain what the main geometry nodes setup is doing. Add inline documentation for it with frame elements. Create a Text data-block with the result of analysis.Scattering Pebbles4 bingkai berkode warna utama + file teks dengan penjelasan.

Prompt lain yang belum dieksplorasi:

  • Terjemahkan semua data-block dari bahasa Prancis ke bahasa Inggris.
  • Mesh saya tidak terdeformasi oleh armature saya, bagaimana cara memperbaikinya?
  • Blender kehabisan memori saat merender scene ini, bagaimana cara mengoptimalkannya?
  • Mesh ini memiliki artefak shading yang aneh, bagaimana cara memperbaikinya?
  • Temukan objek yang memiliki mesh dengan normal yang buruk.
  • Periksa scene saya untuk objek mesh yang ditransformasi secara tidak seragam.
  • Video yang saya ekspor tidak dapat diputar di browser web saya, pengaturan apa yang harus saya ubah?
  • Kuas sculpt mana yang harus saya gunakan untuk membuat dan merinci cabang pohon?
  • Atur node compositing untuk menyimpan gambar saya sebagai SDR dan HDR.
  • Verifikasi daftar periksa ini: mesh harus manifold, semua objek harus memiliki material, penamaan harus mengikuti konvensi, tidak ada jalur absolut, … Penggantian nama data-block: perbaiki typo

GRP-rocksGRP-pebbles (scene hanya berisi objek pebble, bukan rocks).

LGT-LightsLGT-lights (kapitalisasi tidak konsisten).

Compositing NodetreeCompositing Node Tree (Nodetree adalah kesalahan kata majemuk).

Penggantian nama data-block: nama yang lebih baik

Objek:

  • 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

Data-Block Cahaya:

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

Data-Block Kamera:

  • CameraCAM-main

Tekstur:

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

Scene & World:

  • WorldWLD-environment
  • SceneSCN-main Dokumentasi Geometry Nodes

Bingkai baru yang dibuat:

Documentation frames added to the geometry nodes setup.

Bingkai dokumentasi ditambahkan ke pengaturan geometry nodes.

Data-Block Teks:

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.