{"record":{"id":"17972c970d01fcc9","repo":"Comfy-Org/ComfyUI","slug":"pose-method-cam-dec-requires-a-camera-decoder-b","errorCode":null,"errorMessage":"pose_method='cam_dec' requires a camera decoder, but the loaded model (head_type='{diffusion.head_type}') does not have one. Use pose_method='ray_pose' instead.","messagePattern":"pose_method='cam_dec' requires a camera decoder, but the loaded model \\(head_type='(.+?)'\\) does not have one\\. Use pose_method='ray_pose' instead\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"comfy_extras/nodes_depth_anything_3.py","lineNumber":281,"sourceCode":"\n        # Capability checks for multi-view mode.\n        diffusion = da3_model.model.diffusion_model\n        pose_method = mode[\"pose_method\"]\n        ref_view_strategy = mode[\"ref_view_strategy\"]\n\n        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:","sourceCodeStart":263,"sourceCodeEnd":299,"githubUrl":"https://github.com/Comfy-Org/ComfyUI/blob/1c6d8d45b3693bfbb32385b410d813a7fd6be216/comfy_extras/nodes_depth_anything_3.py#L263-L299","documentation":"Depth-Anything-3 raises this when pose_method is set to 'cam_dec' but the loaded model's diffusion_model.cam_dec is None — i.e. the checkpoint has no camera-decoder module. Only the ray_pose method (DualDPT head) is available in that configuration.","triggerScenarios":"Loading a Small/Base checkpoint variant without the camera decoder (cam_dec is None) and running multi-view mode with pose_method='cam_dec'.","commonSituations":"Default pose_method not matching the downloaded checkpoint variant; switching checkpoints between runs while keeping pose_method; tutorials that assume the full Base model with camera decoder.","solutions":["Set pose_method to 'ray_pose' in the node's mode input.","Or load the checkpoint variant that ships the camera decoder (cam_dec)."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if pose_method == 'cam_dec' and da3_model.model.diffusion_model.cam_dec is None:\n    pose_method = 'ray_pose'  # checkpoint has no camera decoder","typeGuard":"def da3_has_cam_dec(da3_model) -> bool:\n    return da3_model.model.diffusion_model.cam_dec is not None","tryCatchPattern":null,"preventionTips":["Check cam_dec presence before choosing pose_method.","Keep pose_method tied to the specific checkpoint variant in your workflow notes."],"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-15T17:31:12.345Z"}