Continuity Lift Stage
You Never Wire ContinuityLiftStage — It's the 3D Build's Report Card
- image
- alpha
- mesh
- base_color
- roughness
- metallic
- normal_map
- occlusion
If this node turned up in your node search, a queued workflow, or somebody's dependency list, here's the short version: you don't place it, you don't wire it, and it has no outputs. It's a reporting node the Continuity pack's Image to 3D tool drops into the graph on your behalf, six times, once per stage of the build. The pack marks every node you're not meant to place by hand as dev-only, and this is one of those.
What it's for, in context
Image-to-3D in ComfyUI has a reputation earned the hard way: it meant ComfyUI-3D-Pack, a stack of compiled CUDA extensions, and a build target pinned to one exact Python/CUDA/torch combo. Our own notes on the field put it bluntly - the install is the real barrier, not the VRAM. The workarounds tell the same story: somebody builds natten for Windows, somebody ports Pixal3D to Apple Silicon, everyone else yells at their terminal. What changed is that core now ships the Pixal3D / TRELLIS.2 pipeline as roughly thirty of its own nodes, plus a template: a canvas you rewire for your picture and read out of a preview node.
Continuity's route in is a picture, a few choices, a mesh - and the reporting along the way is all ContinuityLiftStage is. Six stages run - cutout, camera, structure, shape, texture, bake - each ending in one of these nodes.
How the mechanism actually works
Each stage node writes whatever that stage produced somewhere the browser can fetch. The cut-out goes out as an RGBA PNG, its alpha cut to match the mask the model was conditioned on. The camera stage reports a number: the field of view MoGe estimated. The structure, shape and texture stages report GLBs with a face count and byte size. The bake stage reports the five baked maps as swatches. Then it says so on the wire, under the pack's own continuity_lift key, which the tool's websocket listener reads to paint the track. Nothing else touches it.
Two quirks worth knowing. This node never caches - fingerprint_inputs returns a fresh random value every run, so a rebuild that reuses the structure and shape from ComfyUI's cache still reports those stages. A cached output node says nothing, and a silent stage looks like a hung one.
The fields that matter
stage- required, filled in by the tool: one of the six names above. The label on the track.final- required string, empty on intermediate stages. On the stage that keeps the mesh it holds the mesh's name, which becomes the.glbfilename.image+alpha- the cut-out and its mask, wired into the final stage so the mesh keeps the picture it came from.mesh- the GLB handed over by that stage.value- the field of view, only ever arriving from the camera stage. Socket-only; no widget.keep- the build's record as JSON: settings, seed, views, camera, model. The final stage merges it with what it wrote and saves it beside the mesh.base_color,roughness,metallic,normal_map,occlusion- the baked maps, as 512px swatches for the tool's drawer. The copies inside the GLB are full size.
Outputs: none - it's an output node so the executor runs it, and that's the whole story.
Where the files go: intermediates land in ComfyUI's temp folder under continuity/lift, emptied on restart, so nobody finds a drawer of voxel meshes in their output folder. Only the kept mesh goes to output/continuity/meshes/, with its papers in a .lift/ folder beside it - the cut-out, the map swatches, the JSON record - so the picker can put a mesh back on the stage with its picture at its camera.
Installing (it comes with the pack)
cd ComfyUI/custom_nodes
git clone https://github.com/roadmaus/ComfyUI-Continuity
Restart ComfyUI. Nothing to pip install - the project declares no dependencies at all, which is the point of routing through core's nodes instead of a CUDA-extension pack. The weights are on you, and the build names any that are missing: Pixal3D or TRELLIS.2 in diffusion_models, the TRELLIS.2 shape and texture VAEs, DINOv3 in clip_vision, MoGe in geometry_estimation, BiRefNet in background_removal if you're cutting the background out.
Where people get hurt
Nothing appears in the node search. You probably have this pack twice - it was renamed from ComfyUI-MiniMax-Creator, and the node ids stayed the same on purpose so old workflows keep loading. Two folders is two packs registering identical ids, which means no nodes at all, under either name. Delete one, restart, and your presets are still there in ComfyUI's user/ directory.
A stage preview is missing after a restart. Intermediates were in temp. That's by design.
Your GLB got a -2 suffix. The name was taken in output/continuity/meshes/, and it won't overwrite a mesh you already have.
Detail: High is heavy. 1536 shape resolution is slower and hungrier than the 1024 Standard build. On a smaller card, turn that back down first.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| stage | STRING | — | |
| final | STRING | — | |
| imageopt | IMAGE | — | |
| alphaopt | IMAGE | — | |
| meshopt | MESH | — | |
| valueopt | FLOAT | — | |
| keepopt | STRING | — | |
| base_coloropt | IMAGE | — | |
| roughnessopt | IMAGE | — | |
| metallicopt | IMAGE | — | |
| normal_mapopt | IMAGE | — | |
| occlusionopt | IMAGE | — |
Outputs (0)
No outputs