Habilidade de Fluxo de Trabalho de Nós de Física do Blender (Blender 5.2.1 LTS)
Esta habilidade é direcionada ao Blender 5.2.1 LTS (build verificado 9e2066aef7ef), fornecendo uma bancada interativa no painel N da visão 3D (Physics Nodes) e um ponto de entrada CLI externo isolado em <REPO_ROOT>/tools/physics_workflow_cli_v1/cli.py.
[!IMPORTANT] Concorrência e Limites de Segurança: O addon de fluxo de trabalho físico e a CLI são totalmente independentes de
tools/blenderctl/,tools/geometry_nodes_workflow_addon/etools/uv_workflow_addon/; é estritamente proibido sobrescrever arquivos.blendde origem sem autorização ou ignorar a verificação SHA-256 e a invalidação de cache em disco.
I. Arquitetura Central de Nós: Wrapper + Core + 12 Subgrupos Editáveis
- Camada Wrapper (
PNW_Wrapper_<obj>_<mod>) : Grupo de nós externo montado diretamente no modificador, expondo a interface unificada da bancada de física e da CLI. Nós personalizados inseridos no Editor de Nós de Geometria (comoUser_Added_Realize) e novas interfaces (comoUser Custom Scale) são totalmente preservados em operações subsequentes deupdate/parameters/bake. - Camada Core (
PNW_Core_<obj>_<mod>) : Contém 1GeometryNodeSimulationInput/Outputde nível raiz +GeometryNodeBakeno final +GeometryNodeRepeatInput/Outputinterno (Substeps = 1..8,dt_sub = Delta Time / Substeps), garantindo uma ligação precisa de 1:1 entrebake_ide cache em disco; e converte automaticamente o ponto de ancoragem mundial para espaço local (Anchor - self_info.Location), o solo mundial paraGround Zlocal e realiza a transferência de material de malha gerada (GeometryNodeSetMaterial). - 12 Subgrupos Modulares Sem Estado (
PN_*) :- Campos de Força:
PN_Force_GravityDrag,PN_Force_WindTurbulence - Colisão:
PN_Collide_GroundPlane,PN_Collide_MeshSurface(inclui máscara de limite de distância para evitar propagação infinita fora da malha finita) - Restrições:
PN_Constraint_PinAnchor,PN_Constraint_DistanceChain - Solvers de Passo:
PN_Solver_RigidScatterStep,PN_Solver_ClothRopeStep(baseado no deslocamento relativo de repousop_pred - pnw_rest_poscom amortecimento PBD e acoplamento de velocidade, sem encolhimento ou colapso),PN_Solver_FluidParticleStep - Pós-processamento:
PN_Post_InstanceRigid,PN_Post_FluidSDFMesh(PointsToSDFGrid -> GridToMesh),PN_Post_SmokeVolume(PointsToVolume + VolumeToMesh)
- Campos de Força:
II. Três Domínios Suportados, 6 Presets e Ponte Explícita
- Identificador de Contrato:
BLENDER_PHYSICS_WORKFLOW_CONTRACT_V1(schema_version: 1.0) - Três Domínios e Presets (
PRESET_DEFINITIONS) :rigid_scatter:rigid_drop_pack(colisão e empacotamento de múltiplas instâncias),rigid_chain_pendulum(pêndulo de corrente com restrição de distância de ancoragem)cloth_rope:cloth_banner_wind(tecido随风 ancorado automaticamente na borda superior),rope_catenary_swing(suporta saída automática deCURVEpara malha de tubo)fluid_emission:fluid_fountain_sdf(emissão de partículas + colisão + malha de superfície SDF),smoke_plume_volume(flutuação + vórtices de vento + volume/malha de pré-visualização)
- Modos de Ponte do Solver:
GN_NATIVE(núcleo de nó puro padrão),XPBD_ASSET_BRIDGE(ponte para oCloth Dynamics (Experimental)integrado do Blender 5.2),BULLET_BRIDGE(ponte paraRigidBodyWorld),MANTAFLOW_BRIDGE(ponte para o modificadorFLUIDnativo). - Formatos de Exportação:
NONE,STATIC_MESH,ALEMBIC(sequência de animação.abc),OPENVDB(exportação adaptada para recibo/Volume).
III. Uso da Bancada Interativa no Painel N
- Localização do Painel:
3D Viewport -> N-Panel -> Physics Nodes(VIEW_3D_PT_physics_nodes_workbench) - Operadores Principais:
pnw.load_preset_defaults: Carrega parâmetros padrão do presetpnw.build_workflow: Constrói a árvore de nós de três camadas e escreve o estado inicialpnw.update_parameters: Preserva nós do usuário e conexões externas ao atualizar o fluxo de trabalho/parâmetros; invalida automaticamente o cache antigo quando os parâmetros mudam (hash alterado)pnw.bake_cache/pnw.invalidate_cache: Gerencia o cozimentoDISK(caminho curto < 240 caracteres para evitar estouro doMAX_PATHdo Windows)pnw.inspect_workflow: Estatísticas de entidade, deslocamento, penetração no solo e consistência do cache
IV. Automação de Agendamento da CLI Overlay (physics_workflow_cli_v1)
Ponto de entrada: <REPO_ROOT>/tools/physics_workflow_cli_v1/cli.py. Ao executar dependendo do executável Blender, primeiro defina a variável de ambiente BLENDER_PATH (ou BLENDERCTL_BLENDER).
1. Consultar Contrato e Presets
python tools/physics_workflow_cli_v1/cli.py describe
2. Construção, Cozimento, Verificação de Reabertura a Frio e Exportação Alembic de Cena Única (run)
$env:BLENDER_PATH = "<caminho-para-blender-5.2.1>"
python tools/physics_workflow_cli_v1/cli.py run `
--request "caminho/para/request.json" `
--jobs-dir "./jobs/meu-job" `
--timeout-seconds 300
Exemplo mínimo de 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. Varredura de Parâmetros (sweep) e Processamento em Lote (batch)
sweep: Injeta uma lista de variações de parâmetros sobre uma solicitação base, comparando deslocamento/velocidade/estabilidade em paralelo.batch: Executa sequencialmente/isoladamente múltiplos trabalhos de simulação.blendindependentes e gera um resumo consolidado.
V. Lista de Verificação de Armadilhas Críticas do Blender 5.2.1
- Atribuição de Entrada do Modificador: Deve ser atribuída via
getattr(mod.properties.inputs, identifier).value = val(não usemod[id] = val), os metadados são armazenados emobj[f"pnw_state_json__{mod.name}"]. - Propriedades de Soquete de Entrada de Nós:
CollectionInfo["Separate Children"],InstanceOnPoints["Pick Instance"],CurveToMesh["Fill Caps"],PointsToVolume["Resolution Mode"],VolumeToMesh["Resolution Mode"]estão todos emnode.inputs[...], não em atributos do nó; o primeiro porto de entrada deGeometryNodeSetShadeSmoothé chamado"Mesh". - Palavras-chave de Exportação Alembic: O
bpy.ops.wm.alembic_exportdo Blender 5.2.1 não tem o parâmetrovisible_objects_only, é necessário definir explicitamenteas_background_job=Falsepara garantir a finalização síncrona. - Coordenadas Locais Físicas e Prevenção de Encolhimento PBD: A
Simulation Zoneopera internamente no sistema de coordenadas locais do objeto; pontos de ancoragem e solo devem subtrair a posição doSelf Object; o amortecimento PBD de tecido/corda deve atuar sobre o deslocamento relativo de repouso(p_pred - pnw_rest_pos), não suavizar coordenadas absolutas diretamente.