Generate 3D models from text or images via 5 providers: Meshy (text-to-3D, texturing, batch), fal.ai Hunyuan3D Pro ($0.225, PBR), WaveSpeedAI Rapid ($0.0225, bulk), Trellis 2 (poly control), and Local Depth (free offline ONNX depth maps + mesh). Includes GLB viewer. Triggers on 3D model, image to 3D, GLB, depth map, text to 3D, texturing, 3D asset, Meshy, Hunyuan.
Generate 3D models from text or images via 5 providers: Meshy (text-to-3D, texturing, batch), fal.ai Hunyuan3D Pro ($0.225, PBR), WaveSpeedAI Rapid ($0.0225, bulk), Trellis 2 (poly control), and Local Depth (free offline ONNX depth maps + mesh). Includes GLB viewer. Triggers on 3D model, image to 3D, GLB, depth map, text to 3D, texturing, 3D asset, Meshy, Hunyuan.
3D Model Generation (Multi-Provider)
Generate 3D models from text prompts, images, or apply textures to existing models. Four providers with different cost/quality tradeoffs.
Provider Selection
Provider
Script
Cost
Speed
Best for
Meshy (default)
meshy_text_to_3d.py, meshy_image_to_3d.py
5-20 credits
2-7 min
Text-to-3D, texturing, low-poly game assets, batch
fal.ai Hunyuan3D
fal_hunyuan3d.py
$0.225
~2 min
High-fidelity image-to-3D with PBR, text-to-3D
WaveSpeedAI Rapid
wavespeed_rapid.py
$0.0225
~1 min
Bulk iteration, concept validation (16x cheaper)
Trellis 2
trellis2.py
15-55 credits
30s-4 min
Precise poly count control, geometry-only fast runs
# Full pipeline (preview + refine)
uv run ~/.claude/skills/meshy/scripts/meshy_text_to_3d.py \
"a nuclear submarine, teardrop hull, conning tower" \
--model-type lowpoly --filename submarine
# Preview only (saves credits)
uv run ~/.claude/skills/meshy/scripts/meshy_text_to_3d.py \
"a red cube, game ready" --skip-refine --filename cube
2. Image-to-3D
# From local file
uv run ~/.claude/skills/meshy/scripts/meshy_image_to_3d.py ./reference.png --filename tank
# From URL
uv run ~/.claude/skills/meshy/scripts/meshy_image_to_3d.py https://example.com/photo.jpg
For generating multiple models (e.g., all 11 World War Watcher ordnance types):
# Generate all models from manifest
uv run ~/.claude/skills/meshy/scripts/meshy_batch.py manifest.json --output ./staging/
# Generate specific models only
uv run ~/.claude/skills/meshy/scripts/meshy_batch.py manifest.json --models fighter carrier
# Inspect manifest
uv run ~/.claude/skills/meshy/scripts/meshy_batch.py manifest.json --list
uv run ~/.claude/skills/meshy/scripts/meshy_batch.py manifest.json --dry-run
# Check status of last batch run
uv run ~/.claude/skills/meshy/scripts/meshy_batch.py manifest.json --status
5. Task Management
uv run ~/.claude/skills/meshy/scripts/meshy_tasks.py list # recent tasks
uv run ~/.claude/skills/meshy/scripts/meshy_tasks.py get TASK_ID # task detail
uv run ~/.claude/skills/meshy/scripts/meshy_tasks.py get TASK_ID --watch # poll until done
uv run ~/.claude/skills/meshy/scripts/meshy_tasks.py download TASK_ID # download GLB
uv run ~/.claude/skills/meshy/scripts/meshy_tasks.py balance # credit balance
Script Reference
meshy_text_to_3d.py
Flag
Default
Description
PROMPT
required
Text description of 3D model
--negative-prompt
""
What to avoid
--model-type
lowpoly
standard / lowpoly / ai_model
--skip-refine
False
Preview only (saves credits)
--enable-pbr / --no-pbr
True
PBR textures in refine
--format
glb
glb / gltf / usdz / fbx
--output
./output
Output directory
--filename
derived
Output filename (no extension)
--api-key
env
Override MESHY_API_KEY
--poll-interval
5
Seconds between polls
--timeout
600
Max wait seconds
--quiet / --json
—
Output modes
meshy_image_to_3d.py
Same flags minus --negative-prompt, --skip-refine, --enable-pbr. Accepts local path (auto base64-encodes) or URL.
meshy_texture.py
Flag
Default
Description
MODEL_URL
required
URL of existing 3D model
--prompt
required
Texture description
--negative-prompt
""
What to avoid
--art-style
""
Art style hint
--enable-pbr / --no-pbr
True
PBR textures
meshy_tasks.py
Subcommands: list, get, download, balance. All accept --json.
meshy_batch.py
Flag
Default
Description
MANIFEST
required
Path to JSON manifest file
--models
all
Generate specific model IDs only
--list
—
List IDs and prompts
--dry-run
—
Preview without API calls
--status
—
Check last batch run status
--skip-refine
False
Override: preview only for all
--output
manifest
Override output directory
Batch Manifest Format
{"version":1,"defaults":{"model_type":"lowpoly","skip_refine":false,"format":"glb","enable_pbr":true,"output_dir":"./output"},"models":[{"id":"fighter","prompt":"a modern stealth fighter jet, delta wings...","negative_prompt":"organic, blurry...","output_name":"fighter.glb"}]}
Local Depth → references/depth-local.md (no credential needed — free, local ONNX inference)
All three accept local file paths (auto base64-encoded) or URLs. Run any script with --help for flags.
GLB Viewer
Museum-quality standalone Three.js viewer for previewing generated .glb models. Open in browser — no server needed.
# Open with a model URL
open ~/.claude/skills/meshy/assets/glb-viewer.html?glb=https://cdn.example.com/model.glb
# Or drag-and-drop a local .glb file onto the page
open ~/.claude/skills/meshy/assets/glb-viewer.html
Features: 7-light PBR gallery rig, bloom/vignette post-processing, SMAA, auto-rotate with graceful pause, ground plane with shadow catcher.
Keyboard: D download, R toggle rotation, F fullscreen.
API Reference
See references/api-reference.md for full Meshy v2 endpoint documentation.