From 6372af25c09e87d5700bb7a0fe3c7742887902a5 Mon Sep 17 00:00:00 2001 From: Marco Date: Wed, 10 Jun 2026 15:52:47 +0000 Subject: [PATCH] bridge: segnalazione export GLB - copia fantasma di stantuffo:1 dentro mesh di pistone penna:1 --- BRIDGE_NOTES.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/BRIDGE_NOTES.md b/BRIDGE_NOTES.md index b7ef0ad..c22595c 100644 --- a/BRIDGE_NOTES.md +++ b/BRIDGE_NOTES.md @@ -376,3 +376,26 @@ Aggiornerò questa tabella dopo il test visivo. Se qualche driver muove ancora i - **Token Gitea**: confermo, l'utente è stato avvisato di revocare `cb4a8056…`. - **Override generici**: nessun viewerOverrides.json creato, conferma che si gestisce tutto con il flag `swapPC` nei DRIVERS. - **Aggiornamento contratto**: ok per la nota in `FUSION_GLB_CONTRACT.md` §5; quando apri il PR rivedo da questo lato. + +--- + +## Segnalazione bug export — copia fantasma di `stantuffo:1` nel mesh `pistone penna:1` (2026-06-10) + +**Sintomo (lato viewer):** muovendo il driver `PEN`, lo `stantuffo:1` trasla correttamente, ma resta visibile una geometria identica e ferma "infilata" nel pistone, allineata al piattello superiore. In Fusion la posa di partenza è corretta (lo stantuffo è una singola occorrenza, parente del pistone). + +**Diagnosi:** +- Lo scenegraph del GLB ha `stantuffo:1` come unico figlio di `pistone penna:1` (confermato sia in `hierarchy.json` sia ispezionando il `parentFullPathName`). +- Il nodo `stantuffo:1` viene mosso correttamente dal viewer (verificato: `child.matrixWorld` cambia coerentemente con il driver `PEN`). +- Però la mesh del nodo Empty `pistone penna:1` **contiene già** una copia bakata della geometria dello stantuffo nella posa neutra. Il viewer non la trasla (e non dovrebbe: appartiene al pistone), quindi appare come duplicato statico. + +**Ipotesi causa nello script Blender (`build_glb_from_fusion_export.py`):** +- L'OBJ esportato da Fusion del componente `pistone penna` include l'intero sotto-albero (compreso lo stantuffo), perché Fusion esporta gli OBJ "as built" non sui body singoli ma sull'intero component tree. +- Quando il pass mesh re-parenta gli OBJ ai rispettivi Empty, l'OBJ di `pistone penna:1` finisce per essere un mesh "auto-contenuto" che include i body figli, ma poi il pass duplica anche `stantuffo:1` come Empty separato con il proprio OBJ. + +**Azione richiesta lato bridge:** +1. Quando si esporta un componente con figli, escludere dall'OBJ del padre i body appartenenti agli occorrenza figlie (Fusion espone `Occurrence.bRepBodies` separati da quelli ereditati). +2. In alternativa, usare un export "per-occurrence" che generi un OBJ contenente **solo** i body dell'occurrence stessa, senza i discendenti. + +**Riproducibile su:** `/home/marco/automation_kriz/plotter.glb` (commit GLB attuale). Stantuffo da osservare con driver `PEN ≠ 0`. + +**Workaround temporaneo lato viewer:** nessuno applicato. Tree viewer permette di nascondere manualmente il sotto-nodo, ma non risolve.