What It Does
Basic3dView is a stripped-down Babylon.js 3D viewer that shows GLB files exactly as the file contains them. No material fixups, no laser etch markings, no synthetic pad overlays, no FR4 detection, no cinematic camera tours.
Why?
The full 3dView applies material fixup (dark body, silver leads, copper pads), laser etch markings, synthetic pad overlays, FR4 detection, and cinematic camera tours. This is great for presentation but makes it hard to debug what the raw GLB actually contains. Basic3dView fills that gap — use it for testing, comparison, and raw inspection.
Usage
MCP Tool
av_basic_3d_display({ glb_path: "/path/to/model.glb", title: "My Part" })
Drag & Drop
Open the Adom Viewer and drag any .glb or .gltf file directly onto the viewer.
HTTP API
# Step 1: Copy GLB to serving directory
SERVE=$(curl -s -X POST http://localhost:8771/api \
-H 'Content-Type: application/json' \
-d '{"action":"serve_glb","glbPath":"/path/to/model.glb"}')
# Step 2: Extract the URL
GLB_URL=$(echo "$SERVE" | python3 -c 'import sys,json; print(json.load(sys.stdin)["glbUrl"])')
# Step 3: Display in Basic3dView
curl -s -X POST http://localhost:8771/api \
-H 'Content-Type: application/json' \
-d "{\"action\":\"show_basic_3d\",\"modelUrl\":\"$GLB_URL\",\"options\":{\"title\":\"My Component\"}}"
Toolbar
| Button | Feature | Default |
|---|---|---|
| Home | Reset camera to initial position | — |
| Frame | Zoom to fit model | — |
| Ground | Toggle ground plane | ON |
| Wireframe | Toggle wireframe rendering on all meshes | OFF |
| Axes | Toggle XYZ axis lines (R=X, G=Y, B=Z) | OFF |
| Measure | Measure distance between two points (mm) | OFF |
| Meshes | Open mesh list panel (draggable) | OFF |
Mesh Panel
The mesh list panel shows all meshes in the loaded model with per-mesh controls:
- Eye toggle — show/hide individual meshes. Hidden meshes show a strikethrough name and dimmed eye icon. Useful for isolating specific parts of a model (e.g. show only wheels, hide body).
- Axis toggle — show/hide RGB origin axes at the mesh's local pivot point (R=X, G=Y, B=Z) with a white dot at the origin. Useful for verifying rotation pivots (e.g. wheel axles). Axis length auto-scales to 30% of the mesh's bounding diagonal.
- Draggable — grab the "Meshes" header to drag the panel anywhere in the viewport.
The panel state (visibility, axes) is reflected in av_capture composite screenshots.
Measure Tool
Click the ruler icon to enter measure mode (cursor becomes crosshair). Click a first point on the model (teal marker), then click a second point — a white measurement line appears with a floating mm label at the midpoint. The label tracks the camera as you orbit. Press Escape to exit measure mode and clear the measurement.
Programmatic Control
Toggle toolbar features, set camera angles, captions, and fill colors remotely — useful for automated screenshots or scripted demos.
# Toggle a toolbar button
curl -s -X POST http://localhost:8771/api \
-H 'Content-Type: application/json' \
-d '{"action":"basic3d_toggle","name":"wireframe"}'
# Set camera angle
curl -s -X POST http://localhost:8771/api \
-H 'Content-Type: application/json' \
-d '{"action":"basic3d_set_camera","alpha":-2.5,"beta":1.0}'
# Set caption text (shown above the info bar)
curl -s -X POST http://localhost:8771/api \
-H 'Content-Type: application/json' \
-d '{"action":"basic3d_set_caption","text":"Description here"}'
# Red-box calibration (fill iframe for pixel-perfect screenshot cropping)
curl -s -X POST http://localhost:8771/api \
-H 'Content-Type: application/json' \
-d '{"action":"basic3d_fill","color":"#FF0000"}'
Toggle names: ground, wireframe, axes, measure, meshes
Mesh Visibility Control
# Hide meshes by name substring
curl -s -X POST http://localhost:8771 -H 'Content-Type: application/json' -d '{
"action": "post_message",
"message": {"type":"mesh_visibility","match":"body","visible":false}
}'
# Solo mode — show only matching meshes, hide all others
curl -s -X POST http://localhost:8771 -H 'Content-Type: application/json' -d '{
"action": "post_message",
"message": {"type":"mesh_visibility","match":"wheel","solo":true}
}'
# Show all meshes again
curl -s -X POST http://localhost:8771 -H 'Content-Type: application/json' -d '{
"action": "post_message",
"message": {"type":"mesh_show_all"}
}'
Remote Measure
# Place measurement between two 3D points (coordinates in GLB meters)
curl -s -X POST http://localhost:8771 -H 'Content-Type: application/json' -d '{
"action": "post_message",
"message": {"type":"measure","pointA":{"x":-0.0025,"y":-0.002,"z":0.001},"pointB":{"x":0.0025,"y":0.002,"z":0.001}}
}'
# Clear measurement
curl -s -X POST http://localhost:8771 -H 'Content-Type: application/json' -d '{
"action": "post_message",
"message": {"type":"clear_measure"}
}'
Info Bar
The bottom info bar shows:
- Model filename, bounding box (W x D x H mm), mesh count, and vertex count (left)
- Basic3dView label (right) — identifies this viewer
When to Use This vs Other Viewers
| Viewer | Use Case |
|---|---|
| Basic3dView (this) | Raw GLB inspection — no transforms, no overlays, testing/comparison |
3dView (av_3d_display) | Full 3D with material fixup, laser etch, pad highlighting, camera tour |
Fp3dView (fp-to-3d.js) | Footprint pad geometry: copper shapes, dimensions, land pattern |
LibView (av_library_review) | Complete library review: symbol + footprint + 3D side-by-side |



