Sloyd: Image to 3D
Image to 3D turns one picture into a GLB — no CUDA wheels, no 3D-Pack
- image
- model_3d
- sloyd_job
- model_path
- job_id
Local image-to-3D in ComfyUI works, and the install will eat your evening. ComfyUI-3D-Pack is a stack of compiled CUDA extensions pinned to one specific torch/CUDA/Python combination, and its issue tracker is a support group. This node is the honest alternative: it is an HTTP client. You give it an image, Sloyd's servers reconstruct a mesh, you get a .glb back on disk. No weights, no GPU, no build tools.
Sloyd: Image to 3D hits Sloyd's image-to-3d endpoint. It's the one you'd actually reach for, because image-to-3D is the part of 3D generation that genuinely works - text-to-3D in the open ecosystem is almost always text-to-image followed by image-to-3D anyway. So generate your reference in Flux or SDXL, feed it here, and get a mesh.
What comes back, and what it's good for
A textured GLB with UVs, saved automatically to ComfyUI/output/sloyd/. Assets like this are genuinely useful as static props, background filler, blockouts, and 3D-print candidates. Be clear-eyed about the ceiling: the long-standing complaint about every model in this space is topology, not surface quality. Sloyd's answer is to hand you the knobs - topology, target_face_count, texture_resolution - which is more control than most wrappers expose. Whether a given mesh can be rigged is still something you check per-asset, not something the node guarantees.
The mechanism, briefly
The node encodes the first frame of your IMAGE batch as PNG, uploads it, POSTs to /jobs/image-to-3d, then polls the job every two seconds, reporting progress in ComfyUI's progress bar. When the job succeeds it downloads jobs/{jobId}.glb into output/sloyd/ and hands you four things.
Two upload details matter in practice: oversize inputs get downscaled to a 2048px long edge before upload, and if the PNG is still over 20MB it re-encodes as JPEG. So your 8K reference is not what Sloyd sees. Only the first frame of a batch is used - batching this node compares the same image to itself.
Inputs worth touching
- image - the reference. Front-ish, plain background, single object: the usual rules for reconstruction models.
- topology -
auto,quads, ortriangles. Quads are what a 3D artist wants if the mesh has to be edited afterwards. - target_face_count - 0 lets Sloyd's pipeline choose; the ceiling is 500000 and anything above it is clamped with a warning in the log. Ask for 50k on a small prop and you get a vague blob with too many triangles.
- texture_resolution -
autothrough4k, plusnone, which gives you a geometry-only model. Handy when you plan to retexture anyway. - seed - read the tooltip. Sloyd has no seed parameter, so this does not make results reproducible. It exists purely to bust ComfyUI's cache. Leave it alone and re-running a graph costs nothing; change it and you buy a fresh generation.
- timeout_seconds - 900 by default. Polling is interruptible, so Cancel works instead of locking your queue.
Outputs and wiring
model_3d is the one you want: it's a FILE_3D_GLB that plugs straight into Preview 3D (Advanced) or Save 3D. On older ComfyUI builds that type doesn't exist and the pack falls back to emitting a path string - that's the main reason this pack asks for ComfyUI 0.3.40+. model_path is the same file as a path relative to ComfyUI/output, job_id is the raw Sloyd id, and sloyd_job is the typed handle you wire into Retexture or Split to Parts so you never copy an identifier by hand.
Install and credentials
Search Sloyd in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Sloydai/comfyui-sloyd
pip install -r comfyui-sloyd/requirements.txt
That installs exactly one package, requests. Then open Settings → Sloyd and paste a Client ID and Client Secret from the Sloyd dashboard - two values, not one key, and the secret is shown once. Sloyd is prepaid (min $12), credits are charged when a job starts and refunded if it fails. On a --listen box, skip the settings panel and use SLOYD_CLIENT_ID / SLOYD_CLIENT_SECRET env vars instead; the credential route inherits ComfyUI's (nonexistent) access control.
When it breaks
A 401 means the id and secret aren't from the same key. A 402 names the shortfall and charges nothing. A 429 means you've got five jobs running on that key - the node backs off and retries up to ten minutes, so big batches just serialise. And if you hit the timeout, note that re-running doesn't resume the old job; it starts a new one, on your credits.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Reference image. Only the first frame of a batch is used. | |
| topology | COMBO | auto | Mesh topology of the output. |
| target_face_count | INT | 00–500000 | 0 lets the Sloyd pipeline choose. Maximum 500000. |
| texture_resolution | COMBO | auto | 'none' produces a geometry-only model with no texture. |
| seed | INT | 00–4294967295 | Change this to force a fresh generation (each one costs credits). Sloyd has no seed parameter, so this does not make results reproducible; it only busts the ComfyUI cache. Left alone, re-running reuses the cached result for free, which is what lets you iterate on a downstream node like Retexture. |
| timeout_secondsopt | INT | 90060–3600 | How long to wait for the job before giving up, in seconds. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model_3d | FILE_3D_GLB | — |
| sloyd_job | SLOYD_JOB | — |
| model_path | STRING | — |
| job_id | STRING | — |