Comfy-Org/ComfyUI · error · ValueError
geometry has no sky output; run with Mono/Metric models.
Error message
geometry has no sky output; run with Mono/Metric models.
What it means
DA3 geometry decode node raises this when output='sky_mask' is requested but the geometry dict has no 'sky' entry. Sky maps are only emitted by Mono/Metric DA3 models, so the requested output simply does not exist for the loaded model.
Source
Thrown at comfy_extras/nodes_depth_anything_3.py:437
apply_sky_clip = output["apply_sky_clip"]
if apply_sky_clip and "sky" not in da3_geometry:
raise ValueError(
"apply_sky_clip=True requires a sky tensor in the da3_geometry input, but none is present. "
"Run with Mono/Metric models or set apply_sky_clip=False."
)
depth = da3_geometry["depth"]
sky = da3_geometry.get("sky")
if apply_sky_clip and sky is not None:
depth = torch.stack([
da3_preprocess.apply_sky_aware_clip(depth[i], sky[i])
for i in range(depth.shape[0])
], dim=0)
grey = cls._depth_to_image(depth, sky, normalization) # (B,H,W,3) greyscale
result = _turbo(grey[..., 0]) if output_val == "depth_colored" else grey
elif output_val == "sky_mask":
if "sky" not in da3_geometry:
raise ValueError("geometry has no sky output; run with Mono/Metric models.")
sky = da3_geometry["sky"]
if output["colored"]:
result = _turbo(sky)
else:
result = sky.unsqueeze(-1).expand(*sky.shape, 3).contiguous()
elif output_val == "confidence":
if "confidence" not in da3_geometry:
raise ValueError("da3_geometry has no confidence output; run with Small/Base models.")
conf = _normalize_confidence(da3_geometry["confidence"])
if output["colored"]:
result = _turbo(conf)
else:
result = conf.unsqueeze(-1).expand(*conf.shape, 3).contiguous()
else:
raise ValueError(f"Unknown output mode: {output_val}")
View on GitHub (pinned to 1c6d8d45b3)
Solutions
- Switch the output to 'depth'/'depth_colored'/'confidence' as supported by your model.
- Or load a Mono/Metric DA3 model, which produces sky geometry.
Defensive patterns
Strategy: type-guard
Validate before calling
if output_val == 'sky_mask' and 'sky' not in da3_geometry:
raise ValueError('this model has no sky output; use depth or confidence instead') Type guard
def geometry_has_sky(geo: dict) -> bool:
return 'sky' in geo Prevention
- Check dict keys of da3_geometry before selecting an output mode.
- Map model family to available outputs: Mono/Metric -> sky, Small/Base -> confidence.
When it happens
Trigger: Selecting 'sky_mask' as the output while the upstream DA3 node ran a Small/Base model (or any mode that doesn't populate the 'sky' key).
Common situations: Output dropdown left on 'sky_mask' after a checkpoint swap; following a Mono-model sky-segmentation workflow with a Small model.
Related errors
- apply_sky_clip=True requires a sky tensor in the da3_geometr
- da3_geometry has no confidence output; run with Small/Base m
- multi-view mode requires Small or Base model. The loaded mod
- pose_method='cam_dec' requires a camera decoder, but the loa
- pose_method='ray_pose' requires a DualDPT head, but the load
AI-assisted analysis of Comfy-Org/ComfyUI@1c6d8d45b3 (2026-08-14).
Data as JSON: /api/errors/4de66fe1a9e8c1fb.
Report an issue: GitHub.