Nodes/ComfyUI-DepthAnythingV3/DA3_FilterGaussians
ComfyUI Node

DA3_FilterGaussians

Clean up a Depth Anything 3 Gaussian splat

By PozzettiAndrea·Created 9 months ago·Updated 2 months ago· 434
DA3_FilterGaussians
  • sky_mask
  • ply_path
gaussian_ply_path
filename_prefixgaussians_filtered
filter_skytrue
depth_prune_percent0.90
opacity_threshold0.00

This node cleans up a 3D Gaussian splat - the .ply file of 3D Gaussians that Depth Anything 3 can produce - by throwing out the junk: sky, over-distant background, and low-opacity fluff. Raw splat exports from any depth-based method are messy. This is the node that trims them into something you'd actually want to view or hand to a splat renderer.

First, the reality check on Gaussians in this pack

Be clear-eyed about where 3D Gaussians stand in DA3 today, because the README is. Gaussian output is marked as requiring fine-tuned model weights and is a placeholder in the current release on the base models - the main and Nested series list Gaussian support with an asterisk that means "needs weights that aren't shipped yet." So if you point this node at a gaussian_ply_path from a stock Large model, there may be nothing meaningful to filter. This node is built for the Gaussian pipeline as it matures; on today's base weights it's ahead of what the models reliably produce. Worth knowing before you spend time on it.

How it works

It reads a Gaussian .ply, applies a set of filters, and writes a cleaned .ply back out. The required inputs are the source gaussian_ply_path (a string path to the splat file, typically the gaussian_ply_path output from the depth node) and a filename_prefix (default gaussians_filtered) for the result.

The filters, all optional:

  • filter_sky (default on) plus sky_mask - connect a sky mask and this strips the Gaussians that belong to sky. Sky splats are the worst offenders in any outdoor scene, so this is on by default for good reason.
  • depth_prune_percent (default 0.9) - prunes the most distant Gaussians. At 0.9 it keeps the near 90% by depth and drops the far tail, which is where reconstruction gets least reliable and most cluttered. Lower it to be more aggressive about cutting background.
  • opacity_threshold (default 0) - drops Gaussians below a given opacity. Raise it above 0 to remove faint, barely-there splats that mostly add haze. Default 0 keeps everything.

The output is a single ply_path string pointing at the filtered file, ready for a splat viewer or further processing.

The workflow it belongs to

When the Gaussian path is producing real output, the chain is: DepthAnything_V3 (or the multi-view node) emits a gaussian_ply_pathDA3_FilterGaussians cleans it → you open the result in a Gaussian splat viewer. Filtering isn't optional polish for splats; an unfiltered splat with sky and distant garbage in it looks bad and renders slow, so this step is the difference between a usable result and a mess.

Common issues

The big one, again: if there's nothing to filter or the node produces an empty/trivial result, it's likely because your model isn't actually generating Gaussians - that needs fine-tuned weights the base release doesn't ship. Confirm you have a real, non-placeholder gaussian_ply_path before blaming the filter. Beyond that: sky still present after filtering means you didn't connect a sky_mask (or your model doesn't make one - load Mono/Metric/Nested), so filter_sky had nothing to work with. Too much geometry getting cut? Your depth_prune_percent is too aggressive - raise it back toward 0.9 or 1.0. And a splat that still looks hazy usually wants a small bump to opacity_threshold to clear out the faint stuff.

CategoryDepthAnythingV3

Inputs (6)

NameTypeDefaultDescription
gaussian_ply_pathSTRING
filename_prefixSTRINGgaussians_filtered
sky_maskoptMASK
filter_skyoptBOOLEANtrueFilter out Gaussians in sky regions using sky_mask
depth_prune_percentoptFLOAT0.900–1Prune Gaussians with depth above this percentile (0.9 = keep closest 90%)
opacity_thresholdoptFLOAT0.000–1Remove Gaussians with opacity below this threshold

Outputs (1)

NameTypeDescription
ply_pathSTRING