π₯ PLY Scene Renderer
π₯ Render your saved splat from any camera angle
- views
- camera_poses
- camera_intrinsics
Once you've reconstructed a scene and saved it as a Gaussian splat PLY, what do you do with it? Render it from new angles. That's the whole job of VNCCS_PLYSceneRenderer: it takes a saved .ply file and produces a set of images from cameras arranged around the scene, plus the camera poses and intrinsics that describe those views.
The neat part is the second-order use. The rendered views aren't just for looking at - they're the input to the pack's splat-patching / repair nodes and the WorldGen pipeline. Render a scene from angles the model never saw, and you've got a way to check for holes, then feed those views through an edit model to fill them. It's the "scene restoration" workflow the node docstring mentions.
Inputs
Only one required: ply_path - the path to a Gaussian PLY, typically the output of VNCCS_SavePLY. The optional ones do the real work:
coverage_mode- the big one.minimal,balanced,ideal,testing,camera_control. This selects how many cameras and how they're arranged.balancedis a good default;idealtargets >90% scene coverage (more views, slower);testingis for quick smoke tests;camera_controlswitches to your own camera definitions.width/height- render resolution, 256β2048, default 1024.fov- field of view in degrees (30β120, default 90).use_gsplat- render with the gsplat rasterizer when available; if the fork isn't built, it falls back to a slower path.seed- camera placement seed, so you can get the same orbit twice.
Outputs: views (a list of IMAGEs - note this one is an actual list, so downstream list-aware nodes are happy), plus camera_poses and camera_intrinsics tensors that match the views, ready to plug into anything that expects cameras.
Gotchas
Rendering a huge splat is slow and VRAM-hungry; if it dies, try smaller width/height first, and confirm use_gsplat is actually resolving to the vendored fork (this pack must be the only gsplat installed). The camera files are .json-adjacent structures - if you feed the camera_poses elsewhere, keep them paired with the matching intrinsics, they're useless alone.
Install
Standard for this pack: ComfyUI Manager β search HY-World 2.0, or clone + install:
cd ComfyUI/custom_nodes
git clone https://github.com/AHEKOT/ComfyUI_HYWorld2
cd ComfyUI_HYWorld2
pip install -r requirements.txt
python install.py
install.py compiles the vendored gsplat_maskgaussian CUDA fork under the gsplat name - don't install upstream gsplat or this node's "faster/better rendering" silently downgrades (or errors).
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| ply_path | STRING | Path to Gaussian PLY file from SavePLY node | |
| coverage_modeopt | COMBO | balanced | 5 options: minimal, balanced, ideal, testing, camera_control |
| widthopt | INT | 1024256β2048 | β |
| heightopt | INT | 1024256β2048 | β |
| fovopt | FLOAT | 9030β120 | β |
| use_gsplatopt | BOOLEAN | true | Use official gsplat library for faster/better rendering if available. |
| seedopt | INT | 00β4294967295 | β |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| views | IMAGE | β |
| camera_poses | TENSOR | β |
| camera_intrinsics | TENSOR | β |