master
Drew Owens Publish 1.0.2 742dcde 3mo ago
{
  "schema_version": 1,
  "type": "app",
  "slug": "adom-glb2png",
  "title": "adom-glb2png",
  "brief": "Render a GLB to a PNG via headless three.js. CLI sibling to step2glb / adom-pin1-truth — gives Claude (and you) a way to verify 3D component models without spinning up a webview screenshot loop.",
  "version": "1.0.2",
  "tags": [
    "cli",
    "3d",
    "glb",
    "render",
    "molecule-pipeline"
  ],
  "license": "MIT",
  "sample_prompts": [
    {
      "label": "Render a molecule",
      "prompt": "Render this molecule GLB to a PNG"
    },
    {
      "label": "Top-view thumbnail",
      "prompt": "Make a thumbnail of board.glb from the top view"
    },
    {
      "label": "Model screenshot",
      "prompt": "Screenshot this 3D model as a PNG"
    }
  ],
  "install": {
    "binary_name": "adom-glb2png",
    "install_dir": "",
    "install_hint": "",
    "version_cmd": ""
  },
  "readme": "# adom-glb2png\n\nRender a GLB file to a PNG via headless three.js. Useful for verifying 3D component models without spinning up a webview + screenshot loop.\n\n## Usage\n\n```\nadom-glb2png <glb-path> [--view top|iso|front|side|bottom] [--size N] [--out path]\n```\n\n- `--view` — camera direction, defaults to `iso`\n- `--size` — output image is square `size × size`, defaults to 800\n- `--out`  — output PNG path, defaults to `<basename>.png`\n\nExit codes: `0` on success, `1` on render error, `2` on bad input.\n\n## How it works\n\nA small Bun-compiled binary that spins up a headless Chromium (via puppeteer) pointing at a tiny three.js viewer page, loads the GLB, frames the camera so the bbox diagonal fills ~70% of the viewport, screenshots, exits.\n\n- Camera near-plane is `0.0001` because most KiCad-pipeline GLBs use meters (a 0402 resistor's bbox diagonal is ~0.0012m).\n- Double-render with `requestAnimationFrame` between passes makes the output buffer non-empty reliably under SwiftShader.\n- First run downloads Chromium (~150 MB) into `~/.cache/puppeteer/`. Subsequent runs reuse the cache.\n\n## Source\n\ngithub.com/adom-inc/adom-glb2png\n",
  "author": {
    "name": "Kyle Bergstedt",
    "email": "[email protected]"
  },
  "visibility": {
    "public": true
  },
  "hero": {
    "type": "billboard",
    "headline": "adom-glb2png",
    "subhead": "GLB to PNG renders via headless three.js",
    "screenshot": "docs/hero.png"
  },
  "discovery_triggers": [
    "glb to png",
    "render glb",
    "glb thumbnail",
    "molecule thumbnail",
    "3d model screenshot",
    "board render png",
    "glb2png"
  ],
  "discovery_pitch": "Render any GLB (molecule, board, chip) to a clean PNG from the terminal — headless three.js with draco support, five camera views, no GUI needed.",
  "metadata": {},
  "created_at": "2026-05-28T05:29:14.676Z",
  "updated_at": "2026-05-28T05:29:14.676Z",
  "skills": [],
  "description": "Render a GLB to a PNG via headless three.js. CLI sibling to step2glb / adom-pin1-truth — gives Claude (and you) a way to verify 3D component models without spinning up a webview screenshot loop.",
  "dependencies": {},
  "scripts": {
    "install": "./install.sh",
    "uninstall": "./uninstall.sh"
  },
  "org": "adom"
}