polywright-blender は何をしますか?
Blenderは作業の主力です。無料、全OS対応、あらゆるボタンまでスクリプト可能。エージェントは、ライブセッションのスクリーンショットではなく、ヘッドレスでコピーに対して短いテキストレポートを出力するのが最適です。 ハブに戻る:../polywright/SKILL.md。 詳細:references/bpy-api-traps.md、references/bpy-recipes.md、 references/bpy-recipes-scenes.md、references/bpy-recipes-physics.md (各レシピはテストスイートで実行されます)、 references/mcp-bridges.md、 references/tools-by-os.md。
ステップ1:Blenderの特定
python ../polywright/scripts/pw.py doctor でBlenderを見つけ(POLYWRIGHT_BLENDER、PATH、Windows、macOS、Linuxのインストールフォルダ)、バージョンを表示します。現在のLTS(5.2、2028年7月までサポート)をターゲットにします。バージョンをスクリプトの最初のコメントに記述します。以下のAPI情報は5.2用です。
ステップ2:ヘッドレスでのスクリプト実行
python ../polywright/scripts/pw.py bpy build.py [--blend in.blend] [--timeout 1800] -- <script args>
pw.py自身のオプションはスクリプト名の前後に配置できます。--以降はすべてスクリプトに渡されます。
これは blender --background --factory-startup --python-exit-code 3 --python build.py -- args を実行し、Blenderのログノイズを取り除き、ok、スクリプト自身の出力行、およびトレースバックを返します。--python-exit-code がない場合、Blender内のPythonエラーでも終了コードは0になります。これ以外の方法で終了コードだけで成功を判断しないでください。必要な数値(サイズ、カウント、チェック)については、独自の [pw] 行を出力します。
スクリプトのルール:
bpy.ops.wm.read_factory_settings(use_empty=True)または明示的な.blendから開始します。ユーザーのスタートアップファイルに依存しないでください。bpy.opsよりもbpy.dataとbmeshを優先します。オペレーターが必要な場合は、最初にアクティブオブジェクトと選択を設定するか、with bpy.context.temp_override(...)を使用します。- ビューポートオペレーターはヘッドレスでは失敗します(
view3d.*、screen.screenshot、render.opengl)。自分でバウンディングからカメラをフレーミングします(pw.py renderが行うように)。 - 列挙型のアイテムは推測せずに読み取ります:
m.bl_rna.properties["solver"].enum_items。 - 実際のサイズはメートル単位。測定前にトランスフォームを適用し、glTFインポートはクォータニオンモードで軸修正が親に適用されます。トランスフォームを保持したまま親をクリアしてから適用、測定します。
- すべての出力パスは絶対パス(
os.path.abspath)で記述し、その後ファイルが存在するかどうかを出力します。相対パスのrender.filepathは成功を報告しましたが、表示可能なものは何も書き込みませんでした(L-004)。 - マイルストーンごとに番号付きの
.blendをwork/に保存します。長いライブセッションを続けるよりも、そこから再開します。 - レンダリング前にシミュレーションをベイクし、キャッシュフォルダは
.blendの隣に配置します(デフォルトは一時的で、終了時に失われます)。ベイクの進行状況はstdoutを大量に出力するため、pw.py bpyは中央部分をカットします。結果はJSONファイルに書き込みます。 - トレースバックが発生した場合は2回リトライします。それでも解決しない場合は、3回目を推測する代わりにAPIを調べます(トラップファイル、イントロスペクション、公式MCPのドキュメント検索)。
ステップ3:トラップ(簡易リスト。完全なリストはトラップファイルにあります)
| 古い書き方 | 5.xでの使用法 |
|---|---|
bpy.ops.import_scene.obj、import_mesh.stl、import_mesh.ply、wm.collada_* | wm.obj_import、wm.stl_import、wm.ply_import。Colladaは廃止されました |
BLENDER_EEVEE_NEXT | BLENDER_EEVEE |
import bgl | gpu モジュール |
Principled Specular、Subsurface、Transmission、Emission、Clearcoat | Specular IOR Level、Subsurface Weight、Transmission Weight、Emission Color、Coat Weight |
action.fcurves | スロットアクション:レイヤー、ストリップ、チャンネルバッグ |
ジオメトリノードの mod["Socket_2"] = x | mod.properties.inputs.Socket_2.value = x |
import_image.to_plane | image.import_as_mesh_planes |
Workbench shading.show_shadow | shading.show_shadows |
obj.select = True、scene.objects.active、mesh.use_auto_smooth、scene.node_tree(2.7xの書籍) | select_set、view_layer.objects.active、shade_auto_smooth または set_sharp_from_angle、scene.compositing_node_group |
transform_apply(scale=True) 単独 | 位置と回転も適用されます:location=False, rotation=False を渡します |
ステップ4:一般的なジョブ
pw.py はすでに、インスペクト、レンダリング、変換、LOD、印刷可能、ユニオンを行います。その他については、references/bpy-recipes.md からレシピを取得します:スケールに合わせたリファレンス画像、モディファイアと適用、マニフォールドソルバーとEXACTフォールバックを使ったブーリアン、ボクセルリメッシュ、QuadriFlow、スマートUVとライトマップUV、ハイからローへの法線とAOベイク、5.xソケットに対応したマテリアル、ターンテーブルスチル、ビデオ用の深度と法線パス、エンジンごとのエクスポート、および説明文からデザインされたプロップ(旋盤、スイープ、ミラー。L-003)。シーン:references/bpy-recipes-scenes.md:ジオメトリノード散布、逆深度、マスク、1レンダリングからのミストと法線、マテリアルオーバーライドによるクレイ、ラインアート、Blender自身のFFmpegによるMP4。物理とリグ:references/bpy-recipes-physics.md:剛体と布のベイク、Rigifyリグがゲーム用スケルトンでない理由、手動でのアーマチュアへのバインド、ボリュームリメッシュ。ペアレンティング、Fモディファイアモーションとドライバー:references/bpy-recipes-motion.md。鏡像パーツを含むモデルのシート:サイドカメラを10〜15度上げるか、パーツが互いに隠れないようにします(L-005)。
ステップ5:ライブセッション(MCP)
2つのサーバーが存在します:Blender Lab公式MCP(v1.0.3、Blender 5.1以上、シーン分析とAPIドキュメント検索)とコミュニティのmcp-for-blender(旧blender-mcp;アセット検索とジェネレーターフック)。どちらもモデルが送信する任意のPythonをサンドボックスなしでポート9876で実行します。どちらか一方を使用し、両方は使用しないでください。ユーザーがBlenderを監視し、ライブ編集を望む場合にのみ使用します。ダウンロードしたファイルからコードをペーストしないでください。セットアップと障害モード:references/mcp-bridges.md。ライブセッションでは、エディタにバインドされたオペレーターを context.temp_override(window=w, area=a, region=r) でラップします。モーダルオペレーターと bpy.app.timers はそこでしか実行されず、-b の下では決して実行されません。
その他のツール
Blenderを使わないメッシュチェックと修復:trimesh + manifold3d(+ PyMeshLab)。Web配信:gltf-transformまたはgltfpack。ソリッド:OpenSCAD、build123d、CadQuery、FreeCAD。スライサーにはCLIがあります。バージョンと各OSで動作するもの:references/tools-by-os.md。macOSでは、Blender 5.xとbpy wheelはApple Siliconのみ対応。bpy wheelはBlenderがバンドルするPythonと正確に一致する必要があります(5.2の場合はPython 3.13)。
メンテナンス
常緑ユニット、ティアmoderate(Blenderリリースは4ヶ月ごと。リリースごとにチェック)。コンパニオン:RESEARCH.md、CHANGELOG.md、LEARNINGS.md、TESTS.md(evals/evals.json 付き)、MAINTENANCE.md、状態は evergreen.json。使用のたびに evergreen.json を読み取り、期限が切れたら更新します。