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