Blender MCP
ทางการเซิร์ฟเวอร์ MCP (Model Context Protocol) น้ำหนักเบาสำหรับ Blender มีอินเทอร์เฟซภาษาธรรมชาติกับ Python API ของ Blender ช่วยเพิ่มการเข้าถึงเอกสาร และให้ผู้ใช้สำรวจและทำความเข้าใจการตั้งค่าที่ซับซ้อน
คุณทำอะไรได้บ้างด้วย Blender MCP?
- วิเคราะห์ประสิทธิภาพของฉาก — ให้ผู้ช่วยค้นหาวัตถุที่มีจำนวนโพลีกอนสูงที่สุดเมื่อเทียบกับขนาดบนหน้าจอจากมุมมองกล้อง
- เปลี่ยนชื่อ data-blocks — แก้ไขคำผิดหรือใช้รูปแบบการตั้งชื่อที่สื่อความหมายสำหรับวัตถุ ไฟ กล้อง พื้นผิว และ data-blocks อื่นๆ
- สอบถามความสัมพันธ์ของข้อมูล — ใช้ภาษาธรรมชาติเพื่อถามว่าวัตถุใดใช้ material ที่กำหนด หรือ data-blocks เชื่อมต่อกันอย่างไร
- ดีบักปัญหาของฉาก — ระบุวัตถุที่มีจำนวนโพลีกอนสูงที่สุด, non-manifold meshes หรือปัญหาทั่วไปอื่นๆ ในไฟล์ที่เปิดอยู่
- จัดทำเอกสารสำหรับ Geometry Nodes setups — สร้างเฟรมเอกสารในตัวและ text data-block ที่อธิบายว่า node group ทำอะไรและมีโครงสร้างอย่างไร
เอกสาร
เซิร์ฟเวอร์ MCP (Model Context Protocol) น้ำหนักเบาสำหรับ Blender มันมีอินเทอร์เฟซภาษาธรรมชาติกับ Python API ของ Blender ปรับปรุงการเข้าถึงเอกสาร และอนุญาตให้ผู้ใช้สำรวจและทำความเข้าใจการตั้งค่าที่ซับซ้อน
สำหรับรายละเอียดทางเทคนิคและเอกสารเกี่ยวกับสถาปัตยกรรม ตรวจสอบซอร์สโค้ด
คำเตือนด้านความปลอดภัย
เซิร์ฟเวอร์ MCP จะรันโค้ดที่สร้างโดย LLM ใน Blender โดยไม่มีระบบป้องกันใดๆ เพื่อปกป้องข้อมูลของคุณจากการถูกลบหรือถูกส่งไปยังตำแหน่งระยะไกล เพื่อให้ข้อมูลของคุณปลอดภัย ขอแนะนำให้ใช้เครื่องเสมือน หรือระบบที่ไม่มีการเข้าถึงข้อมูลที่ละเอียดอ่อน
การติดตั้ง
Blender ไม่มีฟังก์ชันในตัวสำหรับการเชื่อมต่อกับ LLM
เพื่อให้ Blender เชื่อมต่อกับ LLM ได้ ต้องดาวน์โหลด ติดตั้ง และรันเครื่องมือภายนอกสามอย่างด้วยตนเอง
ข้อกำหนด:
- Blender 5.1 หรือใหม่กว่า
- Add-on
- ไคลเอนต์ LLM
- เซิร์ฟเวอร์ MCP
Add-on
เพื่อโต้ตอบกับเซสชัน Blender ของคุณ คุณต้องติดตั้ง add-on เฉพาะสำหรับการรวมเซิร์ฟเวอร์ MCP
ลากและวางลงใน Blender
…หรือดาวน์โหลดและติดตั้งจากดิสก์
หากคุณลากและวางลงใน Blender คุณจะต้องทำสองครั้ง ครั้งแรกเพื่อเพิ่มที่เก็บ Blender Lab ครั้งที่สองเพื่อติดตั้ง add-on เอง วิธีนี้ช่วยให้คุณได้รับการแจ้งเตือนการอัปเดตเมื่อใดก็ตามที่มีเวอร์ชันใหม่ของ add-on นี้พร้อมใช้งาน
ไคลเอนต์ LLM
เซิร์ฟเวอร์ MCP ปฏิบัติตามมาตรฐานที่กำหนดไว้อย่างดีและเข้ากันได้กับไคลเอนต์มากมาย โปรดทำตามเอกสารของ Llama.cpp หรือติดตั้งไคลเอนต์ LLM ตามที่คุณต้องการ
เซิร์ฟเวอร์ MCP
มีวิธีต่างๆ ในการติดตั้งเซิร์ฟเวอร์ MCP ขึ้นอยู่กับความสามารถของไคลเอนต์ LLM ของคุณ
- MCP Bundle: สำหรับไคลเอนต์รุ่นใหม่ที่รองรับไฟล์
.mcpbดาวน์โหลดแพ็คเกจล่าสุดจากหน้า release Llama.cpp ยังไม่รองรับสิ่งนี้ - MCP Server: เพื่อติดตั้งจากซอร์สโค้ด ตรวจสอบเอกสารของ Llama.cpp หรือคำแนะนำการตั้งค่า
การรัน
เมื่อคุณตั้งค่าเซิร์ฟเวอร์ MCP ภายในไคลเอนต์ LLM ของคุณแล้ว คุณสามารถเริ่มสำรวจฉาก Blender ของคุณได้
เว็บอินเทอร์เฟซ llama.cpp ที่รันเซิร์ฟเวอร์ blender-mcp
ตัวอย่างที่ 1: การวิเคราะห์ฉาก
MCP สามารถใช้ในการวิเคราะห์ฉากโดยทางโปรแกรมเพื่อหาคอขวดด้านประสิทธิภาพ ยกตัวอย่างไฟล์สาธิต Classroom:
ไฟล์สาธิต Classroom
ฉากนี้เป็นหนึ่งในไฟล์ benchmark ของ Blender เหตุผลที่ไฟล์เหล่านั้นอยู่ใน benchmark เพราะมันเป็นตัวแทนที่ดีของไฟล์การผลิตจริงที่สร้างโดยศิลปิน และไม่น่าแปลกใจที่มันสามารถมีวัตถุที่มีแนวโน้มจะถูกปรับให้เหมาะสมได้
ในขณะที่การตรวจสอบจำนวนโพลีกอนมักจะเพียงพอ สิ่งที่น่าสนใจยิ่งกว่าคือการพล็อตจำนวนโพลีกอนตามขนาดที่แสดงในการเรนเดอร์สุดท้าย สามารถทำได้ด้วยพรอมต์ต่อไปนี้
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 มี 20k โพลีกอน เนื่องจากลักษณะที่แบนราบ มันสามารถถูกแทนที่ด้วยเท็กซ์เจอร์โดยมีข้อเสียเล็กน้อยต่อผลลัพธ์สุดท้าย วัตถุ coat 1 มี 37k โพลีกอนเนื่องจากตัวปรับแต่ง Subsurf การลดระดับ subdivision สามารถช่วยแบ่งเบาฉากได้ หากหน่วยความจำเป็นคอขวดในระบบของคุณ
ตัวอักษรอยู่ด้านหลังของฉากและสามารถถูกแทนที่ด้วยเท็กซ์เจอร์ได้อย่างง่ายดาย เสื้อโค้ทก็อยู่ไกลพอที่จะทำให้เมชของมันง่ายขึ้นได้
ผลลัพธ์เหล่านี้น่าเชื่อถือแค่ไหน?
การวิเคราะห์เบื้องต้นที่ส่งคืนโดย LLM พิจารณาเฉพาะตัวปรับแต่งที่มีผลต่อวิวพอร์ต วัตถุ coat 1 มีตัวปรับแต่ง Solidify ซึ่งเพิ่มจำนวนโพลีกอนเป็นสองเท่า ทำให้มันยิ่งเป็นค่าผิดปกติมากขึ้นไปอีก และถึงแม้ว่าฉากนี้จะไม่ได้เปิดใช้ Simplify การตั้งค่านี้ก็จะส่งผลต่อการวิเคราะห์สุดท้ายเช่นกัน
ตัวอย่างที่ 2: พรอมต์ต่างๆ
นี่คือบางกรณีการใช้งานอื่นๆ ที่ทดสอบแล้ว คุณจะต้องวางเนื้อหา "Prompt" ทั้งหมดเพื่อให้มันทำงาน เป็นจุดเริ่มต้นคุณควรใช้ไฟล์สาธิตที่เกี่ยวข้อง ความสำเร็จของการดำเนินการจะขึ้นอยู่กับโมเดลที่ใช้
| กรณีการใช้งาน | พรอมต์ | ไฟล์สาธิต | ผลลัพธ์ |
|---|---|---|---|
| การเปลี่ยนชื่อ data-block: แก้ไขคำผิด | ด้วยไฟล์ Blender ที่เปิดอยู่ในปัจจุบัน แก้ไขชื่อของ data-block ทั้งหมดเพื่อลบคำผิด รายงานกลับว่า data-block ใดได้รับการแก้ไข | Scattering Pebbles | GRP-rocks → GRP-pebble, LGT-Lights → LGT-lights, Compositing Nodetree → Compositing Node Tree |
| การเปลี่ยนชื่อ data-block: ชื่อที่ดีขึ้น | ด้วยไฟล์ Blender ที่เปิดอยู่ในปัจจุบัน แนะนำชื่อที่สื่อความหมายสำหรับ data-block ทั้งหมด และนำไปใช้หากได้รับการอนุมัติ | 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 หลักกำลังทำอะไร เพิ่มเอกสารแบบอินไลน์ด้วยองค์ประกอบเฟรม สร้าง data-block ข้อความพร้อมผลลัพธ์ของการวิเคราะห์ | Scattering Pebbles | 4 เฟรมรหัสสีหลัก + ไฟล์ข้อความพร้อมคำอธิบาย |
พรอมต์อื่นๆ ที่ยังไม่ได้สำรวจ:
- แปล data-block ทั้งหมดจากภาษาฝรั่งเศสเป็นภาษาอังกฤษ
- เมชของฉันไม่ถูกเปลี่ยนรูปโดย armature ของฉัน ฉันจะแก้ไขได้อย่างไร?
- Blender หน่วยความจำหมดขณะเรนเดอร์ฉากนี้ ฉันจะปรับให้เหมาะสมได้อย่างไร?
- เมชนี้มีอาร์ติแฟกต์การแรเงาที่แปลก ฉันจะแก้ไขได้อย่างไร?
- ค้นหาวัตถุที่มีเมชที่มี normal ไม่ดี
- ตรวจสอบฉากของฉันสำหรับวัตถุเมชที่ถูกแปลงแบบไม่สม่ำเสมอ
- วิดีโอที่ฉันส่งออกไม่เล่นในเว็บเบราว์เซอร์ของฉัน ฉันควรเปลี่ยนการตั้งค่าใด?
- ฉันควรใช้ sculpt brushes ใดสำหรับการสร้างและเก็บรายละเอียดกิ่งไม้?
- ตั้งค่า compositing nodes เพื่อบันทึกภาพของฉันทั้งแบบ SDR และ HDR
- ตรวจสอบรายการตรวจสอบนี้:: เมชต้องเป็น manifold, วัตถุทั้งหมดต้องมีวัสดุ, การตั้งชื่อต้องเป็นไปตามแบบแผน, ไม่มีพาธแบบ absolute, … การเปลี่ยนชื่อ data-block: แก้ไขคำผิด
GRP-rocks → GRP-pebbles (ฉากมีเฉพาะวัตถุ pebble ไม่ใช่ rocks)
LGT-Lights → LGT-lights (การใช้ตัวพิมพ์ใหญ่ไม่สม่ำเสมอ)
Compositing Nodetree → Compositing Node Tree (Nodetree เป็นข้อผิดพลาดของคำประสม)
การเปลี่ยนชื่อ data-block: ชื่อที่ดีขึ้น
วัตถุ:
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
Light Data-Blocks:
Area→LGT-sun-keyArea.001→LGT-sun-fillArea.002→LGT-area-rim
Camera Data-Block:
Camera→CAM-main
เท็กซ์เจอร์:
Texture→TEX-ground-cloudsTexture.001→TEX-ground-image
Scene & World:
World→WLD-environmentScene→SCN-mainเอกสาร Geometry Nodes
เฟรมใหม่ที่สร้างขึ้น:
เฟรมเอกสารที่เพิ่มเข้าไปในการตั้งค่า geometry nodes
Text Data-block:
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.