ComfyUI Node

TRELLIS.2

Image to a real, textured 3D mesh — without the 3D stack

By Runware·Created 2 years ago·Updated about a month ago· 140
TRELLIS.2
  • image
  • file_path
seed0
numberResults1
meshFile
settings.alphaModeOPAQUE
settings.decimationTarget500000
settings.dracoCompression.enabledfalse
settings.meshCluster.globalIterations1
settings.shapeSlat.guidanceIntervalStart0.60
settings.sparseStructure.guidanceIntervalStart0.60
settings.texSlat.guidanceIntervalStart0.60
settings.shapeSlat.guidanceIntervalEnd1.00
settings.sparseStructure.guidanceIntervalEnd1.00
settings.texSlat.guidanceIntervalEnd0.90
settings.shapeSlat.guidanceRescale0.50
settings.sparseStructure.guidanceRescale0.70
settings.texSlat.guidanceRescale0.00
settings.shapeSlat.guidanceStrength7.50
settings.sparseStructure.guidanceStrength7.50
settings.texSlat.guidanceStrength1.00
settings.dracoCompression.level7
settings.dracoCompression.quantizationNormal14
settings.dracoCompression.quantizationPosition16
settings.dracoCompression.quantizationTexCoord14
settings.meshCluster.refineIterations0
settings.remeshtrue
settings.remeshBand1.00
settings.remeshProject0.00
settings.shapeSlat.rescaleT3.00
settings.sparseStructure.rescaleT5.00
settings.texSlat.rescaleT3.00
settings.resolution1024
settings.meshCluster.smoothStrength1
settings.shapeSlat.steps12
settings.sparseStructure.steps12
settings.texSlat.steps12
settings.textureFormatWEBP
settings.textureSize2048
settings.meshCluster.thresholdConeHalfAngleRad1.57
ttlfalse
ttl_value60
outputFormatGLB

TRELLIS is Microsoft's 3D generation line, and TRELLIS.2 is the newest generation: take a single image, get back a textured, physically-plausible 3D mesh. Locally, that means downloading a multi-gigabyte model, satisfying a pile of Python dependencies, and waiting minutes on a card with serious VRAM - which is why most ComfyUI users never get past the idea. This node runs TRELLIS.2 on Runware's cloud and hands you back a finished .glb file saved to your output folder. If you've ever wanted "turn this photo of an object into a 3D model I can open," this is the lowest-friction path there is.

The image-to-mesh input is required - this node is the image-conditioned path (unlike Hunyuan 3D in the same pack, which also does pure text-to-3D). You give it an image, it gives you geometry, materials, and UVs in one shot.

How it works

It sends a 3dInference request to Runware, which returns a GLB. The node downloads it (named runware_<random>.glb) into your ComfyUI output folder and outputs a STRING file_path. There's a lot of hidden machinery under TRELLIS.2 - it generates sparse structure, then refines shape and texture in separate stages - and the widget list here is basically the exposed knobs for that pipeline. Most of them you will never touch, which is fine; the defaults are sensible.

The inputs that actually matter

  • image (required) - the reference. One clear, well-lit shot of the object you want. The cleaner the input, the better the mesh; busy backgrounds make it guess.
  • meshFile - the sneaky good one. It takes a UUID or URL of an existing 3D model and re-textures it using your reference image, skipping geometry generation. If you already have a mesh and want new textures from a photo, this is a genuinely useful second feature hiding in the widget list.
  • settings.geometryOnly - off by default; turns it on to skip texturing and get raw geometry. Good for blockout or if you'll re-texture later.
  • settings.resolution - 512 / 1024 / 1536 voxel grid for generation. Higher = finer geometry and slower. 1024 is a reasonable default; drop to 512 for quick iterations.
  • settings.decimationTarget - target polygon count (5000–1,000,000, default 500,000). Lower it for a lighter model - a game engine will thank you - at the cost of geometric detail.
  • settings.dracoCompression.enabled - compresses the output GLB geometry with Draco (plus level, quantizationPosition, etc.). Flip this on if file size matters (web delivery, sharing); leave off if you'll keep editing the mesh.
  • settings.remesh - on by default; produces cleaner topology. The remeshBand / remeshProject sub-knobs are for tuning that pass. Generally: leave remesh on unless you're chasing every last polygon.
  • settings.textureSize - 1024–4096 texture map resolution (default 2048). 4096 if the texture detail matters; 1024 for quick versions.
  • settings.textureFormat - WEBP (default) or PNG. WEBP is smaller; PNG if you need lossless.
  • settings.steps and the guidanceStrength / guidanceIntervalStart / rescaleT trio for shapeSlat, sparseStructure, and texSlat - the three sub-stages each have their own denoise steps and guidance. This is deep-end tuning; most people should leave these alone. steps at 12 each is the default and fine.
  • seed and numberResults (1–4) - take a couple of seeded variations; 3D quality varies a lot between runs and picking the best is the normal workflow.

The output is file_path - a path string to the saved .glb.

Installing

cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt

Or ComfyUI Manager → search Runware → install → restart. API key via Settings, RUNWARE_API_KEY, or runware auth login. No local models - that's the point.

Honest gotchas

3D generation is the slowest thing in this pack; a cloud TRELLIS.2 run is not a quick job, and multi-stage pipelines mean the "Rapid"-style speedups don't apply. Budget time and expect the run info to show a real cost. Second, the output is a file path, not an image or video tensor - you'll find the .glb in your output folder and open it in any mesh viewer or Blender. And treat the image input seriously: a cluttered or low-contrast reference will give you a lumpy result, and no amount of settings tuning fixes a bad input.

CategoryRunware/3D/microsoft

Inputs (42)

NameTypeDefaultDescription
imageIMAGE
seedoptINT00–9223372036854776000Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range.
numberResultsoptINT11–4Number of results to generate. Each result uses a different seed, producing variations of the same parameters.
meshFileoptSTRING3D model to re-texture (UUID or URL). Skips geometry generation and applies new textures using the reference image.
settings.alphaModeoptCOMBOOPAQUEMaterial alpha mode for the output mesh.
settings.decimationTargetoptINT5000005000–1000000Target polygon count for mesh simplification. Lower values produce lighter models at the cost of geometric detail.
settings.dracoCompression.enabledoptBOOLEANfalseCompress the output GLB geometry with Draco.
settings.meshCluster.globalIterationsoptINT10–64Global iterations for chart clustering.
settings.shapeSlat.guidanceIntervalStartoptFLOAT0.600–1Start of the sampling schedule fraction over which guidance is applied.
settings.sparseStructure.guidanceIntervalStartoptFLOAT0.600–1Start of the sampling schedule fraction over which guidance is applied.
settings.texSlat.guidanceIntervalStartoptFLOAT0.600–1Start of the sampling schedule fraction over which guidance is applied.
settings.shapeSlat.guidanceIntervalEndoptFLOAT1.000–1End of the sampling schedule fraction over which guidance is applied.
settings.sparseStructure.guidanceIntervalEndoptFLOAT1.000–1End of the sampling schedule fraction over which guidance is applied.
settings.texSlat.guidanceIntervalEndoptFLOAT0.900–1End of the sampling schedule fraction over which guidance is applied.
settings.shapeSlat.guidanceRescaleoptFLOAT0.500–1Dampens oversaturation from high guidance values. Lower values apply more correction.
settings.sparseStructure.guidanceRescaleoptFLOAT0.700–1Dampens oversaturation from high guidance values. Lower values apply more correction.
settings.texSlat.guidanceRescaleoptFLOAT0.000–1Dampens oversaturation from high guidance values. Lower values apply more correction.
settings.shapeSlat.guidanceStrengthoptFLOAT7.501–10How closely the output follows the input image. Higher values enforce stricter adherence to the visible geometry.
settings.sparseStructure.guidanceStrengthoptFLOAT7.501–10How closely the output follows the input image. Higher values enforce stricter adherence to the visible geometry.
settings.texSlat.guidanceStrengthoptFLOAT1.001–10How closely the output follows the input image. Higher values enforce stricter adherence to the visible geometry.
settings.dracoCompression.leveloptINT70–10Encoding effort for Draco compression. Higher values reduce file size further but encode more slowly.
settings.dracoCompression.quantizationNormaloptINT148–30Quantization bits for vertex normals. Higher values produce smoother shading at the cost of file size.
settings.dracoCompression.quantizationPositionoptINT168–30Quantization bits for vertex positions. Higher values preserve more positional detail at the cost of file size.
settings.dracoCompression.quantizationTexCoordoptINT148–30Quantization bits for texture coordinates. Higher values keep textures sharper at UV seams at the cost of file size.
settings.meshCluster.refineIterationsoptINT00–64Local refinement iterations for chart clustering.
settings.remeshoptBOOLEANtrueWhether to remesh the output for cleaner topology.
settings.remeshBandoptFLOAT1.00Narrow-band width in voxels used for dual-contouring remeshing.
settings.remeshProjectoptFLOAT0.00Projection factor for snapping remeshed vertices back to the original surface.
settings.shapeSlat.rescaleToptFLOAT3.001–6Timestep rescaling factor for the sampling schedule. Controls how guidance strength is distributed across steps.
settings.sparseStructure.rescaleToptFLOAT5.001–6Timestep rescaling factor for the sampling schedule. Controls how guidance strength is distributed across steps.
settings.texSlat.rescaleToptFLOAT3.001–6Timestep rescaling factor for the sampling schedule. Controls how guidance strength is distributed across steps.
settings.resolutionoptCOMBO1024Voxel grid resolution for 3D generation. Higher values capture finer geometric detail.
settings.meshCluster.smoothStrengthoptINT10–10Smoothing strength applied during chart clustering.
settings.shapeSlat.stepsoptINT121–50Number of denoising steps. More steps improve quality but increase generation time.
settings.sparseStructure.stepsoptINT121–50Number of denoising steps. More steps improve quality but increase generation time.
settings.texSlat.stepsoptINT121–50Number of denoising steps. More steps improve quality but increase generation time.
settings.textureFormatoptCOMBOWEBPTexture format for the output mesh.
settings.textureSizeoptINT20481024–4096Resolution of the output texture map in pixels. Higher values produce finer surface detail.
settings.meshCluster.thresholdConeHalfAngleRadoptFLOAT1.570–3.141592653589793Cone half-angle threshold in radians used during UV chart clustering.
ttloptBOOLEANfalseEnable to set ttl. Off uses the model's default.
ttl_valueoptINT60Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.
outputFormatoptCOMBOGLBFile format for the generated 3D model.

Outputs (1)

NameTypeDescription
file_pathSTRING