Nodes/ComfyUI-Paint3D-Nodes/3D_TrainConfigPipe
ComfyUI Node

3D_TrainConfigPipe

Turn that big config blob into regular ComfyUI wires

By N3rd00d·Created 2 years ago·Updated 2 years ago· 77
3D_TrainConfigPipe
  • 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 latent input 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.

CategoryPaint3D

Inputs (1)

NameTypeDefaultDescription
train_configTRAINCONFIG

Outputs (26)

NameTypeDescription
train_configTRAINCONFIG
ckptMODEL
clipCLIP
vaeVAE
sampler_nameeuler,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
schedulernormal,karras,exponential,sgm_uniform,simple,ddim_uniform,beta,linear_quadratic,kl_optimal
positiveCONDITIONING
negativeCONDITIONING
seedINT
txt2img_stepsINT
txt2img_cfgFLOAT
txt2img_denoiseFLOAT
inpaint_stepsINT
inpaint_cfgFLOAT
inpaint_denoiseFLOAT
depth_strengthFLOAT
depth_controlnetCONTROL_NET
inpaint_strengthFLOAT
inpaint_controlnetCONTROL_NET
cam_frontINT
cam_backINT
cam_leftINT
cam_rightINT
cam_topINT
cam_bottomINT
latentLATENT