Nodes/ComfyUI_HYWorld2/HYWorld2 Train 3DGS
ComfyUI Node

HYWorld2 Train 3DGS

The slow road to a beautiful splat — training 3D Gaussian Splatting

By AHEKOT·Created 4 months ago·Updated about a month ago· 74
HYWorld2 Train 3DGS
  • gs_data
  • ply_path
  • camera_poses
  • camera_intrinsics
  • train_dir
  • info
train_sampling_presetstandard
batch_size1
patch_sizeFull
max_steps8000
save_steps8000
eval_steps8000
ply_steps8000
downsample_pts_num1000000
save_plytrue
disable_videotrue
disable_viewertrue
depth_losstrue
normal_losstrue
sky_depth_from_pcdtrue
use_scale_regularizationtrue
use_mask_gaussiantrue
mask_export_stochastictrue
mask_export_anchor_protectionfalse
use_anchor_protectiontrue
do_prunefalse
prune_opacity_threshold0.010
antialiasedtrue
normalize_world_spacetrue
export_meshtrue
strategy_refine_start_iter150
strategy_refine_stop_iter750
strategy_refine_every100
strategy_refine_scale2d_stop_iter750
strategy_reset_every99990
strategy_grow_grad2d0.0001
strategy_prune_scale3d0.10
convert_ply_to_worldmirror_preview_basisfalse

Everything before this node produced geometry fast. HYWorld2 Train 3DGS is where the pack switches from feed-forward reconstruction to actual optimization - training a proper 3D Gaussian Splat over thousands of steps until the scene looks good from every angle. It's the difference between a splat that's fine in a viewer and one you'd actually ship. It's also the node that will own your GPU for a while, because 3DGS training is exactly as expensive as it sounds.

It consumes the gs_data dataset from HYWorld2 GS Data and wraps the native HY-World world_gs_trainer.py. This is the payoff of the whole gaussian half of the pack - and per the KB's framing on 3D generation, gaussian splatting is the right output when your destination is a viewer or a rendered shot of a whole scene. Keep that in mind: a splat isn't mesh geometry, so don't force it into a game engine expecting to collide with things.

How it works

The node exposes the trainer's full control surface, grouped into things you'll touch and things you won't:

  • Scheduling: max_steps (default 8000), with comma-separated save_steps, eval_steps, ply_steps strings (default "8000").
  • Data: train_sampling_preset (standard / half-pano / random-pano variants), batch_size, patch_size (Full down to 256 - patch training fits smaller VRAM), downsample_pts_num (1M default).
  • Losses & quality: depth_loss, normal_loss, sky_depth_from_pcd, use_scale_regularization, use_mask_gaussian, mask_export_stochastic, use_anchor_protection, antialiased, normalize_world_space - all default on, and they're the fork-specific features the vendored gsplat exists for. do_prune (off by default) plus prune_opacity_threshold cleans floaters when you turn it on.
  • Refinement strategy: the strategy_refine_* / strategy_reset_every / strategy_grow_grad2d / strategy_prune_scale3d cluster are the density-control schedules. Leave them unless you're chasing specific artifacts.
  • Output: save_ply, disable_video, disable_viewer (both disable defaults - good, because the built-in viewer/nerfview stack is extra VRAM you don't need in a headless run), export_mesh (exports a mesh alongside the splat - on by default).

The inputs that matter

  • gs_data - required.
  • max_steps - the big dial. 8000 is a decent default; push toward 20k+ for quality, and watch save_steps to get intermediate PLYs.
  • patch_size and downsample_pts_num - the VRAM valves when you OOM.

Outputs

  • ply_path - the trained splat. This is your deliverable.
  • train_dir, info - where everything was written and status.
  • camera_poses, camera_intrinsics - exposed for feeding a preview node.

Install & troubleshooting

Shared install: ComfyUI Manager (search HY-World 2.0) or clone + pip install -r requirements.txt + python install.py. The gsplat_maskgaussian fork built by install.py is non-negotiable here - the trainer calls gsplat.rendering.rasterization with distloss=True and gauss_masks, which upstream gsplat doesn't support. If you see an argument error around distloss or gauss_masks, you've got the wrong gsplat installed.

Also note the trainer stack adds tyro, viser, nerfview, tensorboard, torchmetrics, and friends to your environment - a chunky install. VRAM is the practical limit: on 16 GB, use patch_size below Full and keep downsample_pts_num at 1M. And remember the author's honest framing: multi-camera scene assembly is where this pipeline is still rough, so a trained splat from a clean single-image or panorama input will look far better than one stitched from awkward multi-view captures.

CategoryVNCCS/HYWorld2

Inputs (33)

NameTypeDefaultDescription
gs_dataHYWORLD2_GS_DATA
train_sampling_presetoptCOMBOstandard3 options: standard, half_pano_per_epoch, random_pano_50_per_epoch
batch_sizeoptINT11–16
patch_sizeoptCOMBOFull4 options: Full, 712, 512, 256
max_stepsoptINT80001–100000
save_stepsoptSTRING8000
eval_stepsoptSTRING8000
ply_stepsoptSTRING8000
downsample_pts_numoptINT10000001–50000000
save_plyoptBOOLEANtrue
disable_videooptBOOLEANtrue
disable_vieweroptBOOLEANtrue
depth_lossoptBOOLEANtrue
normal_lossoptBOOLEANtrue
sky_depth_from_pcdoptBOOLEANtrue
use_scale_regularizationoptBOOLEANtrue
use_mask_gaussianoptBOOLEANtrue
mask_export_stochasticoptBOOLEANtrue
mask_export_anchor_protectionoptBOOLEANfalse
use_anchor_protectionoptBOOLEANtrue
do_pruneoptBOOLEANfalse
prune_opacity_thresholdoptFLOAT0.0100–1
antialiasedoptBOOLEANtrue
normalize_world_spaceoptBOOLEANtrue
export_meshoptBOOLEANtrue
strategy_refine_start_iteroptINT1500–100000
strategy_refine_stop_iteroptINT7500–100000
strategy_refine_everyoptINT1001–100000
strategy_refine_scale2d_stop_iteroptINT7500–100000
strategy_reset_everyoptINT999901–1000000
strategy_grow_grad2doptFLOAT0.00010–1
strategy_prune_scale3doptFLOAT0.100–100
convert_ply_to_worldmirror_preview_basisoptBOOLEANfalse

Outputs (5)

NameTypeDescription
ply_pathSTRING
camera_posesTENSOR
camera_intrinsicsTENSOR
train_dirSTRING
infoSTRING