Nodes/IF_Trellis/Trellis Image to 3D 🖼️➡️🎲
ComfyUI Node Runs on cloud

Trellis Image to 3D 🖼️➡️🎲

The Node That Turns Flat Images Into 3D Models

By if-ai·Created 2 years ago·Updated about a year ago· 451
Trellis Image to 3D 🖼️➡️🎲
  • model
  • images
  • masks
  • model_file
  • video_path
  • texture_image
modesingle
seed0
ss_guidance_strength7.5
ss_sampling_steps12
slat_guidance_strength3.0
slat_sampling_steps12
mesh_simplify0.95
texture_size1024
texture_modefast
fps15
multimodestochastic
project_nametrellis_output
save_glbtrue
render_videofalse
save_gaussianfalse
save_texturefalse
save_wireframefalse

You hand this node a photo of a thing, and it hands you a 3D model you can spin, export as a .glb, and drop straight into Blender, Unity, or your game. No multi-view renders, no photogrammetry rig - one image in, mesh out. It's the payoff node of the IF_Trellis pack. The checkpoint loader is the toll booth; this is the ride.

Under the hood it's Microsoft Research's TRELLIS (arXiv 2412.01506), wrapped into ComfyUI by ImpactFrames-YT. TRELLIS's trick is its SLAT representation - a "structured latent" that can be decoded into whatever 3D format you want: a radiance field, 3D gaussians, or a mesh. The node runs the whole pipeline in two rectified-flow passes. First a sparse-structure sampler lays down a coarse voxel skeleton; then the SLAT sampler fills in geometry and appearance. What comes out is decoded to both a gaussian and a mesh, which are baked into the .glb you save.

That's why the sampling inputs come in pairs. The ss_guidance_strength / ss_sampling_steps pair (defaults 7.5 and 12) controls the structure pass; slat_guidance_strength / slat_sampling_steps (defaults 3 and 12) control the latent pass. The defaults are genuinely sane - before you touch them, try just changing seed to get variants. Only reach for more steps when geometry looks blobby or detail is mushy.

The inputs a beginner actually sets:

  • mode - single for one image, multi if you feed several reference angles of the same object. Multi is where TRELLIS shines: back and side views fix the "mushroom on legs" failure where the model never knows what's behind the object. multimode (stochastic vs multidiffusion) only matters in multi mode.
  • images (and optional masks) - the source picture. The pipeline preprocesses it, and that's where the rembg dependency earns its keep: it cuts the subject out. A clean subject on a simple background gives you a much better mesh than a cluttered scene.
  • texture_mode - blank, fast, or opt. opt bakes a higher-quality texture with fewer visible seams, at the cost of time. Start on fast; switch to opt when the seam work bothers you.
  • mesh_simplify - a simplification ratio, so the tooltip is backwards-ish: lower means more polygons, 1.0 means aggressive simplification. Keep 0.95 as a starting point; only drop it when you need dense geometry for a hero asset.
  • save_glb is on by default and is the point. render_video gives you a rotating preview .mp4 (the fps input controls smoothness), save_gaussian drops the .ply, and save_texture / save_wireframe export extra maps. The wireframe map is oddly useful as a retopo reference.

The node is an output node, so it returns three things: model_file (a path to the .glb), video_path (path to the preview), and texture_image (the baked texture as a ComfyUI IMAGE). Files land in ComfyUI/output/<project_name>/.

Install is the real wall, and it's shared across the whole pack: you need the --recurse-submodules clone, a micromamba env, Visual Studio Build Tools on Windows, CUDA 12.4, and a bunch of compiled extensions (nvdiffrast, diffoctreerast, kaolin, spconv, SageAttention). The README says it plainly: not tested with the portable ComfyUI embedded Python. You'll also want an NVIDIA card with 8GB+ VRAM. If that all sounds like a weekend project - it is. The first run also quietly downloads the TRELLIS-image-large model (several GB) and a DINOv2 encoder, so don't panic when nothing happens for a while.

Where people get burned: a bad cutout. If rembg fumbles the background, the mesh inherits the mistake - fix the source image first. And if the whole install feels like too much, know that a lighter TRELLIS2 wrapper with prebuilt wheels and PBR support exists by now; this pack is the original, and the original has opinions about your environment.

CategoryImpactFrames💥🎞️/Trellis

Inputs (20)

NameTypeDefaultDescription
modelTRELLIS_MODEL
modeCOMBOsingleMode. single is a single image. with multi you can provide multiple reference angles for the 3D model
imagesIMAGE
seedINT00–2147483647
ss_guidance_strengthFLOAT7.50–12
ss_sampling_stepsINT121–100
slat_guidance_strengthFLOAT3.00–12
slat_sampling_stepsINT121–100
mesh_simplifyFLOAT0.950.9–1Simplify the mesh. the lower the value more polygons the mesh will have
texture_sizeINT1024512–2048Texture size. the higher the value the more detailed the texture will be
texture_modeCOMBOfastTexture mode. blank is no texture. fast is a fast texture. opt is a high quality texture
fpsINT151–60FPS. the higher the value the smoother the video will be
multimodeCOMBOstochastic2 options: stochastic, multidiffusion
project_nameSTRINGtrellis_output
save_glbBOOLEANtrueSave the GLB file this is the 3D model
render_videoBOOLEANfalseRender a video
save_gaussianBOOLEANfalseSave the Gaussian file this is a ply file of the 3D model
save_textureBOOLEANfalseSave the texture file
save_wireframeBOOLEANfalseSave the wireframe file
masksoptMASK

Outputs (3)

NameTypeDescription
model_fileSTRING
video_pathSTRING
texture_imageIMAGE