Nodes/ComfyTV/3D Model Stage
ComfyUI Node

3D Model Stage

Turn a prompt (or a photo) into an orbitable GLB without leaving the canvas

By jtydhr88·Created 3 months ago·Updated about 16 hours ago· 725
3D Model Stage
  • texts
  • images
  • models
  • model
  • image
force_run_token0
project_id
parent_output_id0
workflowHunyuan3D 2.1
main_prompt
captured_image
custom_params{}

The 3D Model Stage is ComfyTV's text/image-to-3D entry point: you give it a prompt, optionally some reference text, images, or an existing model, pick a backend workflow, and hit ▶ Run. What comes back is a COMFYTV_MODEL you can orbit in the node's own 3D preview, plus a flat snapshot image. It's the "generate" end of the pack's 3D story - the other end is the Load 3D Model stage (feeding it), and Scene3D / Material stages (consuming it).

The mechanism is worth understanding, because it's different from a ComfyUI checkpoint loader. ComfyTV wraps an actual ComfyUI generation workflow - by default Hunyuan3D 2.1 - and requires that workflow to end in a SaveGLB (or compatible) node. You click Run, the backend runs that real GPU workflow against your local model, and the GLB snapshot comes back into the canvas. In other words: it's a workflow runner with a 3D viewport bolted on, not a bespoke 3D generator. If you've got a different 3D model in mind, you can swap the workflow in the dropdown and ComfyTV will happily drive that instead.

What you set

  • workflow - the backend generation workflow, default Hunyuan3D 2.1. This is the one input that decides which model runs and what kind of output you get.
  • main_prompt - your intent for the stage. Upstream text inputs are treated as extra context, so the prompt is where you say "a low-poly knight" and the references are where you show it what you mean.
  • texts, images, models - autogrow slots for reference material. Reference images make this an image-to-3D stage; a reference model nudges generation toward an existing shape.
  • captured_image and custom_params - internal. captured_image is written by the 3D preview and becomes the image output; leave both alone.

Two outputs come off this node: model (COMFYTV_MODEL, the GLB) and image (COMFYTV_IMAGE, the viewport snapshot). The snapshot is genuinely useful - it's a cheap thumbnail for storyboards, or a feed for image-based follow-ups, and you get it for free with the model.

The model files you'll need

The shipped workflows reference real model files under ComfyUI/models/:

  • Hunyuan3D 2.1checkpoints/hunyuan_3d_v2.1.safetensors (from Comfy-Org's repackage on Hugging Face)
  • MoGe-2 Meshgeometry_estimation/moge_2_vitl_normal_fp16.safetensors
  • TripoSplat Gaussian → a whole stack (diffusion_models/, clip_vision/, vae/, background_removal/)

None of these download automatically - ComfyTV won't babysit your model folders. The pack's docs/models.md lists exact paths and URLs; read it before your first Run, because "nothing happened" on a 3D stage is almost always "the model isn't there."

Install and gotchas

Install is the pack-wide one-liner:

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Then restart ComfyUI (fully - on Desktop/macOS, install into the running instance's custom_nodes by absolute path and verify __init__.py is at the top level). ComfyUI Manager works too, search "ComfyTV". No extra Python dependencies.

Two things to keep in your head. First, 3D generation is heavy: Hunyuan3D 2.1 on a modest GPU is a wait, and the preview snapshot only captures what the viewport was showing, so aim the camera before you expect a good thumbnail. Second, media flows as project snapshots, not native tensors - to talk to native ComfyUI 3D nodes, put a Bridge between them.

CategoryComfyTV/Generate

Inputs (10)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
workflowCOMBOHunyuan3D 2.1Which backend 3D-generation workflow to invoke when Run is clicked. The workflow must end in a SaveGLB (or compatible) node.
main_promptSTRINGPrimary prompt — the user's intent for this stage. Upstream text inputs are treated as additional context.
textsCOMFY_AUTOGROW_V3
imagesCOMFY_AUTOGROW_V3
modelsCOMFY_AUTOGROW_V3
captured_imageSTRINGInternal — /view? URL of the latest preview-viewport snapshot. Written by the 3D preview in the node body; becomes the `image` output.
custom_paramsSTRING{}Internal — JSON of user-defined parameter attachments/values for this node.

Outputs (2)

NameTypeDescription
modelCOMFYTV_MODEL
imageCOMFYTV_IMAGE