APP v0.2.0

adom-3d-viewer-babylon9 — Babylon 9.5 viewer + Inspector

Fork of Colby's adom-3d-viewer (Babylon 7.54) bumped to Babylon 9.5 with the redesigned Inspector v9. Vendored ESM bundle for downstream Adom tools (chiplinter, chipfit-v2, future viewers). Distributed as a tarball — drop into your tool's vendor/3d-viewer/ at install time and load as `import('./vendor/3d-viewer/adom-3d-viewer-babylon9.esm.js')`.

adom-3d-viewer-babylon9 — Babylon 9.5 viewer + Inspector
Install this app

Paste this into Claude Code (VS Code panel, Adom editor, or terminal) to install:

I want to install the "adom-3d-viewer-babylon9 — Babylon 9.5 viewer + Inspector" app from the Adom Wiki (https://wiki-ufypy5dpx93o.adom.cloud/wiki/apps/adom-3d-viewer-babylon9). For the Docker CLI: sudo mkdir -p /usr/local/share/adom-3d-viewer-babylon9 && curl -fsSL https://wiki-ufypy5dpx93o.adom.cloud/static/apps/adom-3d-viewer-babylon9/adom-3d-viewer-babylon9.tar.gz | sudo tar -xz -C /usr/local/share/adom-3d-viewer-babylon9 && cat /usr/local/share/adom-3d-viewer-babylon9/VERSION && echo OK: adom-3d-viewer-babylon9 installed at /usr/local/share/adom-3d-viewer-babylon9 Then verify the install works.

Download v0.2.0

Windows coming soon
macOS coming soon
🐧 Linux coming soon
🐳 Adom Docker CLI adom-3d-viewer-babylon9.tar.gz ·

See all releases on GitHub (private repo — access required)

adom-3d-viewer-babylon9

A fork of Colby's adom-3d-viewer (Babylon 7.54) bumped to Babylon 9.5.0 with the redesigned Inspector v9. Built as an ESM bundle for downstream Adom tools to vendor — chiplinter consumes it today, and we expect it to back the next ~10 Adom 3D viewers.

Why fork

Colby's adom-3d-viewer is the canonical viewer for InstaPCB previews and chipfit, but it's pinned to Babylon 7.54 because chipfit-v2 + tscircuit ship the same renderer. We needed Babylon 9's redesigned Inspector for chiplinter's scene-graph debugging and didn't want to disturb Colby's surface area, so this is a parallel fork.

What's in the bundle

The build produces a single ESM entry plus code-split chunks:

adom-3d-viewer-babylon9.esm.js     ← entry, sets window.Adom3DViewerBabylon9
chunk-*.js                          ← code-split chunks (Babylon core, inspector, etc.)
VERSION

Loaded via:

<script type="module">
  await import('/path/to/adom-3d-viewer-babylon9.esm.js');
  const v = window.Adom3DViewerBabylon9;
  v.init(host, { zUp: true, modelUrl: 'asset/foo.glb' });
</script>

Why ESM (not IIFE)

Babylon 9's @babylonjs/inspector has circular imports that resolve to TDZ when collapsed into a single IIFE scope (regardless of minifier). Vite's ESM output preserves module boundaries so the inspector initializes cleanly. Consumers load via <script type="module">, which all modern browsers support.

API

window.Adom3DViewerBabylon9 = {
  init(host, options),         // mounts the viewer in `host`, returns ViewerInstance
  rotateYUpToZUp(scene),       // for kicad-cli GLBs (Y-up) → adom viewer (Z-up)
  addLaserEtch(scene, opts),   // bake a laser-etched chip-marking text overlay
  BABYLON: <full @babylonjs/core namespace>,  // re-exported for consumers
};

ViewerInstance exposes:

  • loadModel(url) / clearScene() / frameModel(fillFraction?)
  • getScene() / getEngine() / getCamera() / getShadowGenerator()
  • addContentRoot(node, opts?) / removeContentRoot(node)
  • toggleDebugLayer() / showDebugLayer() / hideDebugLayer()
  • setGroundVisible(visible) / goHome()
  • setProjectionMode(ortho) / getProjectionMode()
  • destroy()

The full @babylonjs/core namespace is exposed at Adom3DViewerBabylon9.BABYLON so consumers don't need their own import side — chiplinter uses V.BAB.MeshBuilder.CreateDisc, V.BAB.PBRMaterial, V.BAB.Quaternion, V.BAB.Tools.CreateScreenshotUsingRenderTarget, etc. directly.

Install (drop into a tool's vendor/3d-viewer/)

The wiki ships the bundle as a tarball. Pull it into your tool's vendor directory at install time:

# Install everything to a known shared location
sudo mkdir -p /usr/local/share/adom-3d-viewer-babylon9
curl -fsSL https://wiki-ufypy5dpx93o.adom.cloud/static/apps/adom-3d-viewer-babylon9/adom-3d-viewer-babylon9.tar.gz \
  | sudo tar -xz -C /usr/local/share/adom-3d-viewer-babylon9

# Then symlink (or copy) into your tool's vendor/3d-viewer/
ln -sfn /usr/local/share/adom-3d-viewer-babylon9 /usr/local/bin/vendor/3d-viewer

Or just curl individual files if your tool only needs the entry (adom-3d-viewer-babylon9.esm.js):

curl -fsSL https://wiki-ufypy5dpx93o.adom.cloud/static/apps/adom-3d-viewer-babylon9/adom-3d-viewer-babylon9.tar.gz | tar -xz -C ./vendor/3d-viewer

Browser shims required

The inspector's React deps (Fluent UI) assume a Node environment. Add this shim before loading the bundle:

<script>
  window.process = window.process || { env: { NODE_ENV: 'production' } };
  window.global = window.global || window;
</script>
<script type="module">
  await import('/path/to/adom-3d-viewer-babylon9.esm.js');
</script>

Defaults (3d-viewer-design skill compliance)

RuleStatusNotes
§1 Babylon engine@babylonjs/core 9.5.0
§3b Background gradient #5a6b7e → #2a3340SceneBuilder.ts
§4a HDRI environmentbundled .env cube texture
§4b Bottom-light toggleexposed via consumer toolbar (HemisphericLight ground-color boost)
§4d Ground plane + ShadowGenerator(8192)medium-gray ground, blur PCF, optional via showGround prop
§5a PBRMaterial defaultevery internal material is PBR
§6a zoomToMouseLocation = trueAdomCamera.ts
§6c Shift+Alt+Click recenterAdomCamera.ts
§7 ViewCube + tween presetsViewCubeBuilder.ts
§8a World-origin axes (default ON)v0.2.0R/G/B at scene origin, scaled to 15% of scene radius via refreshAxisScale after each frameModel
§8b Mesh-local axes (default OFF, toggleable)v0.2.0parented to each loaded GLB root via addMeshLocalAxes
§8c Screen-space corner triad (always on)deferred to v0.3.0Second-camera-with-viewport approach didn't render — engine.runRenderLoop(() => scene.render()) honors scene.activeCamera only, not the activeCameras array. v0.3.0 will use UtilityLayerRenderer with an explicit secondary engine.render() pass. §8a + §8b cover the bulk of "where is origin" debugging in the meantime.
§6b.i Adaptive wheelDeltaPercentage (100/R)⚠ opencurrently a constant 0.1; pan + radius limits ARE adaptive
§11 Y-up→Z-uprotateYUpToZUp(scene) exposed on the global

§8 axis-helper API (v0.2.0)

// World axes (default ON) — R/G/B at scene origin, sized to 15% of scene radius.
viewer.toggleAxes('world');                      // toggle
viewer.toggleAxes('world', true);                // explicit set
viewer.getAxesState();                           // → { world: bool, meshLocal: bool }

// Mesh-local axes (default OFF) — auto-attaches to each loaded GLB root.
viewer.toggleAxes('mesh-local');                 // toggle

Reach the helpers directly via scene.metadata.__adomAxes if you want to add or remove per-root helpers programmatically (e.g. while debugging a custom loader path that bypasses loadModel).

Consumers

  • adom-chiplinter — vendors dist-standalone/ into vendor/3d-viewer/
  • (future) adom-chipfit-v3 — when v2 lands its own Babylon 9 upgrade
  • (future) standalone scene-graph utility scripts

Source

Source code lives at adom-inc/adom-3d-viewer-babylon9 (private repo). The canonical install artifact is the wiki tarball.

GZ
adom-3d-viewer-babylon9.tar.gz 25 days ago
adom-3d-viewer-babylon9 v0.2.0 — Babylon 9.5 ESM bundle. Stable URL: /static/apps/adom-3d-viewer-babylon9/adom-3d-viewer-babylon9.tar.gz
v0.2.0 tarball upload — Babylon 9.5 + Inspector v9 ESM build (vite standalone).John Lauer · 25 days ago
4.4 MB

Install notes

Adom Docker CLI install steps
sudo mkdir -p /usr/local/share/adom-3d-viewer-babylon9 && curl -fsSL https://wiki-ufypy5dpx93o.adom.cloud/static/apps/adom-3d-viewer-babylon9/adom-3d-viewer-babylon9.tar.gz | sudo tar -xz -C /usr/local/share/adom-3d-viewer-babylon9 && cat /usr/local/share/adom-3d-viewer-babylon9/VERSION && echo OK: adom-3d-viewer-babylon9 installed at /usr/local/share/adom-3d-viewer-babylon9

Sub-Skills
?
What are Sub-Skills?

Sub-skills are community-contributed AI skill extensions for this component. They teach AI assistants about specific tools, configurators, or workflows.

Examples:

  • A manufacturer’s configuration tool for a motor controller
  • A community-written design guide for an amplifier circuit
  • An automated test/validation script for a sensor module

How to add one: Click Add Sub-Skill, provide the URL to your skill and a brief description. Submissions are reviewed by the Adom team before going live.

No sub-skills yet. Be the first to contribute one!

🔎 How Claude finds this page (discovery snippet)

This page opts into Adom Wiki auto-discovery. When a user working in Claude Code mentions any of the trigger phrases below, Claude can proactively suggest this page. The pitch is exactly what Claude will say.

Pitch
"Fork of Colby's adom-3d-viewer bumped to Babylon 9.5 with the redesigned Inspector v9. Ships as an ESM bundle (vite build) you vendor into your tool — chiplinter and the next 10 Adom 3D apps build on this. Includes rotateYUpToZUp, addLaserEtch, and exposes the full @babylonjs/core namespace via window.Adom3DViewerBabylon9.BABYLON."
Triggers
"adom-3d-viewer-babylon9", "babylon 9 viewer", "babylon 9.5 viewer", "babylon inspector v9", "3d viewer babylon 9", "vendor 3d viewer", "babylonjs upgrade", "upgrade babylon viewer", "newer babylon inspector", "fork adom-3d-viewer", "rotateYUpToZUp", "addLaserEtch", "Adom3DViewerBabylon9", "esm babylon bundle", "chip 3d viewer babylon 9"

Recent activity

10 commits