Communitygithub.com

Blender 物理節點工作流程技能

模組化的 Blender 5.2.1 LTS 幾何節點物理工作流程,支援剛體散射、布料繩索與流體發射三大領域,以及隔離的 CLI 自動化。

Blender 物理節點工作流程技能 是什麼?

此技能專為 Blender 5.2.1 LTS(已驗證建構 9e2066aef7ef)設計,提供統一的交互式幾何節點物理工作流程。它透過一個 N-Panel 工作台(Physics Nodes)和一個獨立的 CLI 入口(<REPO_ROOT>/tools/physics_workflow_cli_v1/cli.py)來操作。技能的核心是一套三層節點架構:Wrapper、Core 以及 12 個模組化的無狀態子組,涵蓋力場、碰撞、約束、步進求解器和後處理。它支援剛體散射(rigid_scatter)、布料繩索(cloth_rope)和流體發射(fluid_emission)三大領域,並內建 6 種預設(如 rigid_drop_pack、cloth_banner_wind、fluid_fountain_sdf 等)。此外,技能提供多種求解器橋接模式(GN_NATIVE、XPBD_ASSET_BRIDGE、BULLET_BRIDGE、MANTAFLOW_BRIDGE)和導出格式(NONE、STATIC_MESH、ALEMBIC、OPENVDB)。CLI 工具支援單場景構建、烘焙、冷重開驗證、Alembic 導出、參數掃描(sweep)和批次處理(batch),並內建 Blender 5.2.1 的關鍵相容性檢查清單,避免常見錯誤。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/tsist/blender-physics-workflow/tree/HEAD/skills/blender-physics-workflow

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Blender 物理節點工作流程技能 (Blender 5.2.1 LTS)

本技能面向 Blender 5.2.1 LTS(已驗證建構 9e2066aef7ef),提供互動式三維視口 N 面板工作台(Physics Nodes)以及隔離的外部批次 CLI 入口 <REPO_ROOT>/tools/physics_workflow_cli_v1/cli.py。

[!IMPORTANT] 並發與安全邊界:物理工作流程插件與 CLI 完全獨立於 tools/blenderctl/、tools/geometry_nodes_workflow_addon/ 和 tools/uv_workflow_addon/ 執行;嚴禁未授權覆蓋來源 .blend 檔案或跳過 SHA-256 校驗與磁碟快取失效檢查。


一、核心節點架構:Wrapper + Core + 12 個可編輯子組

  1. Wrapper 層 (PNW_Wrapper_<obj>_<mod>):直接掛載在修改器上的外層節點組,暴露物理工作台和 CLI 的統一介面。在 Geometry Nodes Editor 中插入的自訂節點(如 User_Added_Realize)與新增介面(如 User Custom Scale)會在後續 update / parameters / bake 操作中完整保留。
  2. Core 層 (PNW_Core_<obj>_<mod>):包含 1 個根級 GeometryNodeSimulationInput/Output + 尾部 GeometryNodeBake + 內部 GeometryNodeRepeatInput/Output(Substeps = 1..8, dt_sub = Delta Time / Substeps),確保單 bake_id 與磁碟快取精確 1:1 綁定;並自動完成世界錨點轉局部空間(Anchor - self_info.Location)、世界地面轉局部 Ground Z 以及生成網格材質透傳(GeometryNodeSetMaterial)。
  3. 12 個模組化無狀態子組 (PN_*):
    • 力場:PN_Force_GravityDrag、PN_Force_WindTurbulence
    • 碰撞:PN_Collide_GroundPlane、PN_Collide_MeshSurface(含距離閾值屏蔽,防止有限網格外無限延展)
    • 約束:PN_Constraint_PinAnchor、PN_Constraint_DistanceChain
    • 步進求解器:PN_Solver_RigidScatterStep、PN_Solver_ClothRopeStep(基於 p_pred - pnw_rest_pos 相對靜止位移的 PBD 模糊與速度耦合,不收縮不垮塌)、PN_Solver_FluidParticleStep
    • 後處理:PN_Post_InstanceRigid、PN_Post_FluidSDFMesh(PointsToSDFGrid -> GridToMesh)、PN_Post_SmokeVolume(PointsToVolume + VolumeToMesh)

二、支援的三域、6 套預設與顯式橋接

  • 合約識別:BLENDER_PHYSICS_WORKFLOW_CONTRACT_V1 (schema_version: 1.0)
  • 三域與預設 (PRESET_DEFINITIONS):
    1. rigid_scatter:rigid_drop_pack(多實例散落碰撞與停靠)、rigid_chain_pendulum(錨點距離約束鏈擺)
    2. cloth_rope:cloth_banner_wind(頂邊自動錨定風吹布料)、rope_catenary_swing(支援 CURVE 自動轉管網輸出)
    3. fluid_emission:fluid_fountain_sdf(粒子發射 + 碰撞 + SDF 表面化網格)、smoke_plume_volume(浮力 + 風渦旋 + 體積/預覽網格)
  • Solver Bridge Modes:GN_NATIVE(預設純節點核心)、XPBD_ASSET_BRIDGE(橋接 Blender 5.2 內置 Cloth Dynamics (Experimental))、BULLET_BRIDGE(橋接 RigidBodyWorld)、MANTAFLOW_BRIDGE(橋接原生 FLUID 修改器)。
  • Export Formats:NONE、STATIC_MESH、ALEMBIC(.abc 動畫序列)、OPENVDB(回執/Volume 適配匯出)。

三、互動式 N-Panel 工作台使用

  • 面板位置:3D Viewport -> N-Panel -> Physics Nodes(VIEW_3D_PT_physics_nodes_workbench)
  • 核心操作算子:
    • pnw.load_preset_defaults:載入預設預設參數
    • pnw.build_workflow:建構三層節點樹並寫入初始狀態
    • pnw.update_parameters:保留使用者節點與外部連線更新工作流程/參數,參數哈希變化時自動失效舊快取
    • pnw.bake_cache / pnw.invalidate_cache:管理 DISK 烘焙(短路徑 < 240 字元防止 Windows MAX_PATH 越界)
    • pnw.inspect_workflow:統計實體數、位移、接地穿透與快取一致性

四、CLI Overlay 自動化排程 (physics_workflow_cli_v1)

入口:<REPO_ROOT>/tools/physics_workflow_cli_v1/cli.py。執行依賴 Blender 可執行檔時,先設定環境變數 BLENDER_PATH(或 BLENDERCTL_BLENDER)。

1. 查詢合約與預設

python tools/physics_workflow_cli_v1/cli.py describe

2. 單場景建構、烘焙、冷重開核驗與 Alembic 匯出 (run)

$env:BLENDER_PATH = "<path-to-blender-5.2.1>"
python tools/physics_workflow_cli_v1/cli.py run `
  --request "path/to/request.json" `
  --jobs-dir "./jobs/my-job" `
  --timeout-seconds 300

最小 request.json 範例:

{
  "schema_version": "1.0",
  "operation": "build",
  "preset_id": "fluid_fountain_sdf",
  "target_object": "Fountain_Emitter",
  "collider_object": "Dome_Deflector",
  "input_blend": "./input/scene_in.blend",
  "output_blend": "./output/scene_baked.blend",
  "bake": true,
  "verify_cold_reopen": true,
  "export_format": "ALEMBIC",
  "export_path": "./output/fluid.abc",
  "parameters": {
    "substeps": 3,
    "frame_start": 1,
    "frame_end": 120,
    "emit_rate": 16,
    "emit_speed": 1.85,
    "particle_radius": 0.15,
    "sdf_voxel_size": 0.07,
    "contact_thickness": 0.15,
    "ground_z": 0.0
  }
}

3. 參數掃描 (sweep) 與批次處理 (batch)

  • sweep:在基礎請求上注入參數變體列表,並列比較位移/速度/穩定性。
  • batch:順序/隔離執行多個獨立 .blend 仿真作業並輸出彙總回執。

五、Blender 5.2.1 關鍵避坑清單

  1. Modifier 輸入賦值:必須透過 getattr(mod.properties.inputs, identifier).value = val 賦值(不可用 mod[id] = val),元資料儲存在 obj[f"pnw_state_json__{mod.name}"]。
  2. Nodes 輸入插座化屬性:CollectionInfo["Separate Children"]、InstanceOnPoints["Pick Instance"]、CurveToMesh["Fill Caps"]、PointsToVolume["Resolution Mode"]、VolumeToMesh["Resolution Mode"] 均位於 node.inputs[...] 而非節點屬性;GeometryNodeSetShadeSmooth 首輸入埠名為 "Mesh"。
  3. Alembic 匯出關鍵字:Blender 5.2.1 bpy.ops.wm.alembic_export 無 visible_objects_only 參數,需明確設定 as_background_job=False 以保證同步落地。
  4. 物理局部座標與 PBD 防止收縮:Simulation Zone 內部運行於物體局部座標系,錨點與地面需扣除 Self Object 位置;布料/繩索 PBD 模糊必須作用於相對靜止位移 (p_pred - pnw_rest_pos),不可直接平滑絕對座標。

相關技能