Files
Alexankharin-camera-comfyUI/workflows/Outpaint_node_test.json
T
Alexander KharinandClaude Fable 5 6f8ed9d382 Rework all workflows: schema repairs, embedded docs, groups, README table
Migrate widgets_values stored with pre-2026 node schemas (28 nodes across
9 files) to the current INPUT_TYPES: DepthEstimatorNode (+median_blur),
FisheyeDepthEstimator (+mode/median_blur), PointCloudCleaner (new
screen-space schema, reset to defaults), CameraMotionNode (+mask options),
CameraInterpolationNode (+num_steps), PointcloudTrajectoryEnricher
(20->16 widgets). Positionally-shifted values loaded silently wrong before.

Fix broken references:
- outpainting_fisheye.json: patch rotations lived in a removed
  ReprojectImage widget slot that now lands on `inverse` (42 -> truthy);
  rebuilt with explicit TransformToMatrix (±42°) nodes + inverse flags,
  mirroring the flux variant
- outpainting_fisheye_flux.json: normalize inverse widgets stored as 0/45
- wan_vace_ref_to_video.json: UNET filename typo (wan2,1_vace14B ->
  wan2.1_vace_14B_fp16.safetensors)

Explain and format every workflow: embedded "About this workflow"
MarkdownNote (purpose, stages, what to set, required packs/models),
meaningful group boxes (incl. retitling six anonymous "Group" boxes in
Fisheye_depth_workflow), titles on user-editable nodes, pretty-printed
JSON. Rename the two spaced filenames (pointcloud_walker,
test_pointcloud_loading). Rewrite the README workflow table with an
extras/dependencies column.

Tooling (notebooks/): validate_workflows.py checks stored widgets against
current INPUT_TYPES (count + combo values); rework_workflows_2026_07.py is
the migration that produced this state. Analysis and proposed improvements
in docs/workflows_review.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 17:28:18 +03:00

289 lines
5.5 KiB
JSON

{
"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": [
"flux_dev_example.png",
"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
]
}
},
"version": 0.4
}