3D_TrainConfigPipe
Turn that big config blob into regular ComfyUI wires
- train_config
- train_config
- ckpt
- clip
- vae
- sampler_name
- scheduler
- positive
- negative
- seed
- txt2img_steps
- txt2img_cfg
- txt2img_denoise
- inpaint_steps
- inpaint_cfg
- inpaint_denoise
- depth_strength
- depth_controlnet
- inpaint_strength
- inpaint_controlnet
- cam_front
- cam_back
- cam_left
- cam_right
- cam_top
- cam_bottom
- latent
3D_TrainConfig packages ~27 settings into one opaque TRAINCONFIG object - which is convenient until you realize the actual sampling is done by ordinary ComfyUI KSampler nodes that don't speak TRAINCONFIG. 3D_TrainConfigPipe is the adapter that unpacks the config back into plain wires: MODEL, CLIP, VAE, conditioning, sampler name, steps, and a latent, all ready to plug into stock nodes. It's the bridge between the pack's custom world and the ComfyUI you already know.
What it does
It takes one TRAINCONFIG in and splats it out across 26 outputs - the model, clip, and VAE you originally wired into 3D_TrainConfig; the sampler and scheduler names; the positive/negative conditioning; every steps/CFG/denoise number for both sampling stages; both ControlNets with their strengths; the six camera indices; and one LATENT. The latent is the interesting bit: the node synthesizes a zero latent sized grid_size × 2 wide and grid_size tall (compressed by 8 for the SD VAE), i.e. 1024×512 at the default 512 grid - the exact shape the 2-view stitched images occupy.
The bundled workflow runs several of these pipes off one config. Each pipe's outputs feed its own KSampler chain: ckpt → model, sampler_name/scheduler/steps/seed → the sampler's widgets, latent → the sampler's input, and the ControlNets → ControlNetApplyAdvanced nodes for the depth, inpaint, and UV stages. That's why you'll see 3D_TrainConfigPipe scattered through the graph - one per sampling stage, all driven by the same single config.
Inputs and outputs that matter
Single input: train_config (TRAINCONFIG). The 26 outputs are all the config's contents unrolled; the ones you'll actually touch:
- latent - the synthesized empty latent (1024×512 at default grid size). Feeds KSampler's
latentinput for the front/back stage. - sampler_name / scheduler - wire into KSampler's widgets so your sample settings match what the config declared.
- ckpt / clip / vae - for KSampler, CLIPTextEncode, and VAEDecode.
- depth_controlnet / inpaint_controlnet - into the ControlNetApplyAdvanced nodes for each stage.
- cam_front … cam_bottom - the camera indices, for the inpaint/projection nodes that take them.
Installing
Same as every node in this pack: Manager search "ComfyUI-Paint3D-Nodes", or clone and install:
cd ComfyUI/custom_nodes
git clone https://github.com/N3rd00d/ComfyUI-Paint3D-Nodes
pip install -r requirements.txt
pip install kaolin==0.15.0 -f https://nvidia-kaolin.s3.us-east-2.amazonaws.com/torch-2.1.0_cu121.html
Gotchas
Since the pipe emits a zero latent, don't feed that latent into an image-to-image or denoise-below-1.0 workflow expecting the model's content to come through - it's a blank canvas sized for the 2-view grid, not a real image latent. And if you change a setting in 3D_TrainConfig, every pipe fed by it updates automatically (that's the point), so a "why did all my stages change" moment usually traces back to one config edit. It's a mechanical node, but it's the one that makes the whole graph legible - and for a pack this niche, legibility is worth a lot.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| train_config | TRAINCONFIG | — |
Outputs (26)
| Name | Type | Description |
|---|---|---|
| train_config | TRAINCONFIG | — |
| ckpt | MODEL | — |
| clip | CLIP | — |
| vae | VAE | — |
| sampler_name | euler,euler_cfg_pp,euler_ancestral,euler_ancestral_cfg_pp,heun,heunpp2,dpm_2,dpm_2_ancestral,lms,dpm_fast,dpm_adaptive,dpmpp_2s_ancestral,dpmpp_2s_ancestral_cfg_pp,dpmpp_sde,dpmpp_sde_gpu,dpmpp_2m,dpmpp_2m_cfg_pp,dpmpp_2m_sde,dpmpp_2m_sde_gpu,dpmpp_3m_sde,dpmpp_3m_sde_gpu,ddpm,lcm,ipndm,ipndm_v,deis,res_multistep,res_multistep_cfg_pp,res_multistep_ancestral,res_multistep_ancestral_cfg_pp,gradient_estimation,ddim,uni_pc,uni_pc_bh2 | — |
| scheduler | normal,karras,exponential,sgm_uniform,simple,ddim_uniform,beta,linear_quadratic,kl_optimal | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| seed | INT | — |
| txt2img_steps | INT | — |
| txt2img_cfg | FLOAT | — |
| txt2img_denoise | FLOAT | — |
| inpaint_steps | INT | — |
| inpaint_cfg | FLOAT | — |
| inpaint_denoise | FLOAT | — |
| depth_strength | FLOAT | — |
| depth_controlnet | CONTROL_NET | — |
| inpaint_strength | FLOAT | — |
| inpaint_controlnet | CONTROL_NET | — |
| cam_front | INT | — |
| cam_back | INT | — |
| cam_left | INT | — |
| cam_right | INT | — |
| cam_top | INT | — |
| cam_bottom | INT | — |
| latent | LATENT | — |