Points To Image advance (Orthographic)
The ortho renderer with a hole-filling pass for sparse clouds
- images
- points
- IMAGE
The plain Points To Image (Orthographic) node is the honest one: it draws your point cloud and calls it a day. This "advance" version is the same orthographic renderer with three extra knobs bolted on - correct, ksize, and threshold - that add a cleanup pass to fill the holes sparse point clouds leave behind.
Here's why that matters. When you rotate a cloud, parts of the scene that were front-facing rotate away and expose gaps where no points exist. Downsample the depth map for speed and the whole render gets speckly. The plain renderer leaves those as black holes; this one tries to fill them in. If you've ever hit "cloud renders with holes" and gone looking for the fix, this is it - and the fix comes with dials to tune.
How it works
After the normal orthographic render, the node builds a depth image of the result and finds every pixel whose depth is below threshold - i.e. pixels that are effectively holes or background. Then it runs a blur that only averages over non-black neighbors (blur_image_excluding_black, if you're reading the source) and paints those averaged colors into the hole pixels. The result is a render where sparse regions blend into their surroundings instead of staring back at you as black.
The three inputs are one mechanism, not three separate features:
- correct (default OFF) - the master switch. Leave it OFF and
ksize/thresholddo nothing; this node is just the plain ortho renderer. Flip it ON to enable the hole-fill pass. - ksize (2–128, default 2) - the size of the blur kernel used to average surrounding colors. Higher = fills from a wider neighborhood, which smooths bigger holes but starts to smear detail.
- threshold (0–256, default 2) - what counts as a hole. Pixels with depth below this get filled in. Start at the default and raise it if the fill isn't reaching into the sparse regions.
Everything else is the ortho renderer you already know: images is the size template, points is the Points3D cloud, color (default OFF) switches between depth-as-grayscale and RGB.
Output: IMAGE - a normal image tensor, so it plugs into save/preview/img2img like any ComfyUI image.
Install
Same as the rest of the pack. ComfyUI Manager → "ComfyUI_depthMapOperation", or:
cd ComfyUI/custom_nodes
git clone https://github.com/chri002/ComfyUI_depthMapOperation
Restart. No model files, no keys; torch, numpy, opencv-python, scipy and pandas are all already in a stock install.
Where people get burned
The common trap is flipping correct ON and leaving threshold at its default while wondering why nothing changed - at the default, very few pixels qualify as holes, so the pass is a no-op. If you have visible gaps, raise threshold first, then widen ksize. And be aware the fill is a local average, not an inpainter: big holes get filled with blurry smears, which is usually fine for masks and parallax but not for "reconstruct what was behind this object." For that you're better off inpainting the rendered image properly. Single frame only, as with the whole pack - no batches.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| points | Points3D | — | |
| color | BOOLEAN | false | — |
| correct | BOOLEAN | false | — |
| ksize | INT | 22–128 | — |
| threshold | INT | 20–256 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |