⑤[VSCode][Blernder]VSCodeでBlernder5.0のpythonスクリプトを実行する。

第1回 [環境構築]Blender MCPのはじめかた。(Blender MCP x Claude Desktop)
第2回 [環境構築]Blender MCPのはじめかた。(Blender MCP x Github Copilot)
第3回 [環境構築]Blender MCPのはじめかた。(Blender MCP x Cursor)
第4回 Blernder MCPを使わずpythonスクリプトを生成する。
第5回 [環境構築]VSCodeでBlernder5.0のpythonスクリプトを実行する。
第6回 ChatGPTでPythonスクリプト生成→アルファベットアニメ生成をやってみた。
要は環境構築の話で。ホントは一番最初にやりそうなテーマなんだけど、まー紆余曲折を経て第5回になりました。前提として「Blender MCPはそんなでも...」ってのがモチベーションです。
成果物
Abstract
- VSCodeでのBlernder5.0のpythonスクリプトの実行方法の説明
前提
ざっくり手順
- Blender側で常駐のTCPサーバーを起動し、pythonスクリプトを待つ
- 受け取ったBlenderで、Pythonスクリプトを実行
- VSCode側でBlenderにPythonスクリプトを送り付ける
1. Blender側で常駐のTCPサーバーを起動し、pythonスクリプトを待つ
GithubからDownLoadした一式から、blender_server_startup.blendをダブルクリックする。
すでに、TCPサーバー起動を仕込んでいるのでBlender起動するだけでOK.
2. VSCode側でBlenderにPythonスクリプトを送り付ける
send_to_blender.pyをVSCodeで開いて実行(VSCodeの実行とデバッグを押下)する。
実行するコードはこれ↓
import os
import time
import socket
import sys
from pathlib import Path
# ======= 設定(環境変数で上書き可) ===============
HOST = os.getenv("BLENDER_HOST", "127.0.0.1")
PORT = int(os.getenv("BLENDER_PORT", "5000"))
# ==============================================
def is_server_ready(host: str, port: int, timeoutsec: float) -> bool:
""" host:portが疎通できるか timeoutsecまで繰り返し試す """
deadline = time.time() + timeoutsec
while time.time() < deadline:
try:
with socket.create_connection((host, port), timeout=0.5):
return True
except OSError:
time.sleep(0.2)
return False
def send_concat(files):
""" 複数ペイロードを結合して1回の送信で実行させる """
parts = []
for p in files:
t = Path(p).read_text(encoding="utf-8").rstrip()
parts.append(t)
payload = "\nprint('--- payload separator ---')\n".join(parts) + "\n"
print(f"[VS2Blend] Sending {len(files)} payload(s) to {HOST}:{PORT}.")
with socket.create_connection((HOST, PORT), timeout=3.0) as s:
s.sendall(payload.encode("utf-8"))
try:
s.settimeout(2.0)
resp = s.recv(65536)
print(resp.decode("utf-8", errors="replace"))
except Exception:
pass
print(f"[VS2Blend] done.")
def main():
files = sys.argv[1:]
if not files:
print("[VS2Blend] usage: send_to_blender.py <file1.py> <file2.py> ...", file=sys.stderr)
sys.exit(2)
# 先にBlender側のサーバが起動しているかを確認(手動起動)
if not is_server_ready(HOST, PORT, 3.0):
print(f"[VS2Blend] Blender TCP server not ready at {HOST}:{PORT}.", file=sys.stderr)
print(" - 先に blender_server_startup.blend をダブルクリックで起動してください。", file=sys.stderr)
sys.exit(1)
send_concat(files)
if __name__ == "__main__" :
main()
3. 受け取ったBlenderで、Pythonスクリプトを実行
手順2で実行するだけで、Blenderが受信しPythonスクリプトを実行するのでこの手順では確認するだけ。
下記の様に"hello world!"が表示されればOK。これで開発準備完了。

.vscode/launch.jsonの"console"の行に"externalTerminal"を設定しているのでコマンドプロンプトで実行されてる。"internalTerminal"に設定するとVSCodeのプロンプトに出力される。
{
"version": "0.2.0",
"configurations": [
{
"name": "Send to Blender",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/send_to_blender.py",
"args": [
"${workspaceFolder}/ki001.py"
],
- "console": "internalTerminal", // 実行ログをVSCodeのターミナルに出力する
+ "console": "externalTerminal", // 実行ログをVSCodeのターミナルに出力する
"cwd": "${workspaceFolder}", // カレントフォルダ設定
"justMyCode": true, // 自分んコードだけをステップインする(外部ライブラリはスキップ)
"env": {
"PYTHONUNBUFFERED": "1", // 出力行バッファリングを切ってprintの表示を即時にする
// 必要に応じてここで上書き可能
// "BLENDER_EXE": "c:\\Program Files\\..."
}
}
]
}
分かったら簡単だけど、むずかったー。
これでPythonスクリプトがはかどるはず。
以上です。
お役に立ちますように。。。
Discussion