ComfyUI Node

Sloyd: Retexture

Retexture — reskin a 3D model by prompt instead of re-generating it

By Sloydai·Created 22 days ago·Updated 21 days ago· 1
Sloyd: Retexture
  • sloyd_job
  • model_3d
  • sloyd_job
  • model_path
  • job_id
◄promptglossy red ceramic glaze►
◄texture_resolutionauto►
◄seed0►
◄job_id►
◄timeout_seconds900►

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, or none. none on 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_job is 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.

CategorySloyd/3D

Inputs (6)

NameTypeDefaultDescription
promptSTRINGglossy red ceramic glazeDescribe the new texture. Up to 4096 characters.
texture_resolutionCOMBOautoRequested output texture resolution.
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.
sloyd_joboptSLOYD_JOBSource model from an upstream Sloyd 3D node.
job_idoptSTRINGAlternatively, paste a Sloyd job id of a model you own. Ignored if sloyd_job is connected.
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—