Sloyd: Retexture
Retexture — reskin a 3D model by prompt instead of re-generating it
- sloyd_job
- model_3d
- sloyd_job
- model_path
- job_id
Here's the thing about 3D generation: the silhouette is usually the part you want to keep, and the texture is the part you want to argue with. Re-rolling the whole model to fix the colour costs you a new shape. Sloyd: Retexture keeps the shape and relights it from a prompt - "glossy red ceramic glaze" instead of "grey plastic".
It's the node that makes the rest of the pack worth chaining, and it's the reason the sloyd_job output exists.
What it actually does
Sloyd's retexture endpoint takes the job id of a model you already own - it isn't a fresh generation. This node gets that id from either the sloyd_job handle wired in from an upstream Sloyd 3D node, or from a job_id string you paste by hand. If both are present, the wire wins. If neither, the node raises with a message telling you exactly that.
Then it POSTs the new prompt plus a texture resolution, polls every two seconds, and downloads the retextured GLB to ComfyUI/output/sloyd/ alongside everything else. Same geometry, new skin, saved as its own file - the original is untouched.
Inputs that matter
- prompt - up to 4096 characters. Describe material, not subject: "weathered brass with green patina", "matte black carbon fibre". The geometry is already decided, so anything about shape is wasted tokens.
- texture_resolution -
auto,128,256,512,1k,2k,4k, ornone.noneon a retexture gives you the untextured geometry back, which is a weird but legitimate way to strip a texture you don't like. - sloyd_job - the typed handle from Text to 3D, Image to 3D, Multi-Image to 3D, another Retexture, or Split to Parts. It carries the job id and the credentials that created the job, so a chained node stays on the same key with nothing to re-resolve.
- job_id - the escape hatch: paste an id of a model you own from an earlier session. Ignored when
sloyd_jobis connected. - seed - no, it isn't a seed. Sloyd has no seed parameter. Changing it busts ComfyUI's cache, which is the only way to force a new retexture; leaving it alone lets you iterate on something downstream for free.
- timeout_seconds - 900 default.
Outputs
model_3d (FILE_3D_GLB, into Preview 3D (Advanced) or Save 3D), sloyd_job - which chains onward into another retexture or into Split to Parts - model_path relative to ComfyUI/output, and job_id.
The canonical graph is one line:
Sloyd: Text to 3D ──sloyd_job──> Sloyd: Retexture ──model_3d──> Preview 3D (Advanced)
Note that the downstream node takes the retexture's job, not the original's, so chaining two retextures works - you're always retexturing the last result.
Install
Manager → search Sloyd, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Sloydai/comfyui-sloyd
pip install -r comfyui-sloyd/requirements.txt
requests is the entire dependency list. No model files, no GPU. Then Settings → Sloyd → Client ID + Client Secret from the dashboard (two values; the secret is shown once). Or set SLOYD_CLIENT_ID / SLOYD_CLIENT_SECRET if this box is reachable from anywhere but localhost.
Both nodes in the chain bill you. This is where ComfyUI's caching earns its keep: an unchanged graph replays for free, so the workflow to aim for is "generate once, then fiddle with the retexture prompt" - touching the retexture's seed is what tells ComfyUI to run it again.
Gotchas
If you wire a skybox job into this node you'll get a clear type error - the handle carries its kind (model, skybox, image) and Retexture insists on a model job. That's a feature: it's the difference between a five-second error and a mystery. The job_id path skips that check, so a hand-pasted skybox id will just fail server-side.
429s mean five jobs are already in flight on your key; the node retries with backoff rather than killing the run. A 402 names the credit shortfall and starts nothing.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | glossy red ceramic glaze | Describe the new texture. Up to 4096 characters. |
| texture_resolution | COMBO | auto | Requested output texture resolution. |
| 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. |
| sloyd_jobopt | SLOYD_JOB | Source model from an upstream Sloyd 3D node. | |
| job_idopt | STRING | Alternatively, paste a Sloyd job id of a model you own. Ignored if sloyd_job is connected. | |
| 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 | — |