Nodes/ComfyUI-Meshy/Meshy - Text to 3D (Refine)
ComfyUI Node

Meshy - Text to 3D (Refine)

Turning a Meshy Preview Into the Real Model

By Kazama-Suichiku·Created 9 months ago·Updated 9 months ago· 7
Meshy - Text to 3D (Refine)
  • api_key
  • thumbnail
  • base_color
  • normal
  • metallic_roughness
  • model_path
preview_task_id
texture_prompt
enable_pbrtrue

Preview gets you the draft. MeshyTextTo3DRefine gets you the finished piece. The pack's two-stage design mirrors how Meshy's own API works: generate geometry cheap, then spend more credits to add the texture and detail that makes a model actually usable. If you've run a Preview and thought "that's a lumpy untextured mess," this is the node that fixes it.

How it works

The refine node doesn't re-run the whole generation. You feed it the task_id string that the Preview node output, and it submits a refine task to the same text-to-3D endpoint, then polls and downloads exactly like Preview does - every five seconds, up to a ten-minute window, with a progress bar. The heavy lifting of re-texturing and adding detail happens on Meshy's servers; your machine just waits and then collects the files.

The inputs that matter

There are only three, and only one of them is required:

  • preview_task_id - a plain string, required, and empty by default. This is the task_id output from Meshy Text to 3D (Preview). Wire it across.
  • texture_prompt - optional. A short description of how the surface should look ("brushed aluminum", "worn leather") to steer the texturing pass. Leave it empty and Meshy just does its thing.
  • enable_pbr - optional, default on. Physically-based rendering textures (base color, normal, metallic/roughness), which is what you want if the model is headed into a renderer or game engine.

The outputs mirror Preview minus one: thumbnail, base_color, normal, metallic_roughness (all IMAGE tensors) and model_path (the path to the downloaded .glb). Note there's no task_id output here - refinement is the end of the chain, so you can't re-refine a refine without going back to a fresh preview.

The trap: empty task id

This is the failure mode you will hit the first time, because the node validates that preview_task_id isn't blank and politely refuses to do anything if it is - you get the red error placeholder on every output and an empty model_path, plus a console message telling you to run Preview first and connect its task_id. It's a friendly error, but it can look like a crash if you're not expecting it. The workflow shape is: Preview → its task_id output → Refine's preview_task_id input. Don't try to paste in a task id from a previous session's log either; these task references are meant to be live in the graph.

Why it's a separate node (the economics)

Refinement costs extra credits on top of the preview - you're paying twice, which is exactly why it's not just toggled on by default. The sensible loop is to generate several previews cheaply, pick the winner, and refine only that one. Treat every Preview run as a paid candidate and you'll feel the difference in your credit balance fast. The README quotes preview pricing (roughly 20 credits on meshy-6, ~5 on others) and bills refine as "additional credits" - the exact number depends on model and settings, so check the pricing page before you go wild.

Installing and the rest of the pack

Same install as everything in this pack - no model downloads, it's all cloud API. Via ComfyUI Manager, search "ComfyUI-Meshy", or:

cd ComfyUI/custom_nodes
git clone https://github.com/Kazama-Suichiku/ComfyUI-Meshy
pip install -r ComfyUI-Meshy/requirements.txt

then restart. Dependencies are numpy, Pillow, requests, torch, pyhocon; the only non-standard one is pyhocon. You need a Meshy API key (wired through the Meshy API Key node) and a credit balance. It's a young pack - single commit, late 2025 - so if Manager's registry lags, clone by hand. Result files land in a meshy_<timestamp>_<short-task-id>/ folder under your ComfyUI output directory.

Troubleshooting

Beyond the empty-task-id trap: refine runs can fail if the preview task is no longer valid or was generated under a different account/key, so keep the whole Preview→Refine chain on one API key. Content-filtered prompts and an empty credit balance will fail just like they do at Preview. And since this is a paid call that can run for minutes, it's worth checking the console periodically - the progress bar tells you if you're polling a dead task or a live one.

CategoryMesh/Meshy

Inputs (4)

NameTypeDefaultDescription
api_keyAPIKEY
preview_task_idSTRINGTask ID from Meshy - Text to 3D (Preview) node output
texture_promptoptSTRINGAdditional prompt for texturing (optional)
enable_pbroptBOOLEANtrueEnable PBR textures

Outputs (5)

NameTypeDescription
thumbnailIMAGE
base_colorIMAGE
normalIMAGE
metallic_roughnessIMAGE
model_pathSTRING