Pixel Perfect Depth (Depth Map - V2)
Same depth map, better lineage — use the V2
- image
- depth_image
- ppd_depth
The name says "Open3D", but this node doesn't touch Open3D at all. That's a leftover from the pack's earlier version, when the point-cloud half of it used the Open3D library. The author renamed the whole family to "V2" and told everyone to use the V2 nodes - and PPDDepthMapOpen3D is the V2 depth-map node, now presented as "Pixel Perfect Depth (Depth Map - V2)". Think of it as the fixed, forward-supported edition of the pack's flagship, and use it instead of the plain PPDDepthMap unless you have a specific reason not to.
What you're getting
Functionally it's the same node as the non-V2 depth map: a semantics-prompted diffusion transformer that refines a Depth Anything V2 or MoGe2 prior into a clean, edge-honest relative depth map, instead of the one-shot preprocessor output you get from most depth nodes. Same depth_image + ppd_depth outputs, same model files, same speed profile. The differences are cosmetic on the surface - the V2 keeps the raw depth in the payload without a normalization round-trip, which is one less place for precision to leak before you hand it to the point-cloud saver - and meaningful underneath: it's the code path the author actually maintains, and the README's compatibility warnings (the Open3D save crash, the utils3d workaround) all point at the V2 nodes as the supported route.
Inputs and outputs
The ones you'll actually touch:
model_variant-DA2(default) orMoGe2. DA2 is the reliable daily driver; MoGe2 uses geometry-aware semantics and can win on scenes with glass, sky and thin structures, at the cost of an extra weights download.sampling_steps- 20 default. This is real diffusion work, so 10 steps is visibly rougher and 40 is slow; 20 is the sweet spot.seed- the denoising is seeded, so identical image + seed = identical map.-1randomizes.colorize/use_fp16- visual colormap on/off, and fp16 on CUDA/MPS (forced off on CPU).
Outputs: depth_image (IMAGE, normalized, Spectral-colored by default) for viewing and ControlNet conditioning, and ppd_depth (PPD_DEPTH, raw float32) that flows into the pack's Unpack Depth and Save Point Cloud nodes.
Install
It ships in the same pack as everything else, so if you have one PPD node you have them all. Via ComfyUI Manager, search ComfyUI-pixel-perfect-depth; or:
cd ComfyUI/custom_nodes
git clone https://github.com/Apache0ne/ComfyUI-pixel-perfect-depth
cd ComfyUI-pixel-perfect-depth
pip install -r requirements.txt
Then restart. The pack does not auto-download weights - that's a deliberate design choice and the #1 source of "why is this erroring" posts. You need, in ComfyUI/models/ComfyUI-pixel-perfect-depth/DA2/:
DA2/depth_anything_v2_vitl.pth (~1.3 GB)
DA2/ppd.pth (~1.9 GB)
and, if you want the MoGe2 variant, the matching pair under MoGe2/. The -vitl file is the semantics encoder; ppd.pth is the diffusion transformer. Both must be present or the node throws a FileNotFoundError telling you exactly which path it expected.
Troubleshooting
Same failure modes as the pack in general, so don't re-research: missing weights error first, slow cold start (it loads ~3 GB of models the first time), CUDA OOM on big inputs (drop sampling_steps, toggle use_fp16, downscale the image). One V2-specific thing worth knowing: don't be tempted to chase the "Open3D" in the name into the old open3d save path - the author explicitly calls out that Open3D can crash on file save in current ComfyUI builds, which is exactly why the V2 save node defaults to a scipy-based filter instead. This depth node never had that problem. If a workflow someone shares still wires the old PPDDepthMap name, swap in this one and move on.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| sampling_steps | INT | 201–100 | — |
| model_variant | COMBO | DA2 | 2 options: DA2, MoGe2 |
| seedopt | INT | 666-1–2147483647 | — |
| colorizeopt | BOOLEAN | true | — |
| use_fp16opt | BOOLEAN | true | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| depth_image | IMAGE | — |
| ppd_depth | PPD_DEPTH | — |