# Image To 3d

> Convert a photo into a 3D model using Meshy API and import it into Blender via MCP.

- **Type:** Skill
- **Install:** `agentstack add skill-max-786-claude-3d-harness-image-to-3d`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [MAX-786](https://agentstack.voostack.com/s/max-786)
- **Installs:** 0
- **Category:** [Content & Media](https://agentstack.voostack.com/c/content-and-media)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [MAX-786](https://github.com/MAX-786)
- **Source:** https://github.com/MAX-786/claude-3d-harness/tree/main/library/kb/image-to-3d

## Install

```sh
agentstack add skill-max-786-claude-3d-harness-image-to-3d
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

## Image to 3D Blender Skill

Converts a user-provided photo into a textured 3D model using the Meshy AI API, then imports it into the active Blender scene.

## When to Use

Trigger this skill when:
- User wants to turn a photo/image into a 3D model
- User says "make this 3D", "convert to 3D", "3D model from image"
- User provides an image and wants it in Blender as a 3D object

## Prerequisites

- **Meshy API Key**: Already set in the environment variable `MESHY_API_KEY`. Never ask for it in chat, never put it on a command line or in a file
- **Blender MCP**: Must be connected (blender-mcp addon running on port 9876)
- **Image**: Local file path (.jpg, .jpeg, .png) or publicly accessible URL. The image is uploaded to meshy.ai, a paid third-party service: say so before starting

## Flow

### Step 1: Prepare the Image

If the user provides a local file path, base64 encode it:

```bash
BASE64_IMAGE=$(base64 -i "")
DATA_URI="data:image/png;base64,${BASE64_IMAGE}"
```

### Step 2: Create Image-to-3D Task

```bash
curl -s https://api.meshy.ai/openapi/v1/image-to-3d \
  -X POST \
  -H "Authorization: Bearer ${MESHY_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "image_url": "",
    "ai_model": "meshy-6",
    "enable_pbr": true,
    "should_remesh": true,
    "should_texture": true,
    "topology": "quad",
    "target_polycount": 30000,
    "target_formats": ["glb"]
  }'
```

Response gives a task ID: `{"result": ""}`

### Step 3: Poll for Completion

```bash
curl -s https://api.meshy.ai/openapi/v1/image-to-3d/ \
  -H "Authorization: Bearer ${MESHY_API_KEY}"
```

Poll every 10 seconds. Check `status` field:
- `PENDING` — queued
- `IN_PROGRESS` — generating (check `progress` field for %)
- `SUCCEEDED` — done, `model_urls.glb` has the download URL
- `FAILED` — check `task_error.message`

### Step 4: Download the GLB

```bash
curl -L -o "/.glb" ""
```

### Step 5: Import into Blender

Use the Blender MCP `execute_blender_code` tool:

```python
import bpy

# Import GLB (into the scene as it is: nothing is cleared)
bpy.ops.import_scene.gltf(filepath="/.glb")

# Center and frame the imported object
bpy.ops.object.select_all(action='SELECT')
bpy.ops.view3d.view_selected()
```

## Configuration Options

| Option | Default | Description |
|--------|---------|-------------|
| `ai_model` | `meshy-6` | Model to use. Options: `meshy-5`, `meshy-6`, `latest` |
| `model_type` | `standard` | `standard` for detail, `lowpoly` for clean game meshes |
| `topology` | `triangle` | `quad` or `triangle` mesh |
| `target_polycount` | `30000` | 100–300,000 polygons |
| `enable_pbr` | `true` | Generate metallic/roughness/normal maps |
| `symmetry_mode` | `auto` | `off`, `auto`, or `on` |
| `pose_mode` | `""` | `a-pose`, `t-pose`, or empty |
| `should_texture` | `true` | Generate textures (costs extra credits) |
| `remove_lighting` | `true` | Clean textures without baked lighting |

## Output

After completion, the user gets:
- 3D model imported into Blender scene
- Textured with PBR materials (if enabled)
- Ready for rendering, animation, or further editing

## Error Handling

- **402**: Insufficient Meshy credits — inform user
- **429**: Rate limited — wait and retry
- **FAILED status**: Report `task_error.message` to user
- **Blender MCP disconnected**: Ask user to reconnect addon

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [MAX-786](https://github.com/MAX-786)
- **Source:** [MAX-786/claude-3d-harness](https://github.com/MAX-786/claude-3d-harness)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-max-786-claude-3d-harness-image-to-3d
- Seller: https://agentstack.voostack.com/s/max-786
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
