{ "id": "8c6e5ec1-4ff2-42d9-9408-fcd0a23d362a", "revision": 0, "last_node_id": 12, "last_link_id": 17, "nodes": [ { "id": 3, "type": "PreviewImage", "pos": [ -5.768195629119873, 204.72561645507812 ], "size": [ 210, 246 ], "flags": {}, "order": 2, "mode": 0, "inputs": [ { "localized_name": "images", "name": "images", "type": "IMAGE", "link": 16 } ], "outputs": [], "properties": { "Node name for S&R": "PreviewImage" }, "widgets_values": [ "" ], "title": "Result" }, { "id": 4, "type": "MaskToImage", "pos": [ -30.901016235351562, 532.864013671875 ], "size": [ 264.5999755859375, 26 ], "flags": {}, "order": 3, "mode": 0, "inputs": [ { "localized_name": "mask", "name": "mask", "type": "MASK", "link": 17 } ], "outputs": [ { "localized_name": "IMAGE", "name": "IMAGE", "type": "IMAGE", "links": [ 4 ] } ], "properties": { "Node name for S&R": "MaskToImage" }, "widgets_values": [] }, { "id": 2, "type": "LoadImage", "pos": [ -843.689208984375, 354.9311828613281 ], "size": [ 315, 314 ], "flags": {}, "order": 0, "mode": 0, "inputs": [], "outputs": [ { "localized_name": "IMAGE", "name": "IMAGE", "type": "IMAGE", "links": [ 15 ] }, { "localized_name": "MASK", "name": "MASK", "type": "MASK", "links": [] } ], "properties": { "Node name for S&R": "LoadImage" }, "widgets_values": [ "camera_example_pinhole.jpg", "image", "" ] }, { "id": 5, "type": "PreviewImage", "pos": [ 296.6977844238281, 611.6702880859375 ], "size": [ 210, 246 ], "flags": {}, "order": 4, "mode": 0, "inputs": [ { "localized_name": "images", "name": "images", "type": "IMAGE", "link": 4 } ], "outputs": [], "properties": { "Node name for S&R": "PreviewImage" }, "widgets_values": [ "" ], "title": "Holes still to fill" }, { "id": 11, "type": "OutpaintAnyProjection", "pos": [ -498.9301452636719, 317.144287109375 ], "size": [ 400, 492 ], "flags": {}, "order": 1, "mode": 0, "inputs": [ { "localized_name": "image", "name": "image", "type": "IMAGE", "link": 15 }, { "localized_name": "mask", "name": "mask", "shape": 7, "type": "MASK", "link": null } ], "outputs": [ { "localized_name": "final_image", "name": "final_image", "type": "IMAGE", "links": [ 16 ] }, { "localized_name": "needs_inpaint_mask", "name": "needs_inpaint_mask", "type": "MASK", "links": [ 17 ] } ], "properties": { "Node name for S&R": "OutpaintAnyProjection" }, "widgets_values": [ "PINHOLE", 90, "FISHEYE", 180, 4096, 4096, "PINHOLE", 90, 1024, 45, 0, "", 10, false, 30, 1, false ], "title": "Outpaint one patch (yaw +45°)" }, { "id": 12, "type": "MarkdownNote", "title": "About this workflow", "pos": [ -1403.689208984375, 204.72561645507812 ], "size": [ 520, 288 ], "flags": {}, "order": 0, "mode": 0, "inputs": [], "outputs": [], "properties": {}, "widgets_values": [ "# OutpaintAnyProjection smoke test\n\nSingle-node sanity check: a 90° pinhole image is placed on a 180° fisheye canvas and one 90° pinhole patch at yaw +45° is Flux-inpainted (10 steps for speed).\n\nOutputs: the partially outpainted canvas and the *remaining holes* mask — chain more OutpaintAnyProjection nodes at other angles to fill it (see `Outpaint_fisheye180.json`).\n\n- **Set:** input image; prompt inside the node (empty = unconditional).\n- **Requires:** `custom_nodes/inpainting_flux` (installed automatically by this pack's install.py) — downloads FLUX.1-Fill NF4 weights on first run." ], "color": "#432", "bgcolor": "#653" } ], "links": [ [ 4, 4, 0, 5, 0, "IMAGE" ], [ 15, 2, 0, 11, 0, "IMAGE" ], [ 16, 11, 0, 3, 0, "IMAGE" ], [ 17, 11, 1, 4, 0, "MASK" ] ], "groups": [], "config": {}, "extra": { "ds": { "scale": 0.8390545288824094, "offset": [ 703.1897327574803, -308.43624510132975 ] }, "camera_comfyui_rev": 1 }, "version": 0.4 }