ComfyUI Node

Sloyd: Image to 3D

Image to 3D turns one picture into a GLB — no CUDA wheels, no 3D-Pack

By Sloydai·Created 22 days ago·Updated 21 days ago· 1
Sloyd: Image to 3D
  • image
  • model_3d
  • sloyd_job
  • model_path
  • job_id
◄topologyauto►
◄target_face_count0►
◄texture_resolutionauto►
◄seed0►
◄timeout_seconds900►

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, or triangles. 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 - auto through 4k, plus none, 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.

CategorySloyd/3D

Inputs (6)

NameTypeDefaultDescription
imageIMAGEReference image. Only the first frame of a batch is used.
topologyCOMBOautoMesh topology of the output.
target_face_countINT00–5000000 lets the Sloyd pipeline choose. Maximum 500000.
texture_resolutionCOMBOauto'none' produces a geometry-only model with no texture.
seedINT00–4294967295Change 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_secondsoptINT90060–3600How long to wait for the job before giving up, in seconds.

Outputs (4)

NameTypeDescription
model_3dFILE_3D_GLB—
sloyd_jobSLOYD_JOB—
model_pathSTRING—
job_idSTRING—