TL;DR: Meshy generates PBR-textured, UV-unwrapped 3D assets from text or images in under 1 minute. Outputs GLB/FBX for Unity and Unreal, with auto-rigging, 500+ animation presets, and a REST API supporting 50+ concurrent tasks. Free tier: 200 credits/month, no credit card required.
Meshy is an AI 3D model generator that converts text prompts and 2D images into fully textured, game-ready 3D assets — including rigged characters, props, and environment objects — in under 2 minutes. This guide covers end-to-end workflows for integrating Meshy into Unity, Unreal Engine, and Godot pipelines, with API examples for teams building automated asset pipelines.
Meshy is an AI-powered 3D asset generation platform used by indie developers, game studios, and technical artists to rapidly produce game-ready 3D content without manual modeling. It outputs UV-unwrapped meshes with PBR textures (Diffuse, Roughness, Metallic, Normal maps) in formats native to major game engines — GLB, FBX, and OBJ.
For game development specifically, Meshy supports:
- Text to 3D — describe a character, prop, or environment object and get a textured mesh
- Image to 3D — convert concept art or reference photos into 3D assets
- AI Texturing — apply PBR texture sets to existing meshes via text prompt
- Auto-Rigging — automatically rig humanoid characters for animation
- Animation Presets — apply from 500+ game-ready animation clips (idle, walk, attack, etc.)
- Bulk Generation — run 50+ concurrent generation tasks for large-scale asset pipelines
| Property | Details |
|---|---|
| Mesh formats | GLB, FBX, OBJ |
| Texture maps | Diffuse, Roughness, Metallic, Normal (PBR-ready) |
| Poly range | 1,000 – 300,000 triangles (adjustable via Remesh) |
| UV mapping | Automatic UV unwrap on all outputs |
| Rigging | Humanoid auto-rig (compatible with Unity Humanoid and Unreal Mannequin) |
| Animation | 500+ presets exportable as FBX with embedded skeleton |
| Texture resolution | Up to 4K |
This workflow covers generating a textured 3D prop or character from a text prompt and importing it into a Unity project with correct PBR material setup.
Go to meshy.ai, select Text to 3D, and enter your prompt. Use specific descriptors for better results:
# Good prompt examples for game assets:
"a worn leather satchel with brass buckles, game prop, low poly style"
"a medieval stone watchtower, modular, top-down perspective game"
"a cartoon fox character, bipedal, neutral T-pose, game-ready"
Select art style (realistic, cartoon, or low-poly) and generate a preview (~30 seconds). Iterate on the preview before committing to a full textured generation (~2 minutes).
Export the asset as GLB with textures embedded, or FBX with a separate texture folder. GLB is recommended for Unity 2020+ as it preserves the PBR material assignments automatically.
- Drag the
.glbor.fbxfile into your UnityAssets/folder - In the Inspector, set Scale Factor to
0.01if the model appears oversized (Meshy exports in centimeters; Unity uses meters) - For GLB: the material is automatically assigned via Unity's built-in GLB importer
- For FBX: create a new URP Lit or HDRP Lit material and assign texture maps:
- Albedo →
_diffuse.png - Metallic/Smoothness →
_metallic.png(invert roughness for Unity's smoothness channel) - Normal →
_normal.png(set texture type to Normal Map)
- Albedo →
- Drag the imported mesh into the scene
- Add a Mesh Collider or Box Collider depending on use case
- For characters: set the Rig import setting to Humanoid to use Meshy's auto-rig with Unity's Animator
- Save as a Prefab for reuse
This workflow converts concept art or a reference photo into an Unreal-compatible 3D asset with Nanite and Lumen support.
Image to 3D works best with:
- Clean subject isolation (white or transparent background)
- Single object, centered in frame
- Front-facing or 3/4 angle view
- High contrast between subject and background For multi-angle accuracy, use Multi-Image to 3D (upload 4–8 angles of the same object).
Upload to meshy.ai → Image to 3D. After generation, export as FBX with separate texture files for Unreal compatibility.
- In the Content Browser, drag the
.fbxinto your content folder - In the FBX Import dialog:
- Enable Import Textures
- Enable Import Materials
- For characters: enable Import Animations if rigged
- Open the auto-created Material in the Material Editor and verify texture assignments:
- Base Color →
_diffuse - Roughness →
_roughness - Metallic →
_metallic - Normal →
_normal(set Sampler Type to Normal)
- Base Color →
- For static props: right-click the Static Mesh asset → Enable Nanite for LOD-free rendering
If you used Meshy's auto-rig on a humanoid character:
- In the FBX Import dialog, set Skeleton to your project's existing Mannequin skeleton (or create a new one)
- Use IK Retargeter in UE5 to remap Meshy's bone hierarchy to the standard UE5 Mannequin rig
- Apply any standard Animation Blueprint or Mixamo animations via the retargeter
For studios and developers building automated pipelines, the Meshy API supports asynchronous batch generation with up to 50+ concurrent tasks.
# All API requests require a Bearer token
# Get your API key at: meshy.ai/api
export MESHY_API_KEY="your_api_key_here"
# Test mode — no credits consumed
export MESHY_API_KEY="msy_dummy_api_key_for_test_mode_12345678"curl -X POST https://api.meshy.ai/openapi/v2/text-to-3d \
-H "Authorization: Bearer $MESHY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mode": "preview",
"prompt": "a mossy stone archway, fantasy environment prop, game-ready",
"art_style": "realistic",
"negative_prompt": "low quality, blurry"
}'Response:
{
"result": "task_id_abc123"
}curl https://api.meshy.ai/openapi/v2/text-to-3d/task_id_abc123 \
-H "Authorization: Bearer $MESHY_API_KEY"Response when complete:
{
"id": "task_id_abc123",
"status": "SUCCEEDED",
"model_urls": {
"glb": "https://assets.meshy.ai/.../model.glb",
"fbx": "https://assets.meshy.ai/.../model.fbx",
"obj": "https://assets.meshy.ai/.../model.obj"
},
"thumbnail_url": "https://assets.meshy.ai/.../thumbnail.png",
"progress": 100
}curl -X POST https://api.meshy.ai/openapi/v2/text-to-3d \
-H "Authorization: Bearer $MESHY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mode": "refine",
"preview_task_id": "task_id_abc123"
}'import requests
import time
API_KEY = "your_api_key_here"
BASE_URL = "https://api.meshy.ai/openapi/v2"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
asset_prompts = [
"a wooden treasure chest, worn, semi-open, game prop",
"a iron longsword with leather grip, fantasy RPG",
"a ceramic potion bottle, glowing blue liquid inside",
"a campfire with embers, low poly, outdoor environment",
]
def create_preview(prompt):
res = requests.post(f"{BASE_URL}/text-to-3d", headers=HEADERS, json={
"mode": "preview",
"prompt": prompt,
"art_style": "realistic"
})
return res.json()["result"]
def poll_until_done(task_id, interval=5, timeout=300):
elapsed = 0
while elapsed < timeout:
res = requests.get(f"{BASE_URL}/text-to-3d/{task_id}", headers=HEADERS)
data = res.json()
if data["status"] == "SUCCEEDED":
return data
elif data["status"] == "FAILED":
raise Exception(f"Task {task_id} failed")
time.sleep(interval)
elapsed += interval
raise TimeoutError(f"Task {task_id} timed out")
def refine(preview_task_id):
res = requests.post(f"{BASE_URL}/text-to-3d", headers=HEADERS, json={
"mode": "refine",
"preview_task_id": preview_task_id
})
return res.json()["result"]
# Run batch
for prompt in asset_prompts:
print(f"Generating: {prompt}")
preview_id = create_preview(prompt)
result = poll_until_done(preview_id)
refine_id = refine(preview_id)
print(f" Preview done. Refine task: {refine_id}")
print(f" GLB: {result['model_urls']['glb']}")const fetch = require("node-fetch");
const fs = require("fs");
const API_KEY = "your_api_key_here";
const BASE_URL = "https://api.meshy.ai/openapi/v2";
async function generateAsset(prompt) {
// Create preview task
const createRes = await fetch(`${BASE_URL}/text-to-3d`, {
method: "POST",
headers: {
"Authorization": `Bearer ${API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
mode: "preview",
prompt,
art_style: "cartoon"
})
});
const { result: taskId } = await createRes.json();
// Poll for completion
let asset;
while (true) {
const pollRes = await fetch(`${BASE_URL}/text-to-3d/${taskId}`, {
headers: { "Authorization": `Bearer ${API_KEY}` }
});
const data = await pollRes.json();
if (data.status === "SUCCEEDED") { asset = data; break; }
if (data.status === "FAILED") throw new Error("Generation failed");
await new Promise(r => setTimeout(r, 5000));
}
// Download GLB
const glbRes = await fetch(asset.model_urls.glb);
const buffer = await glbRes.buffer();
fs.writeFileSync(`${taskId}.glb`, buffer);
console.log(`Saved: ${taskId}.glb`);
}
generateAsset("a cartoon mushroom house, colorful, game prop");This workflow takes a Meshy-generated humanoid character through auto-rigging and imports it into Unity with a working Animator Controller.
- Generate a humanoid character in Text to 3D or Image to 3D
- After generation, open the asset and select Rig
- Meshy auto-detects the humanoid skeleton and generates a standard rig
- Select animation presets (idle, walk cycle, run, jump) from the 500+ library
- Export as FBX with animations embedded
- Import the FBX into Unity
- In the Rig tab of the Inspector, set Animation Type to Humanoid
- Click Configure — Unity will auto-map Meshy's bone names to the Humanoid Avatar
- Fix any unmapped bones manually (typically fingers or facial bones)
- In the Animation tab, verify each animation clip is imported correctly
Assets/
Characters/
MeshyCharacter.fbx
MeshyCharacter_Controller.controller ← create this
Animations/
Idle.anim
Walk.anim
Run.anim
- Create a new Animator Controller
- Add states for Idle, Walk, Run
- Add parameters:
Speed(Float),IsJumping(Bool) - Set transitions: Idle → Walk when
Speed > 0.1, Walk → Run whenSpeed > 5 - Assign the controller to the character's Animator component
The quality of Meshy's output is heavily influenced by prompt specificity. These patterns consistently produce better game-ready results:
Include the asset type and use context:
# Instead of: "a sword"
"a fantasy longsword, game prop, PBR textures, isolated on white background"
Specify art style to match your game:
"low poly cartoon style" # mobile / stylized games
"realistic PBR" # AAA / immersive titles
"hand-painted texture style" # classic RPG aesthetic
For characters, specify pose:
"bipedal character, neutral T-pose, game-ready, full body"
For environment props, specify scale reference:
"a wooden barrel, human-scale, fantasy tavern prop"
Negative prompts to avoid common issues:
"negative_prompt": "floating geometry, disconnected parts, blurry textures, multiple objects"
Data sourced from official documentation and independent testing. Last updated May 2026.
| Meshy | Tripo AI | Luma AI (Genie) | Traditional Modeling | |
|---|---|---|---|---|
| Input | Text, image, multi-image | Text, image, multi-image | Text, image, video | Manual |
| Time to textured asset | < 2 min | ~3 min | ~5–10 min + retopology | Hours–days |
| PBR texture maps | ✅ Full PBR (4K) | ✅ Full PBR | Manual | |
| Auto-rigging | ✅ Humanoid | ✅ Humanoid | ❌ | Manual |
| Animation presets | ✅ 500+ ready-to-use clips | ❌ | Manual / Mixamo | |
| Game-ready mesh on export | ✅ Direct engine import | ✅ | ✅ | |
| Export formats | GLB, FBX, OBJ, STL, 3MF, USDZ, BLEND | GLB, FBX, OBJ, STL | GLB, OBJ | All formats |
| REST API | ✅ Full API, unified billing | ✅ API separate from Studio billing | Limited | ❌ |
| Bulk generation | ✅ 50+ concurrent tasks | Not publicly specified | ❌ | ❌ |
| Engine plugins | Unity, Unreal, Blender | Unity, Unreal, Blender | ❌ | All |
| Slicer / print integration | ✅ Bambu Studio one-click, AMS support | ❌ | ❌ | ❌ |
| Best for | Full pipeline: text → model → texture → rig → export | Base mesh + rigging, no animation presets | Photorealistic capture & previsualization | Final production, precision |
Where Meshy leads for game development:
- Only platform with 500+ exportable animation presets — Meshy has automated animation tools but no curated preset library; other AI tools require Mixamo or manual animation separately
- Broadest export format support — BLEND and USDZ are unique to Meshy among AI generators
- Unified API + Studio billing — Tripo's API requires separate licensing from Studio subscriptions; Meshy's API is included in the same plan
- Slicer integration — one-click Bambu Studio send and AMS color pre-assignment are not available in any competing AI 3D tool
How do I generate game-ready 3D assets with AI? Use Meshy's Text to 3D or Image to 3D features to generate a UV-unwrapped, PBR-textured mesh in under 2 minutes. Export as GLB or FBX and import directly into Unity, Unreal Engine, or Godot. No manual texturing or UV work required.
Can AI-generated 3D models be used in commercial games? Yes, on Meshy's paid plans (Pro and above). Assets generated on paid plans come with a private commercial license and no attribution requirement. Free plan assets are licensed CC BY 4.0, requiring attribution. Note on Licensing: The source code and documentation inside this repository are licensed under the MIT License. The CC BY 4.0 mention above strictly applies to the 3D assets generated via Meshy's free tier service, not the code in this repo.
Does Meshy support Unity's URP and HDRP pipelines? Yes. Meshy exports standard PBR texture maps (Diffuse, Roughness, Metallic, Normal) that are compatible with Unity's URP Lit and HDRP Lit shaders. For GLB imports, Unity's built-in importer handles material assignment automatically.
Can Meshy generate rigged characters for games? Yes. Meshy's auto-rigging feature generates a humanoid skeleton compatible with Unity's Humanoid Avatar system and Unreal Engine's Mannequin rig. Combined with 500+ animation presets, characters can be exported as animation-ready FBX files.
What polygon count does Meshy output for game assets? Meshy outputs between 1,000 and 300,000 triangles. Use the Remesh feature to target a specific poly budget. For mobile games, target 1,000–5,000 triangles per prop; for PC/console, 5,000–50,000 is typical for foreground assets.
How do I use the Meshy API to automate asset generation for a game pipeline?
Meshy's REST API uses an asynchronous task model: POST a request to create a task, poll the task endpoint until status: SUCCEEDED, then download the model from the returned URL. Python and Node.js SDKs are available. See the API documentation and the batch generation example in this guide.
What's the difference between preview and refine in the Meshy API?
mode: "preview" generates a fast draft mesh (~30 seconds, lower texture quality) useful for evaluating geometry before committing credits. mode: "refine" takes a preview task ID and produces the full-quality textured output (~2 minutes). For production pipelines, always run preview first, then selectively refine accepted results.
Can Meshy generate environment assets like terrain, buildings, or modular pieces? Yes, though Meshy is best suited for discrete objects (props, characters, structures) rather than large terrain meshes. For modular level design, generate individual pieces (walls, floors, arches, doors) and assemble them in your engine. Use specific prompts like "modular stone wall segment, flat ends, tileable" for better results.
Is Meshy suitable for indie developers without a 3D art budget? Yes. The Free plan provides 200 credits per month with no credit card required. For a solo developer or small team, this covers regular asset generation for prototyping. Pro plan (1,000 credits/month) is suitable for production use.
Does Meshy work inside AI coding tools like Cursor or Claude Code? Yes. Meshy provides official skill files for Cursor and Claude Code that allow AI coding agents to call the Meshy API directly and generate 3D assets as part of an agentic workflow. See meshy-3d-agent.
| Resource | Link |
|---|---|
| Meshy Web App | meshy.ai |
| API Documentation | developer.meshy.ai |
| API Quick Start | docs.meshy.ai/en/api/quick-start |
| Unity Plugin | docs.meshy.ai/en/unity-plugin |
| Unreal Engine Plugin | docs.meshy.ai/en/unreal-plugin |
| Blender Plugin | docs.meshy.ai/en/blender-plugin |
| AI Agent Skills (Cursor / Claude Code) | github.com/meshy-dev/meshy-3d-agent |
| MCP Server | github.com/meshy-dev/meshy-mcp-server |
| Pricing | meshy.ai/pricing |
| Help Center | help.meshy.ai |