{"record":{"id":"1d4afd2c30bdfb60","repo":"Comfy-Org/ComfyUI","slug":"pose-method-ray-pose-requires-a-dualdpt-head-bu","errorCode":null,"errorMessage":"pose_method='ray_pose' requires a DualDPT head, but the loaded model has a '{diffusion.head_type}' head. Use pose_method='cam_dec' instead.","messagePattern":"pose_method='ray_pose' requires a DualDPT head, but the loaded model has a '(.+?)' head\\. Use pose_method='cam_dec' instead\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"comfy_extras/nodes_depth_anything_3.py","lineNumber":287,"sourceCode":"        has_cam_dec = diffusion.cam_dec is not None\n        has_dualdpt = diffusion.head_type == \"dualdpt\"\n\n        if not has_cam_dec and not has_dualdpt:\n            raise ValueError(\n                \"multi-view mode requires Small or Base model. The loaded model \"\n                f\"(head_type='{diffusion.head_type}') does not support cross-view \"\n                \"attention or camera pose estimation. Switch mode to 'mono', or \"\n                \"load Small or Base model for mult-view.\"\n            )\n\n        if pose_method == \"cam_dec\" and not has_cam_dec:\n            raise ValueError(\n                \"pose_method='cam_dec' requires a camera decoder, but the loaded \"\n                f\"model (head_type='{diffusion.head_type}') does not have one. \"\n                \"Use pose_method='ray_pose' instead.\"\n            )\n        if pose_method == \"ray_pose\" and not has_dualdpt:\n            raise ValueError(\n                \"pose_method='ray_pose' requires a DualDPT head, but the loaded \"\n                f\"model has a '{diffusion.head_type}' head. \"\n                \"Use pose_method='cam_dec' instead.\"\n            )\n\n        return cls._execute_multiview(\n            da3_model, image, resolution, resize_method,\n            ref_view_strategy, pose_method,\n        )\n\n    @classmethod\n    def _execute_mono(cls, model, image, resolution, resize_method) -> io.NodeOutput:\n        depth, confidence, sky = _run_da3(model, image, resolution, method=resize_method)\n\n        geometry: dict = {\n            \"depth\": depth.contiguous(),\n            \"image\": image[..., :3].cpu(),\n            \"mode\": \"mono\",","sourceCodeStart":269,"sourceCodeEnd":305,"githubUrl":"https://github.com/Comfy-Org/ComfyUI/blob/1c6d8d45b3693bfbb32385b410d813a7fd6be216/comfy_extras/nodes_depth_anything_3.py#L269-L305","documentation":"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.","triggerScenarios":"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'.","commonSituations":"Mirrors error 867: switching pose_method when swapping checkpoints; keeping 'ray_pose' from a Base-model workflow after loading a different variant.","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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if pose_method == 'ray_pose' and da3_model.model.diffusion_model.head_type != 'dualdpt':\n    pose_method = 'cam_dec'  # DualDPT head required for ray_pose","typeGuard":"def da3_has_dualdpt(da3_model) -> bool:\n    return da3_model.model.diffusion_model.head_type == 'dualdpt'","tryCatchPattern":null,"preventionTips":["ray_pose requires head_type == 'dualdpt'; verify before queueing.","Re-validate pose_method after every checkpoint swap."],"tags":["comfyui","depth-anything-3","model-capability","camera-pose"],"backgroundTag":null,"analyzedSha":"1c6d8d45b3693bfbb32385b410d813a7fd6be216","analyzedAt":"2026-08-14T19:37:18.893Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}