app
adom-glb2png
Public Made by Adomby adom
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.
master
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
{
"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"
}