Closed bug report

fusion_export_optimized_glb: silkscreen bake lands offset on a molecule board (TPS54202_Buck_1007 v23)

John Lauer · 1mo ago ·closed by Colby Knox

With silkscreen:true, the optimized GLB of TPS54202_Buck_1007 (cloud v23, a 28 x 20 mm molecule with medium machine pins) comes back with the silkscreen texture misregistered: a beige rectangle with the labels on it, offset from the parts, and the solder mask colour missing under it. The same export with silkscreen:false is clean (20 meshes, anchored). The silk PNGs are probably not registered to the board's XY bbox the way the optimizer's contract expects (rounded corners and the machine-pin anchor are the obvious suspects).

Repro: open v23, fusion_show_3d_board, fusion_export_optimized_glb {silkscreen:true, pin:"medium"}, load the GLB in the Adom 3D Viewer.

Second note: the returned GLB is Draco-compressed, which cannot decode inside wiki README and widget frames (connect-src does not reach Babylon's decoder CDN). An option to skip Draco would save a decode-and-rewrite step for wiki use.

🤖 Generated with Claude Code

6 Replies

John Lauer · 1mo ago

Fixed in #18 (merged): the capture is now cropped to the board and the backdrop keyed out before it goes to the optimizer. Ships with the next signed release. Still open here: the AMPLH5030S top marking reads mirrored in the optimized GLB (correct in Fusion's own view); the no-Draco option for wiki use already exists as compress:none on the export.

John Lauer · 1mo ago

Correction to my last note: compress (with none to skip Draco) is not on main yet. It is in a pending change to services.rs from another thread, so the no-Draco ask stays open until that lands.

Colby Knox · 15d ago

From the fusion-lane thread. The no-Draco option shipped in fusion-bridge 1.12.1 (signed, on insiders now; public follows).

fusion_export_optimized_glb {compress: "none"} passes the STEP service's compression override, so the GLB loads in wiki README and widget frames without a Draco decoder. quantize and draco are also accepted. Leave it out and a molecule is Draco-compressed, as before.

Checked on DESKTOP-BAR6S0F with the installed 1.12.1, BQ25792 3D PCB, {compress:"none", silkscreen:false, async:true}: 174 meshes, 14.8 MB, extensionsUsed empty (no KHR_draco_mesh_compression), molecule anchored.

Still open here: the AMPLH5030S top marking that reads mirrored in the optimized GLB.

Colby Knox · 15d ago

From the fusion-lane thread: where the mirrored AMPLH5030S marking does not come from.

  1. The part's own model. john/amplh5030s-150mt's STEP draws "AMPLH5030S" as a marking solid. Converted alone through service-step2glb, it reads correctly from above.
  2. The molecule pipeline. john/buck-12v5v-molecule's published GLB was made from KiCad and holds the same inductor. Its marking and every laser etch (CC1206KKX7R8BB106, EEE-FK 1V470P, TPS54202 DDCR) read correctly from above.
  3. The Fusion path. I exported BQ25792 from Fusion with fusion_export_optimized_glb (1.12.7, molecule, anchored). Its parts land at their board coordinates shifted by the machine-pin origin, with no flip in x or y and no negative-scale node. The bridge sends Fusion's STEP and the silk PNGs unchanged, so it cannot mirror one part's geometry.

So the mirror is in the 3D package that the TPS54202 design itself uses in Fusion. Fusion's view shows it correctly, but its STEP export writes it mirrored. That matches a package aligned with a mirror (a Mirror feature or a flipped placement in the 3D package editor), which Fusion's display compensates for and the STEP does not.

I can't open that design on the test laptop to confirm. The candidates are "Buck12V5V 3D view" and "Buck12V5V 3D upright" in Default Project, both saved by Fusion 2705.1.15, and the laptop runs 2704.1.53 ("Forward compatibility is not supported"). Once its Fusion is updated, I'll export that board's STEP, read the AMPLH5030S occurrence's transform and body, and fix the package or the export.

Colby Knox · 14d ago

From the fusion-lane thread: root cause found. It's the inductor's 3D package in the design, not the bridge or the GLB optimizer.

I updated the test laptop's Fusion to 2706.1.14 and opened "Buck12V5V 3D view" (Default Project). It's the 28 × 20 mm buck, with L1 = AMPLH5030S-150MT from library BuckMol1006, placed at (21, 11) with no rotation. I exported its 3D PCB as STEP and converted it with service-step2glb in plain mode, which keeps the geometry as it is (I checked that on the part's own STEP: its marking reads correctly from above).

L1 in Fusion's own STEP:

  • The body spans z −1.05 to 4.15 mm against a board top at 1.535 mm. That's 5.2 mm tall, the part's 5.2 mm width standing up, with half of it below the board.
  • Its footprint spans y 10.95 to 13.75 mm, the part's 2.8 mm height lying sideways and about 1.35 mm off its pads.
  • The marking's 136 glyph faces all lie in the plane y = 13.75. So "AMPLH5030S" is on a side face, not on top.

Fusion's own 3D view shows the same thing: L1 stands on edge, off its pads. Read from that side face in a GLB viewer, the text comes out mirrored.

So the 3D package for AMPLH5030S-150MT in BuckMol1006 is missing the part's stand-up quarter turn about X. The part page's mark plan records that turn (standUp: x, quarterTurns 1, because the vendor STEP is Y-up), so the package was most likely bound to the Y-up vendor model rather than the page's Z-up STEP (AMPLH5030S-150MT.step).

Fix: rebind L1's 3D package to the page's Z-up STEP (fusion_attach_3d_package / fusion_bind_library_3d), then update the board's 3D PCB. I haven't changed the design, since it isn't mine. Say the word and I'll do it on a copy first.

The bridge side of this issue (silkscreen registration and compress:none) shipped earlier, and fusion-bridge 1.12.8 is public.

Colby Knox · 13d ago

Closing this: the bridge's part of the issue is fixed and shipped, and what's left is in the design, not the bridge.

Shipped in the bridge

  • Silkscreen bake offset: fixed in #18. The capture is cropped to the board and the backdrop is keyed out before it goes to the optimizer. This is in every public release since.
  • No-Draco GLB for wiki frames: fusion_export_optimized_glb {compress: "none"}, public since 1.12.1.

What's left: the mirrored AMPLH5030S marking The cause is L1's 3D package in that design's library (BuckMol1006). It is bound to the vendor's Y-up model without the part's stand-up quarter turn. As a result, Fusion's own STEP puts the marking on a side face (details in the reply above), and the bridge exports Fusion's STEP unchanged.

The fix belongs to the design's owner: rebind L1's package to the part page's Z-up AMPLH5030S-150MT.step, then update the 3D PCB. The bridge can do the rebind with fusion_bind_library_3d {libraryPath, stepPath, deviceset, force: true}, which draws no dialogs. It can also re-import the whole part with fusion_import_part, which binds the STEP. fusion-lane leaves owners' designs alone, so the owner should open a new issue if they want the bridge to do it on a copy.

fusion-bridge 1.13.15 is public.

Colby Knox closed this · 13d ago

Log in to reply.