Nodes/ComfyUI PlyPreview/Process Gaussian PLY Enhance
ComfyUI Node

Process Gaussian PLY Enhance

Process Gaussian PLY Enhance — the node for splats that don't exist on disk yet

By XuanYu-github·Created 9 months ago·Updated 9 months ago· 6
Process Gaussian PLY Enhance
  • input_extrinsics
  • input_intrinsics
  • ply_path
  • extrinsics
  • intrinsics
ply_path
override_cameraenabled
fov_degrees50
auto_resolutionenabled
target_scale10
image_width512
image_height512
enable_opacity_filterdisabled
opacity_threshold0.10

The Load nodes in this pack read from a dropdown of known folders. That works great for splats you already have and breaks down the moment the splat is generated as part of the same workflow - you can't pick a file in a dropdown that doesn't exist when you build the graph. Process Gaussian PLY Enhance is the answer to that. It takes its ply_path over the wire from an upstream node instead of from a file picker.

The canonical upstream is SHARP Predict and the other image→3D nodes that emit a Gaussian splat path at run time. The tooltip names SHARP specifically, but anything that hands you a .ply path as a string plugs in the same way. That's what makes this node feel like part of a real 3D pipeline rather than a file browser: it's the seam between "generate a splat" and "look at it."

What it does with that path

Once the path arrives, the mechanics are the Load nodes' logic minus the folder scan:

  • Validates the resolved path exists and ends in .ply (it errors loudly - and specifically - if not).
  • override_camera (default enabled) - rebuilds the camera from your fov_degrees and auto_resolution, replacing whatever the upstream splat came with. Flip it to disabled to pass through input_extrinsics and input_intrinsics from upstream instead (they're ignored entirely while override is on).
  • auto_resolution / target_scale / image_width / image_height - the same resolution-for-intrinsics controls as the Load nodes, with the same rule: auto resolution wins unless you turn it off.
  • enable_opacity_filter + opacity_threshold (default 0.1) - sigmoid the opacity, drop everything below the threshold, and write a cleaned _opacity{threshold}.ply next to the source. Handy for generated splats that come out noisy with floating background gaussians before you save or screenshot anything.

Outputs

Same trio as the whole pack: ply_path (STRING - the original or the filtered file), extrinsics (4×4), and intrinsics (3×3). Wire ply_path into Preview Gaussian Enhance and your generated splat shows up in the viewer with no manual file wrangling.

Install & gotchas

Same pack, same install as its siblings - clone it or search "comfyui-PlyPreview" in ComfyUI Manager:

cd ComfyUI/custom_nodes
git clone https://github.com/XuanYu-github/comfyui-PlyPreview.git

Restart ComfyUI. Dependencies are numpy and plyfile, nothing compiled. This is the pack's quiet superpower and it applies here too: no CUDA, no C++ rasterizer, the rendering happens in your browser.

The failure modes are mostly about the path contract. If upstream hands you a relative path or a path to a file that hasn't been written yet, the node raises "PLY file not found" and names the exact resolved path - check the console for the full message rather than assuming it's broken. And if the preview that follows comes up blank, the same /view-endpoint rule applies: the viewer serves from ComfyUI's output folder, so make sure upstream is writing there.

One take-away: of the three path-producing nodes in this pack, this is the one I'd actually reach for in a living workflow. The dropdowns are for the stuff you already own; this one's for the stuff the graph just made - which, honestly, is the more interesting case.

CategoryPlyPreview

Inputs (11)

NameTypeDefaultDescription
ply_pathSTRINGPLY file path from upstream node (e.g., SHARP Predict)
input_extrinsicsoptEXTRINSICSExtrinsics from upstream node (ignored if override_camera enabled)
input_intrinsicsoptINTRINSICSIntrinsics from upstream node (ignored if override_camera enabled)
override_cameraoptCOMBOenabledOverride input camera params with custom FOV settings
fov_degreesoptFLOAT5010–180Horizontal field of view in degrees (used when override_camera enabled)
auto_resolutionoptCOMBOenabledAuto-calculate optimal resolution based on FOV and target scale
target_scaleoptFLOAT101–50Target gaussian scale in viewer (used when auto_resolution enabled)
image_widthoptINT51264–8192Image width (used when auto_resolution disabled)
image_heightoptINT51264–8192Image height (used when auto_resolution disabled)
enable_opacity_filteroptCOMBOdisabledFilter out low-opacity Gaussians to reduce background noise
opacity_thresholdoptFLOAT0.100–1Minimum opacity (0-1). Gaussians below this will be removed

Outputs (3)

NameTypeDescription
ply_pathSTRING
extrinsicsEXTRINSICS
intrinsicsINTRINSICS