comfy / trellis2 / imageTo3D
The polite image-to-3D
- 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
If Hunyuan3D is the default image-to-3D model everyone argues about, TRELLIS is the one nobody argues with. Microsoft's MIT-licensed architecture is the technically elegant option - one structured latent that decodes into a mesh, gaussians, or a radiance field - and TRELLIS.2 adds PBR materials and a more compact latent on top. The catch was always the same as everywhere else in 3D: running it locally means a compiled-dependency install that eats weekends. This node runs it on Civitai's fleet instead.
What it is
comfy / trellis2 / imageTo3D from the civitai/civitai-comfy-nodes pack. Your image goes up to the Civitai orchestration API, a cloud job runs the TRELLIS.2 pipeline, and you get back a textured mesh - as a URL string plus a native IMAGE thumbnail. No GPU, no CUDA wheels, no ComfyUI-3D-Pack.
The thing that makes TRELLIS worth reaching for over Hunyuan3D: the license is clean (MIT, only the CUDA octree renderer carries separate terms) and the output is often tidier out of the gate, which is why the "No ComfyUI Node Nightmare" crowd keeps landing on it. On the hosted path you get the same model without the nightmare part.
The inputs
image_url is the only required one - an IMAGE socket. Then the TRELLIS.2 stage controls, which are genuinely useful to know:
model_version-pixal3D(default) ortrellis2. Two different backends, so the defaults and look differ; trellis2 is the current-generation pick.structure_steps(12),shape_steps(20),upsample_steps(12),texture_steps(12) - the four sub-stages of the pipeline each sample separately. Each has its own cfg:structure_cfg7.5,shape_cfg7.5,texture_cfg1.target_resolution- an enum from 1024 to 2048, default 1536. This is the resolution the generator works at; bigger is finer but slower and pricier.should_remesh(default true),remesh_resolution(768),target_face_count(700,000) - the cleanup pass. TRELLIS.2 remeshes by default, which is why its output tends to look less like a blob of triangles than the raw generators.texture_resolution(2048) - how big the output texture is. Bump it for hero assets, drop it to save cost.should_texture(true) andenable_pbr(true) - texture on, PBR channels on. Both are good defaults.
The outputs
model (URL to the GLB), fbx_model, thumbnail (IMAGE → Preview Image), the usually-empty rigged/animated slots, and workflow_id + raw_json. In practice: thumbnail to look, model to download, raw_json to see what it cost.
Installing it
Manager → Civitai Comfy Nodes (publisher civitai) → install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/civitai/civitai-comfy-nodes.git
pip install -r civitai-comfy-nodes/requirements.txt
requests + python-socketio, nothing else. No model files.
Gotchas
- Credentials. Wire a Civitai Auth node,
CIVITAI_API_TOKEN, or the sidebar OAuth login. No token, no job. - It bills Buzz per run. The 1536 default resolution with full texturing isn't the cheap end of the envelope; if you're iterating, drop
target_resolutionandtexture_resolutionfirst. modelis a URL, not a file. Save it yourself if you want it local.- Still not production topology. TRELLIS.2's remeshing makes it friendlier, but the honest state of the field stands: generated geometry is a starting block, not a finished game asset. For a static prop or a print it's genuinely usable; for anything that deforms, budget for retopo.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| image_url | IMAGE | — | |
| model_versionopt | COMBO | pixal3D | 2 options: pixal3D, trellis2 |
| model_airopt | CIVITAI_AIR | — | |
| structure_stepsopt | INT | 121–100 | — |
| shape_stepsopt | INT | 201–100 | — |
| upsample_stepsopt | INT | 121–100 | — |
| texture_stepsopt | INT | 121–100 | — |
| structure_cfgopt | FLOAT | 7.500–30 | — |
| shape_cfgopt | FLOAT | 7.500–30 | — |
| texture_cfgopt | FLOAT | 1.000–30 | — |
| target_resolutionopt | COMBO | 1536 | 9 options: 1024, 1152, 1280, 1408, 1536, 1664, +3 |
| should_remeshopt | BOOLEAN | true | — |
| remesh_resolutionopt | INT | 76832–2048 | — |
| target_face_countopt | INT | 7000001000–50000000 | — |
| texture_resolutionopt | INT | 204864–8192 | — |
| seedopt | INT | 00–4294967295 | — |
| should_textureopt | BOOLEAN | true | — |
| 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 | — |