Nodes/ComfyUI_HYWorld2/WorldGen Build GS Data From WorldMirror
ComfyUI Node

WorldGen Build GS Data From WorldMirror

Assemble a native 3DGS training dataset from your reconstruction

By AHEKOT·Created 4 months ago·Updated about a month ago· 74
WorldGen Build GS Data From WorldMirror
  • ply_data
  • images
  • camera_poses
  • camera_intrinsics
  • depth_maps
  • normal_maps
  • raw_splats
  • gs_data_dir
  • info
workspace_dir
out_namegs_data
camera_bundlemodel_predicted_when_input_zero
points_max3000000
write_normalstrue
deep_loggingfalse

WorldMirror's splats are feed-forward - fast, but rough. The proper fix is to take your reconstruction's images and cameras and train a real Gaussian splatting scene, the way the 3DGS literature does it. VNCCS_WorldGenBuildGSDataFromWorldMirror is the bridge: it takes your ply_data, images, and cameras, and writes out a gs_data folder in the standard native-3DGS trainer format - images, aligned point cloud, camera poses and intrinsics - that the pack's trainer (and the vendored gsplat fork) can consume.

Required inputs: ply_data, images, camera_poses, camera_intrinsics - all straight off a reconstruction node. Optional: a workspace_dir from WorldGenExportBankFromPLY (omit it and a default workspace is created), plus depth_maps, normal_maps, and raw_splats if you have them.

The inputs that matter

  • out_name (default gs_data) - the subfolder inside the workspace where the trainer dataset lands. Connect this node's gs_data_dir output to whatever trainer node follows.
  • camera_bundle - the honest knob. Default is model_predicted_when_input_zero: when your connected cameras have zero translation (e.g. you only fed the model a single view or rotation-only panoramas), it swaps in WorldMirror's predicted cameras/geometry instead. The tooltip says why in one line: "Native 3DGS needs camera baseline; rotation-only cameras collapse depth." If your source cameras genuinely have translation, set it to connected_inputs.
  • points_max (default 3M) - cap on the point cloud written for the trainer. Lower = smaller/faster, less detail.
  • write_normals (default true) - writes normal data if available; some trainers use it.
  • deep_logging - verbose diagnostics to the console.

Outputs: gs_data_dir (a string path - wire it onward) and info.

Where this fits

This is the "do it properly" path: WorldMirror gives you a rough splat, this node packages the raw material for a native 3DGS refinement that actually converges. The KB's lesson applies directly - a trained 3DGS scene is the right deliverable for an explorable scene, and forcing it to a mesh throws the quality away. Expect the training step itself to be slow and VRAM-hungry (it's a real optimization loop); that's the price of clean geometry, and the fork-only rasterization arguments (distloss, gauss_masks) are exactly why this pack insists its vendored gsplat be the only one installed.

Install

Pack standard - Manager → HY-World 2.0, or:

cd ComfyUI/custom_nodes
git clone https://github.com/AHEKOT/ComfyUI_HYWorld2
cd ComfyUI_HYWorld2
pip install -r requirements.txt
python install.py

The install.py step (build the vendored gsplat_maskgaussian CUDA fork) is non-negotiable here - this node's whole downstream is gsplat.

CategoryVNCCS/WorldGen

Inputs (13)

NameTypeDefaultDescription
ply_dataPLY_DATA
imagesIMAGE
camera_posesTENSOR
camera_intrinsicsTENSOR
workspace_diroptSTRINGOptional workspace_dir from WorldGen Export Generation Bank. If omitted, a default output workspace is created.
depth_mapsoptIMAGE
normal_mapsoptIMAGE
raw_splatsoptVNCCS_SPLAT
out_nameoptSTRINGgs_dataSubfolder inside workspace_dir where the trainer dataset is written.
camera_bundleoptCOMBOmodel_predicted_when_input_zeroUse WorldMirror predicted cameras/geometry when connected cameras have zero translation. Native 3DGS needs camera baseline; rotation-only cameras collapse depth.
points_maxoptINT30000000–50000000
write_normalsoptBOOLEANtrue
deep_loggingoptBOOLEANfalse

Outputs (2)

NameTypeDescription
gs_data_dirSTRING
infoSTRING