{"record":{"id":"d16d83c3054862f1","repo":"Comfy-Org/ComfyUI","slug":"multi-view-mode-requires-small-or-base-model-the","errorCode":null,"errorMessage":"multi-view mode requires Small or Base model. The loaded model (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.","messagePattern":"multi-view mode requires Small or Base model\\. The loaded model \\(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\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"comfy_extras/nodes_depth_anything_3.py","lineNumber":273,"sourceCode":"        )\n\n    @classmethod\n    def execute(cls, da3_model, image, resolution, resize_method, mode) -> io.NodeOutput:\n        mode_val = mode[\"mode\"]  # \"mono\" or \"multiview\"\n\n        if mode_val == \"mono\":\n            return cls._execute_mono(da3_model, image, resolution, resize_method)\n\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            )","sourceCodeStart":255,"sourceCodeEnd":291,"githubUrl":"https://github.com/Comfy-Org/ComfyUI/blob/1c6d8d45b3693bfbb32385b410d813a7fd6be216/comfy_extras/nodes_depth_anything_3.py#L255-L291","documentation":"Depth-Anything-3 node raises this when multi-view mode is selected but the loaded checkpoint's diffusion head cannot do cross-view attention or camera-pose estimation. Capability is inferred from the model: head_type must be 'dualdpt' (Small/Base models) or the model must carry a camera decoder (cam_dec). Mono/Metric checkpoints have neither, so multi-view is impossible for them.","triggerScenarios":"Loading a DA3 Mono or Metric checkpoint and running the DA3 node with mode='multi' (or any non-'mono' mode value). The check reads da3_model.model.diffusion_model.head_type and .cam_dec directly.","commonSituations":"Swapping DA3 checkpoints in a shared workflow without switching the mode back to 'mono'; downloading the smaller Mono model first and following a multi-view tutorial written for Base; mixing up model naming (Small/Base vs Mono/Metric variants).","solutions":["Set the node's mode to 'mono' for Mono/Metric checkpoints.","Or load the DA3 Small or Base model, which has a dualdpt head / camera decoder and supports multi-view.","Keep one workflow per model family instead of hot-swapping checkpoints."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"diffusion = da3_model.model.diffusion_model\nsupports_multiview = diffusion.cam_dec is not None or diffusion.head_type == 'dualdpt'\nif mode_val != 'mono' and not supports_multiview:\n    mode_val = 'mono'  # or raise with a clear message before queueing","typeGuard":"def da3_supports_multiview(da3_model) -> bool:\n    d = da3_model.model.diffusion_model\n    return d.cam_dec is not None or d.head_type == 'dualdpt'","tryCatchPattern":null,"preventionTips":["Pair each DA3 checkpoint variant with its own saved workflow (Mono/Metric -> mono, Small/Base -> multi ok).","When swapping checkpoints, re-check mode, pose_method, and output widgets together.","Remember the capability rule: multiview needs cam_dec or head_type=='dualdpt'."],"tags":["comfyui","depth-anything-3","model-capability","validation"],"backgroundTag":null,"analyzedSha":"1c6d8d45b3693bfbb32385b410d813a7fd6be216","analyzedAt":"2026-08-14T19:37:18.893Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}