Comfy-Org/ComfyUI · error · ValueError
pose_method='ray_pose' requires a DualDPT head, but the load
Error message
pose_method='ray_pose' requires a DualDPT head, but the loaded model has a '{diffusion.head_type}' head. Use pose_method='cam_dec' instead. What it means
Depth-Anything-3 raises this when pose_method is 'ray_pose' but the loaded model's head_type is not 'dualdpt'. Ray-pose estimation comes from the DualDPT head, so a checkpoint with a different head cannot produce ray-based camera poses; the message points to the cam_dec alternative.
Source
Thrown at comfy_extras/nodes_depth_anything_3.py:287
has_cam_dec = diffusion.cam_dec is not None
has_dualdpt = diffusion.head_type == "dualdpt"
if not has_cam_dec and not has_dualdpt:
raise ValueError(
"multi-view mode requires Small or Base model. The loaded model "
f"(head_type='{diffusion.head_type}') does not support cross-view "
"attention or camera pose estimation. Switch mode to 'mono', or "
"load Small or Base model for mult-view."
)
if pose_method == "cam_dec" and not has_cam_dec:
raise ValueError(
"pose_method='cam_dec' requires a camera decoder, but the loaded "
f"model (head_type='{diffusion.head_type}') does not have one. "
"Use pose_method='ray_pose' instead."
)
if pose_method == "ray_pose" and not has_dualdpt:
raise ValueError(
"pose_method='ray_pose' requires a DualDPT head, but the loaded "
f"model has a '{diffusion.head_type}' head. "
"Use pose_method='cam_dec' instead."
)
return cls._execute_multiview(
da3_model, image, resolution, resize_method,
ref_view_strategy, pose_method,
)
@classmethod
def _execute_mono(cls, model, image, resolution, resize_method) -> io.NodeOutput:
depth, confidence, sky = _run_da3(model, image, resolution, method=resize_method)
geometry: dict = {
"depth": depth.contiguous(),
"image": image[..., :3].cpu(),
"mode": "mono",View on GitHub (pinned to 1c6d8d45b3)
Solutions
- Set pose_method to 'cam_dec' for this checkpoint.
- Or load a Small/Base model with a dualdpt head if ray_pose is required.
Defensive patterns
Strategy: validation
Validate before calling
if pose_method == 'ray_pose' and da3_model.model.diffusion_model.head_type != 'dualdpt':
pose_method = 'cam_dec' # DualDPT head required for ray_pose Type guard
def da3_has_dualdpt(da3_model) -> bool:
return da3_model.model.diffusion_model.head_type == 'dualdpt' Prevention
- ray_pose requires head_type == 'dualdpt'; verify before queueing.
- Re-validate pose_method after every checkpoint swap.
When it happens
Trigger: Loading a model whose head_type != 'dualdpt' (a head variant with a camera decoder but not DualDPT) and running multi-view with pose_method='ray_pose'.
Common situations: Mirrors error 867: switching pose_method when swapping checkpoints; keeping 'ray_pose' from a Base-model workflow after loading a different variant.
Related errors
- pose_method='cam_dec' requires a camera decoder, but the loa
- multi-view mode requires Small or Base model. The loaded mod
- Invalid affine shape: {ext.shape}
- apply_sky_clip=True requires a sky tensor in the da3_geometr
- geometry has no sky output; run with Mono/Metric models.
AI-assisted analysis of Comfy-Org/ComfyUI@1c6d8d45b3 (2026-08-14).
Data as JSON: /api/errors/1d4afd2c30bdfb60.
Report an issue: GitHub.