comfy / hunyuan3D / imageTo3D
Hunyuan3D in ComfyUI without the CUDA wheel nightmare
- image_url
- model_air
- api_config
- model
- fbx_model
- thumbnail
- rigged_model
- rigged_fbx_model
- animated_model
- animated_fbx_model
- basic_animations
- workflow_id
- raw_json
Image-to-3D is the one corner of ComfyUI where the install is the hard part, not the generation. Hunyuan3D is the best-known open model for the job, and getting it running locally means fighting ComfyUI-3D-Pack's compiled CUDA extensions, or Kijai's wrapper, or a license wrinkle. This node does none of that. It's a hosted Hunyuan3D image-to-3D job that runs on Civitai's fleet and hands you a textured mesh back - no GPU, no model download, just Buzz on your account.
What it actually is
It's one of the ~160 nodes in civitai/civitai-comfy-nodes, Civitai's official ComfyUI pack for its Orchestration API. Every node in the pack is a thin client: it packages your inputs, submits a cloud workflow, polls until it finishes, and converts the result to native Comfy types. This one calls the comfy / hunyuan3D / imageTo3D recipe - the full Tencent Hunyuan3D two-stage pipeline, where a shape model builds the geometry and a separate paint model textures it.
That's the whole value proposition, and it's a real one. Locally, image-to-3D is where "it won't import" eats more hours than "it's slow". This node sidesteps the entire problem: you get the model's output without touching a single compiled wheel.
The inputs that matter
image_url is the one required input - an IMAGE socket, so wire a Load Image or any generator into it. The rest are the knobs Hunyuan3D's comfy engine exposes:
model_version-v2,v2.1, orv2-mini. v2.1 is the version worth using when you want quality; v2-mini if you want something quick and cheap.should_texture- default on. Turn it off to skip the paint stage and get a bare mesh back.enable_pbr- default on, and it's the good default. Hunyuan3D's PBR materials (metalness/roughness/albedo) relight properly in a game engine instead of arriving as one baked diffuse map.octree_resolutionandmesh_threshold- the geometry controls. Higher octree = finer voxel grid, higher threshold = more conservative mesh extraction.prompt- optional text hint for the generation. Mostly useful for steering texture.steps,cfg_scale,sampler,scheduler- the diffusion knobs. The default sampler iseulerwith thenormalscheduler, and honestly, for hosted generation, leaving them alone is fine until you're chasing a specific look.
The outputs
Every recipe node in this pack returns workflow_id and raw_json for debugging and cost inspection, and this one adds eight more:
model- a STRING, and the thing you actually want. It's a URL to the generated mesh (GLB), not a file. Download it, or wire it into something that fetches the URL for you.fbx_model- the same mesh as FBX, for engines that want it.thumbnail- an IMAGE you can wire straight into a Preview Image node. This is the quickest way to see what you got.rigged_model/rigged_fbx_model/animated_model/animated_fbx_model/basic_animations- populated only when the backend produces them; in practice you'll mostly ignore these on the Hunyuan3D nodes.
Wire thumbnail → Preview Image and model → Save Text (or a downloader node), and you have a working loop.
Installing it
ComfyUI Manager → Custom Nodes Manager → search Civitai Comfy Nodes (publisher civitai) → Install, then restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/civitai/civitai-comfy-nodes.git
pip install -r civitai-comfy-nodes/requirements.txt
The dependency is just requests + python-socketio. No model files at all.
Troubleshooting
- "No Civitai credentials" - the node needs an account. Wire a Civitai Auth node, set
CIVITAI_API_TOKEN, or sign in from the Civitai sidebar tab (OAuth, stored locally and auto-refreshed). - It costs Buzz. Every run is metered. Check
raw_json(or the cost line on the node) if a surprise bill is your concern - the pack surfaces the per-run cost on the node itself. - Don't expect game-ready topology. This is the honest caveat on every hosted image-to-3D node: the silhouette and surface look great, the geometry underneath is triangle soup with machine-made UVs and no rig. Fine for a prop, a render, or a 3D print; you're doing a retopo pass if it has to deform.
- Missing required input errors are raised locally before anything is submitted, so a blank field tells you immediately.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| image_url | IMAGE | — | |
| model_versionopt | COMBO | v2 | 3 options: v2, v2.1, v2-mini |
| model_airopt | CIVITAI_AIR | — | |
| stepsopt | INT | 11–150 | — |
| cfg_scaleopt | FLOAT | 0.000–30 | — |
| sampleropt | COMBO | euler | 18 options: euler, euler_ancestral, heun, heunpp2, dpm_2, dpm_2_ancestral, +12 |
| scheduleropt | COMBO | normal | 7 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +1 |
| resolutionopt | INT | 11–8192 | — |
| vae_num_chunksopt | INT | 80001000–500000 | — |
| octree_resolutionopt | INT | 25616–512 | — |
| mesh_thresholdopt | FLOAT | 0.600–1 | — |
| seedopt | INT | 00–4294967295 | — |
| shiftopt | FLOAT | 1.000–2147483647 | — |
| promptopt | STRING | — | |
| should_textureopt | BOOLEAN | true | — |
| should_remeshopt | BOOLEAN | false | — |
| enable_pbropt | BOOLEAN | true | — |
| api_configopt | CIVITAI_CONFIG | Optional Civitai Auth connection; defaults to CIVITAI_API_TOKEN or stored OAuth login. |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| model | STRING | — |
| fbx_model | STRING | — |
| thumbnail | IMAGE | — |
| rigged_model | STRING | — |
| rigged_fbx_model | STRING | — |
| animated_model | STRING | — |
| animated_fbx_model | STRING | — |
| basic_animations | STRING | — |
| workflow_id | STRING | — |
| raw_json | STRING | — |