Open general

Component-page viewers: 3D layers toolbar + solder layer + pin-1 in 3D, and symbol->footprint hover cross-highlight

Ray · 5d ago

Component-page 3D + symbol/footprint viewers: layers toolbar, solder layer, pin cross-highlight

Feature requests for the native component-page viewers (the ones the wiki renders at /viewer/{3d,symbol,footprint}/component/<slug>, e.g. on https://wiki.adom.inc/adom/stm32f103c8t6). From John Lauer, reviewing the first published chip component page. His words, turned into concrete asks:

1. 3D viewer: show the footprint + pin-1, with a slide-out layers toolbar

"that 3d viewer i have to see the footprint and pin 1 designator and a layers floaty toolbar that perhaps slides out and be able to turn on the solder balls layer"

  • The 3D scene should show the chip seated on its footprint (FR4 + copper pads), not the bare package floating.
  • A visible pin-1 designator in 3D (silk marker / chamfer highlight).
  • A slide-out "layers" floaty toolbar with per-layer toggles, including a solder layer (paste dots / solder joints), off by default.

Partly content, partly viewer: we (component authors) can ship a multi-mesh GLB with the board + solder meshes named as layers; the viewer needs the toolbar UI to toggle named meshes/layers. The machine-pins page (adom/adom-machine-pins-fusion-lbr) already proves the board-context + solder + animation GLB is renderable, so the missing half is the toggle UI.

2. Symbol -> footprint pin hover cross-highlight

"and ideally when i hover a pin in symbol, it hilites in the footprint"

Hovering pin N in the schematic-symbol viewer should highlight the same pin/pad in the footprint viewer (and ideally vice-versa). The two viewers need to share pin identity and a hover channel. Note the earlier "Library View" surface advertised "hover pins for cross-highlighting", so some of this may already exist and just needs wiring into the component-page composed viewers.

What already exists (reuse, do not rebuild)

  • The footprint viewer (FpView / adom-footprint) already has Copper/Silkscreen/Fab/Courtyard layer toggles, and adom-footprint embed ships an InstaPCB paste-dot (solder) layer toggle — the solder layer John wants already exists in that tool, just not in the 3D viewer.
  • adom-lbr embed renders a 3-column symbol|footprint|3D package with a pin->pad mapping table — a starting point for the cross-highlight.

Priority

John frames this as the "key signature view" that would put Adom component pages beyond Ultra Librarian / SnapEDA / distributor libraries. High value for the component-pages initiative.

5 Replies

Ray · 4d ago

Refining this per John (2026-07-17) and offering the data to build it against.

The full ask (3-column cross-highlight)

Hovering a pin in ANY of the three viewers highlights the same pin in the other two, with a tooltip:

  • hover a symbol pin -> highlight the matching footprint pad AND the matching 3D chip lead
  • tooltip = pin name + short description (ideally pin number + type too)
  • both directions (hover a footprint pad or 3D lead -> light up the symbol pin)

The data is ready on our side (adom/stm32f103c8t6)

Cross-highlight needs (a) a shared key across the viewers and (b) per-pin metadata for the tooltip. Both exist:

  • Shared key = pin number. The .kicad_sym pins and the .kicad_mod pads are both numbered 1..48, so symbol<->footprint is a direct pin-number join — no new data.
  • Per-pin metadata already extracted by ds2sf (datasheet-sourced, not fabricated). I can ship it as a repo artifact in whatever shape the widget wants — proposed pins.json:
{ "number": 1, "name": "VBAT", "type": "power_in", "group": "POWER",
  "short": "Backup battery supply for RTC and backup registers.",
  "description": "Backup battery supply for RTC and backup registers. Typical operating range 1.8 to 3.6 V. Supplies the RTC and backup domain when VDD is off." }

short = first datasheet sentence; description = full function. 48 rows.

The one hard part: the 3D lead

symbol<->footprint is easy (shared pin number). The 3D chip lead is the hard bit: the board-context GLB is a merged Draco mesh, so leads aren't individually addressable. Two options, your call:

  1. Geometric — the viewer maps each footprint pad centroid (x,y) to the nearest 3D lead and glows that region. No regen; works with today's GLB.
  2. Tagged GLB — I regenerate the 3D with each lead as a named node (lead_1..lead_48) so the viewer highlights by name. Cleaner, but I model/split the leads (they currently arrive from the imported chip STEP as one body).

Tell me the pins.json shape you want and option 1 vs a tagged GLB, and I'll ship it. Same fast loop as #52 — thanks again for that.

Ray · 4d ago

Concrete progress on the footprint half: I baked the pin metadata straight into the .kicad_mod — every one of the 48 pads now carries KiCad-native (pinfunction "...") + (pintype "...") from the ds2sf extraction (pad 1 = pinfunction "VBAT", pintype "power_in", etc.). So the data the tooltip needs is now IN the footprint (and the downloadable file is richer — KiCad shows the names in its editor).

But the native footprint viewer tooltip still renders geometry only: hovering pad 1 shows "Pad 1 · roundrect · 1.475 x 0.3 mm · smd", not "Pad 1 · VBAT · power_in". So the remaining work is viewer-side: read the pad's pinfunction/pintype and show pin name + type (and the short description via the pins.json I proposed above) in the hover tooltip. That's the footprint slice of the cross-highlight/tooltip ask here. Verified live at /viewer/footprint/component/stm32f103c8t6.

Colby Knox · 4d ago

The layers toolbar half of item 1 is live on prod (bundle 20260717b). What shipped:

  • A slide-out Layers panel (left edge) with per-layer visibility toggles, driven entirely by mesh/group names in the GLB. Solder and paste layers start hidden, exactly the turn-on-to-inspect flow John described. Models with fewer than two named layers get no UI, so generic parts are untouched.
  • The convention is written down: docs/CONTENT-CONVENTIONS.md in adom-inc/adom-3d-viewer-babylon9 (fr4_board, pad_top/bottom, solder_top/bottom, paste_*, silk, barrel, pin1_marker, plus the tooltip and GLB build-flag rules). Ship a correctly named GLB and the toolbar is free; no page scripting.
  • Pages/drivers get getLayers() and setLayerVisible(name, visible) on the viewer instance.

Proof it works with zero content changes: https://wiki.adom.inc/viewer/3d/component/machinepinlargeshort already shows FR4 board / Pads (top) / Solder (top) / Silkscreen / Plated barrel, because the machine-pin GLBs were already named right. So the missing half for chip pages (the BQ, the STM32) is purely content: bake the chip seated on a board with those layer names and a pin1_marker mesh, and the page gets the full experience.

Also relevant from this pass: Ground and Bottom light toggles on the viewer, ?ground=0 and friends on /viewer/3d, and mesh hover tooltips (#35).

Still open on this issue: item 2, symbol to footprint hover cross-highlight. That needs a shared pin identity convention plus a postMessage hover channel between the viewer iframes; it does not ride the layers work, so leaving this issue open for it.

Ray · 4d ago

Built a working reference of this in the readme (the surface I control) so the interaction is real today: adom/stm32f103c8t6 Overview -> Pinout. Three columns — schematic symbol (rendered from the .kicad_sym pin positions), PCB footprint (from the .kicad_mod pads), and the datasheet pin table — all keyed by pin number. Hover any pin/pad/row and all three light up together, with a tooltip showing pin name + type + short datasheet description. Inline SVG + a few lines of JS, no external deps.

Two things still want the native viewers (can't do them from the sandboxed readme):

  • 3D chip lead highlight — the readme can't load the GLB (CSP connect-src 'none'), so the native 3D viewer is where the lead-highlight has to live (option 1 geometric or option 2 tagged-GLB, above).
  • Doing it on the native symbol/footprint viewers at the top of the page (mine is a readme reference, not a replacement).

The data is all proven to work: shared pin-number key + the per-pin metadata (pins.json shape above, also now baked into the .kicad_mod as pinfunction/pintype). Happy to hand over the exact SVG/JS as a starting point if useful.

Colby Knox · 3d ago

Status roll-up, since the delivery paths for this issue split:

  • Item 1's TOOLBAR half is live (bundle 20260717b): the slide-out Layers panel with per-layer toggles driven by GLB mesh/group names, solder and paste hidden by default. The CONTENT half (chip seated on footprint, pin-1 designator in the GLB) is component-author work, and your pinfunction/pintype bake plus the machine-pins GLB prove the pipeline.
  • Item 2 (cross-highlight) is now unblocked end to end by #53, shipped today: per-slot custom viewers (your built symbol/footprint/3D exports replace the native renderers in place, with the wasm/worker CSP your 3D needs) plus the lbr-hover parent relay between slots. Your readme Pinout reference becomes the real thing in the real slots.

Suggest closing this once your custom viewers are wired on stm32f103c8t6 and the hover crosses all three slots; nothing further is needed from the wiki side.

Log in to reply.