Meshy - Text to 3D (Preview)
Type a Prompt, Get a 3D Model — but It's a 'Preview' for a Reason
- api_key
- thumbnail
- base_color
- normal
- metallic_roughness
- model_path
- task_id
This is the headline node of the pack. Type "a steampunk owl made of brass" into MeshyTextTo3DPreview, hit run, and a few minutes later you have an actual 3D model on disk plus its texture maps laid out as images in your graph. All without touching a single GPU locally - the heavy lifting happens on Meshy's servers, and you pay for it in API credits.
Where this fits
ComfyUI 3D generation has two flavors. There's the local route - Trellis, Hunyuan3D and friends, where you download multi-gigabyte weights and burn VRAM - and there's the API route, where a service like Meshy generates the model in the cloud and you get the file back. This pack is firmly the second kind. It's a thin, honest wrapper around Meshy's API, so it works on any machine that can run ComfyUI at all - but every generation is a cloud round-trip that costs credits and takes time. Treat it like a slow, paid sampler.
How it works
The node submits a preview task to Meshy's text-to-3D endpoint, gets a task_id back, then polls the task status every five seconds - with a proper ComfyUI progress bar - until it either succeeds, fails, or hits a ten-minute timeout. On success it downloads the model and texture files into a folder under your ComfyUI output directory named meshy_<timestamp>_<short-task-id>/ and passes the results along as tensors and paths. The whole thing is one blocking call from ComfyUI's perspective; the graph sits and waits while the polling loop runs.
The inputs that matter
- prompt - a multiline string, and the whole game. Describe the object, its material, its vibe. "A 3D model of a cute cat" is the default and it's exactly as generic as it looks.
- art_style - one of
realistic,cartoon,low-poly,sculpture,pbr. Sets the surface treatment, so it shapes both the geometry and the texturing. - ai_model - the dropdown offers
meshy-4,meshy-5, andlatest(the default). The README says the pack targets Meshy-4/5/6, withlatestresolving to the current generation. Just leave it onlatest.
The optional extras are worth a glance: negative_prompt ("what to avoid"), topology (triangle default, or quad), target_polycount (100–300,000, default 30,000 - lower is cheaper to render and game-engine friendly), seed (-1 for random; a fixed seed lets you compare generations), and enable_pbr. One real gotcha in the code: enable_pbr is only sent to the API for meshy-5 and later, so on meshy-4 it's silently ignored no matter what the checkbox says.
The outputs
You get six: thumbnail (a render of the model you can actually look at), base_color, normal, and metallic_roughness (the PBR texture maps, all as IMAGE tensors you can preview, save, or wire further down the graph), model_path (the file path to the downloaded .glb - the other formats sit in the same folder), and task_id, the string that hands off to the Refine node.
About that word "preview"
Previews are the cheap, rough stage of Meshy's two-step flow - you get the geometry and basic surfacing, not the polished result. That's deliberate, and it's the economy of the whole design: try several cheap previews, then spend real credits refining only the one you like. The README quotes roughly 20 credits for a preview on meshy-6 and about 5 on the older models, with refine costing extra. Don't judge the pipeline on a preview alone; judge it after Refine does its pass.
Installing
No model downloads here - nothing to fetch but the pack itself. Via ComfyUI Manager, search "ComfyUI-Meshy". Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Kazama-Suichiku/ComfyUI-Meshy
pip install -r ComfyUI-Meshy/requirements.txt
then restart ComfyUI. The dependencies are numpy, Pillow, requests, torch, and pyhocon - all standard except pyhocon. You'll also need a Meshy API key and a credit balance, wired in through the Meshy API Key node. The pack is very new (a single commit from late 2025), so if Manager can't find it, clone by hand.
Troubleshooting
Failures show up as a red error placeholder image on the outputs and an empty model_path, with the reason printed in the console. The usual suspects: a 401 from a wrong or space-stuffed API key, a prompt that trips Meshy's content filters (the README flags "restricted content" as a generation failure), an empty credit balance, or a task that just takes longer than the ten-minute polling window. And remember - you're paying per run, so a big target_polycount on a fancy model is a more expensive experiment than you might expect.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | APIKEY | — | |
| prompt | STRING | A 3D model of a cute cat | Text description of the 3D model you want to generate |
| art_style | COMBO | realistic | Visual style of the generated model |
| ai_model | COMBO | latest | AI model version to use (latest recommended) |
| negative_promptopt | STRING | What to avoid in the generation | |
| topologyopt | COMBO | triangle | Mesh topology type |
| target_polycountopt | INT | 30000100–300000 | Target polygon count (100-300,000) |
| seedopt | INT | -1-1–2147483647 | Random seed (-1 for random) |
| enable_pbropt | BOOLEAN | true | Enable PBR textures (only for meshy-5 and later) |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| thumbnail | IMAGE | — |
| base_color | IMAGE | — |
| normal | IMAGE | — |
| metallic_roughness | IMAGE | — |
| model_path | STRING | — |
| task_id | STRING | — |