blender-core について
blender-coreは、Blenderのシーンやスクリプトを扱うエージェント向けのBlender 5.2 LTS以降対応スキルです。ライブMCPとヘッドレス実行、APIの実践、専門スキルへの振り分け、検証手順を説明します。
主な機能
- 01専門的なBlenderスキルへタスクを振り分け
- 02ライブまたはヘッドレスでスクリプトを実行
- 03Blender 5.x APIの指針を適用
- 04シーンを安全に編集
- 05納品前にアセットと出力ファイルを検証
活用シーン
- 01エージェントからBlender編集を自動化
- 02ヘッドレスパイプラインでスクリプトを実行
- 03Blender 5.2 APIの変更にコードを適応
- 04納品前にシーンの変更を確認
MCP 対応
ライブ操作では、blender-mcpのexecute_blender_codeを呼び出し、look機能で視覚的に確認する方法を説明します。シェルを使うエージェント向けのヘッドレス実行方法も記載されています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ el4cteo/ blender-skills --skill blender-coreインストール後、Claude Code で/blender-coreを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/api-changes-5x.mdbpy-patterns.mdscripts/_bpyx.pyenv_report.pyrun_in_blender.py詳細
Blender Core (5.2 LTS+)
専門スキルへの案内
| タスク | スキル |
|---|---|
| 単位、コレクション、命名、リンク、アセットライブラリ | blender-scene-setup |
| ハードサーフェスモデリング、ベベル、ブーリアン、法線 | blender-hardsurface-modeling |
| スカルプト、マルチレゾリューション、リメッシュ | blender-sculpting |
| リトポロジー、UV展開、テクセル密度 | blender-retopology-uv |
| PBR マテリアル、色空間、テクスチャセット | blender-pbr-materials |
| ハイポリからローポリへのマップのベイク(法線、AO、曲率など) | blender-texture-baking |
| ジオメトリノード、プロシージャルモデリング | blender-geometry-nodes |
| ボディリギング、Rigify、ウェイトペイント | blender-character-rigging |
| フェイスリグ、シェイプキー、ARKit、ビジーム | blender-facial-shapekeys |
| キーフレーム、アクション、NLA、ベイク、ルートモーション | blender-animation |
| ポリゴン予算、LOD、ドローコール、クリーンアップ | blender-game-optimization |
| Roblox、Unity、Unreal、Godot、Web 向けのエクスポート:glTF/FBX/USD | blender-export-pipelines |
| Cycles/EEVEE の設定、コンポジター、バッチレンダー | blender-rendering |
| ライティング、HDRI、カメラ、ターンテーブル | blender-lighting-lookdev |
| 時刻、夜、夕焼け、霧、ムード(サイバーパンク、ホラーなど) | blender-time-of-day |
| 雨、雪、濡れた表面、水たまり、稲妻、ほこり/火の粉 | blender-weather-fx |
| クロス、リジッドボディ、流体、髪、GN 物理演算 | blender-simulation |
| アドオン/拡張機能の作成 | blender-addon-development |
| バッチ/ヘッドレスのパイプライン、ファイル変換 | blender-pipeline-automation |
| 納品前のメッシュ/アセットのチェック(常に実施) | blender-asset-qa |
| エンドツーエンドのプレイブック(プロップ、キャラクター、Roblox、製品ショット) | blender-workflow-recipes |
実行
ライブ(blender-mcp execute_blender_code):小さなステップで作業し、必要なものだけを出力します。スキルのスクリプトを呼び出すには、インポートします:
import sys, importlib; sys.path.insert(0, r"<skills_dir>/blender-asset-qa/scripts")
import qa_check; importlib.reload(qa_check); print(qa_check.run(objects=["Chair"]))
各 MCP 呼び出しは新しい名前空間で実行されます。呼び出しごとに再度 import してください。モジュールは sys.modules にキャッシュされるため、コストはわずかです。スクリプトを編集した後にのみ reload してください。
ヘッドレス(シェルを使える任意のエージェント):スクリプトの JSON(@@JSON@@ 行)のみを出力します:
python <skills_dir>/blender-core/scripts/run_in_blender.py --blend in.blend <script.py> -- --objects Chair --save out.blend
python <skills_dir>/blender-core/scripts/run_in_blender.py --expr "import bpy; print(len(bpy.data.objects))"
生の形式:blender -b in.blend --factory-startup --python-exit-code 1 -P x.py -- args。ここにあるすべてのスクリプトは run(**kw) -> dict を公開し、-- の後に同じフラグを指定できます。
セッションでの最初の呼び出し:scripts/env_report.py を実行します。バージョン、エンジン、GPU、アドオン、単位、カラー管理、シーンの数が返されます。
ルール
- オペレーターよりデータ API:
bpy.data、bmesh、mesh.attributes、および numpy を使ったforeach_get/setを使用してください。オペレーターはコンテキストと選択状態に依存し、多くの場合 3D ビューが必要ですが、バックグラウンドモードにはありません。 - オペレーターが避けられない場合:
with bpy.context.temp_override(object=ob, active_object=ob, selected_objects=[ob], selected_editable_objects=[ob]): bpy.ops...を使用してください。結果が{'FINISHED'}であることを確認してください。 - 編集モードの分離:編集モード中は
ob.dataが更新されません。bmesh.from_edit_meshとbmesh.update_edit_meshを使うか、読み取る前に OBJECT モードに切り替えてください。 - ノード:名前はローカライズされるため、
nameではなくtype(n.type == "BSDF_PRINCIPLED")で検索してください。ソケットは英語名でもidentifierでも問題ありません。 - 列挙型:
[i.identifier for i in T.bl_rna.properties[p].enum_items]で有効な値を読み取ってください。動的列挙型(render.engine、view_transform、look)は一部しか表示されないため、try/except TypeErrorの中で割り当ててください(メッセージに有効な値が表示されます)。 - エンジン:
BLENDER_EEVEE、CYCLES、BLENDER_WORKBENCH。Cycles のデバイス:scene.cycles.device = "GPU"とプリファレンスのcompute_device_typeを設定します。 - 評価済みデータ:
ob.evaluated_get(depsgraph)、続いて.to_mesh()を使用し、その後は必ず.to_mesh_clear()を呼び出してください。変更後にmatrix_worldを読み取る前にview_layer.update()を呼び出してください。 - 解放済みデータ:モディファイアーの適用または削除、オブジェクトや ID の削除を行うと、データは解放されます。先に名前を収集し(
[m.name for m in ob.modifiers])、古い Python 参照にはその後触れないでください。ガベージが返されたり、クラッシュしたりする可能性があります。 - デフォルト名を信用しない("Cube.001")。オブジェクト参照を保持し、明示的に名前を変更して、
bpy.data.objects[name]でオブジェクトを検索してください。 - スケール:1 単位 = 1 m です。ベベル、距離を使うモディファイアー、リギング、物理演算、ベイク、エクスポートの前に、回転とスケールを適用してください(
transform_apply)。 - パス:
bpy.path.abspath("//textures/x.png")は .blend を基準とした相対パスを解決します。明示的に保存し、バックアップにはsave_as_mainfile(filepath=..., copy=True)を使用してください。 - ライブセッションはユーザーの作業です:
read_factory_settingsは絶対に使用せず、自分が作成していないデータを削除しないでください。破壊的な一括編集の前にバックアップコピーを保存してください。 - バックグラウンドでの GPU モジュール:最初に
gpu.init()を呼び出してください(5.2+)。bglはもう存在しません。 - 大きなメッシュ:頂点ごとに
bpy.opsを使わないでください。numpy のforeach_getを使用してください(references/bpy-patterns.md を参照)。
古いチュートリアルや LLM の記憶が使えなくなる 5.x API の変更
action.fcurves → channelbags · scene.node_tree → scene.compositing_node_group · material.use_nodes は非推奨(新しいマテリアルにはすでにノードがあります) · mod["Socket_2"] → mod.properties.inputs.Socket_2.value(5.2) · BLENDER_EEVEE_NEXT → BLENDER_EEVEE · Boolean FAST → FLOAT · ボーンレイヤー → ボーンコレクション · bl_info アドオン → エクステンション(blender_manifest.toml) · bpy.props の値は辞書形式でアクセスできなくなりました(scene["cycles"])。全表:references/api-changes-5x.md。
検証(「完了」と報告する前に必須)
- 形容詞ではなく数値を報告してください:三角形数、オブジェクト数、マテリアル数、寸法(
ob.dimensions)、および書き出したファイル。 - ジオメトリを変更した場合 →
blender-asset-qaのqa_check.pyを実行してください(Z ファイティング、分離したパーツ、非多様体、法線の反転、スケール)。 - 実物を確認してください:MCP の
look(mode="angles"、シェーディングはmaterial/wireframe)。ヘッドレスの場合:blender-asset-qa/scripts/review_shots.pyでコンタクトシートをレンダリングします。 - 自分の出力を再確認してください:エクスポートしたファイルが存在し、サイズが 0 ではないことを確認してください。
参考資料
- references/api-changes-5x.md:4.x→5.2 の移行表です。コードで AttributeError/KeyError が発生した場合に読み込んでください。
- references/bpy-patterns.md:bmesh、属性、numpy、temp_override、depsgraph、ドライバー、append/link、ハンドラー、タイマーの検証済みスニペットです。