- Bundle example inputs (example_inputs/: pinhole + fisheye JPEG, example trajectory .npy); install.py copies them into ComfyUI's input/ folder and every LoadImage/LoadTrajectory default now points at them, so the shipped workflows queue on a fresh install. - Template browser: add same-name .jpg thumbnails for 10 workflows (workflows/ is already a recognized template dir); drop the stray workflows/__init__.py. - Move superseded reference graphs to workflows/legacy/ (SD-checkpoint outpaint variant, manual multi-view fisheye depth) - out of the template browser, still documented. - video_camera.json: remove dead-end BlurMaskFast (radius 0/0 no-op), easy-mathInt pad math and dangling VHS_VideoInfo; swap KJNodes GetImageRangeFromBatch for built-in ImageFromBatch. Pack deps cut from five to two (VideoHelperSuite + Florence2). - New workflows/record_trajectory.json - produces the .npy trajectory that PC_enricher and wan_vace_ref_to_video consume. - Stamp extra.camera_comfyui_rev=1 in all workflows for future migrations; prune 8 pre-existing stale link references found by a bidirectional integrity sweep. - CI: .github/workflows/validate.yml runs the schema validator, installer-logic tests and 4D smoke suite (CPU torch) on PRs and main. - README + docs/workflows_review.md updated accordingly. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1748 lines
34 KiB
JSON
1748 lines
34 KiB
JSON
{
|
||
"id": "292f4ed4-287f-4129-9677-308e20e7b88d",
|
||
"revision": 0,
|
||
"last_node_id": 70,
|
||
"last_link_id": 154,
|
||
"nodes": [
|
||
{
|
||
"id": 45,
|
||
"type": "PreviewImage",
|
||
"pos": [
|
||
258.9292297363281,
|
||
568.1746215820312
|
||
],
|
||
"size": [
|
||
210,
|
||
246
|
||
],
|
||
"flags": {},
|
||
"order": 9,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "images",
|
||
"name": "images",
|
||
"type": "IMAGE",
|
||
"link": 113
|
||
}
|
||
],
|
||
"outputs": [],
|
||
"properties": {
|
||
"Node name for S&R": "PreviewImage"
|
||
},
|
||
"widgets_values": []
|
||
},
|
||
{
|
||
"id": 47,
|
||
"type": "PreviewImage",
|
||
"pos": [
|
||
1136.058837890625,
|
||
799.248779296875
|
||
],
|
||
"size": [
|
||
210,
|
||
246
|
||
],
|
||
"flags": {},
|
||
"order": 14,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "images",
|
||
"name": "images",
|
||
"type": "IMAGE",
|
||
"link": 117
|
||
}
|
||
],
|
||
"outputs": [],
|
||
"properties": {
|
||
"Node name for S&R": "PreviewImage"
|
||
},
|
||
"widgets_values": []
|
||
},
|
||
{
|
||
"id": 27,
|
||
"type": "InvertMask",
|
||
"pos": [
|
||
222.3865509033203,
|
||
938.9392700195312
|
||
],
|
||
"size": [
|
||
159.60000610351562,
|
||
26
|
||
],
|
||
"flags": {},
|
||
"order": 10,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "mask",
|
||
"name": "mask",
|
||
"type": "MASK",
|
||
"link": 105
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "MASK",
|
||
"name": "MASK",
|
||
"type": "MASK",
|
||
"links": [
|
||
106
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "InvertMask"
|
||
},
|
||
"widgets_values": []
|
||
},
|
||
{
|
||
"id": 46,
|
||
"type": "DepthEstimatorNode",
|
||
"pos": [
|
||
-1050.1966552734375,
|
||
1207.4327392578125
|
||
],
|
||
"size": [
|
||
315,
|
||
82
|
||
],
|
||
"flags": {},
|
||
"order": 4,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "image",
|
||
"name": "image",
|
||
"type": "IMAGE",
|
||
"link": 114
|
||
},
|
||
{
|
||
"localized_name": "model_name",
|
||
"name": "model_name",
|
||
"type": "STRING",
|
||
"widget": {
|
||
"name": "model_name"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "depth_scale",
|
||
"name": "depth_scale",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "depth_scale"
|
||
},
|
||
"link": null
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "depth tensor",
|
||
"name": "depth tensor",
|
||
"type": "TENSOR",
|
||
"links": [
|
||
115
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "DepthEstimatorNode"
|
||
},
|
||
"widgets_values": [
|
||
"Depth-Anything-V2-Metric-Indoor-Base-hf",
|
||
0.30000000000000004,
|
||
1
|
||
]
|
||
},
|
||
{
|
||
"id": 18,
|
||
"type": "DepthToPointCloud",
|
||
"pos": [
|
||
-896.3029174804688,
|
||
756.4371337890625
|
||
],
|
||
"size": [
|
||
315,
|
||
170
|
||
],
|
||
"flags": {},
|
||
"order": 6,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "image",
|
||
"name": "image",
|
||
"type": "IMAGE",
|
||
"link": 41
|
||
},
|
||
{
|
||
"localized_name": "depthmap",
|
||
"name": "depthmap",
|
||
"shape": 7,
|
||
"type": "TENSOR",
|
||
"link": 115
|
||
},
|
||
{
|
||
"localized_name": "mask",
|
||
"name": "mask",
|
||
"shape": 7,
|
||
"type": "MASK",
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "input_projection",
|
||
"name": "input_projection",
|
||
"type": "COMBO",
|
||
"widget": {
|
||
"name": "input_projection"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "input_horizontal_fov",
|
||
"name": "input_horizontal_fov",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "input_horizontal_fov"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "depth_scale",
|
||
"name": "depth_scale",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "depth_scale"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "invert_depth",
|
||
"name": "invert_depth",
|
||
"type": "BOOLEAN",
|
||
"widget": {
|
||
"name": "invert_depth"
|
||
},
|
||
"link": null
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "pointcloud",
|
||
"name": "pointcloud",
|
||
"type": "TENSOR",
|
||
"links": [
|
||
42
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "DepthToPointCloud"
|
||
},
|
||
"widgets_values": [
|
||
"PINHOLE",
|
||
90,
|
||
1,
|
||
false
|
||
]
|
||
},
|
||
{
|
||
"id": 26,
|
||
"type": "SaveImage",
|
||
"pos": [
|
||
-20.612165451049805,
|
||
1323.724609375
|
||
],
|
||
"size": [
|
||
360.54998779296875,
|
||
441.5299987792969
|
||
],
|
||
"flags": {},
|
||
"order": 15,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "images",
|
||
"name": "images",
|
||
"type": "IMAGE",
|
||
"link": 102
|
||
},
|
||
{
|
||
"localized_name": "filename_prefix",
|
||
"name": "filename_prefix",
|
||
"type": "STRING",
|
||
"widget": {
|
||
"name": "filename_prefix"
|
||
},
|
||
"link": null
|
||
}
|
||
],
|
||
"outputs": [],
|
||
"properties": {
|
||
"cnr_id": "comfy-core",
|
||
"ver": "0.3.18"
|
||
},
|
||
"widgets_values": [
|
||
"fluxout"
|
||
]
|
||
},
|
||
{
|
||
"id": 48,
|
||
"type": "MaskToImage",
|
||
"pos": [
|
||
805.2968139648438,
|
||
716.0382690429688
|
||
],
|
||
"size": [
|
||
264.5999755859375,
|
||
26
|
||
],
|
||
"flags": {},
|
||
"order": 12,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "mask",
|
||
"name": "mask",
|
||
"type": "MASK",
|
||
"link": 116
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "IMAGE",
|
||
"name": "IMAGE",
|
||
"type": "IMAGE",
|
||
"links": [
|
||
117
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "MaskToImage"
|
||
},
|
||
"widgets_values": []
|
||
},
|
||
{
|
||
"id": 43,
|
||
"type": "Flux Inpainting",
|
||
"pos": [
|
||
322.84490966796875,
|
||
1090.0487060546875
|
||
],
|
||
"size": [
|
||
400,
|
||
200
|
||
],
|
||
"flags": {},
|
||
"order": 13,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "image",
|
||
"name": "image",
|
||
"type": "IMAGE",
|
||
"link": 118
|
||
},
|
||
{
|
||
"localized_name": "mask",
|
||
"name": "mask",
|
||
"type": "MASK",
|
||
"link": 119
|
||
},
|
||
{
|
||
"localized_name": "prompt",
|
||
"name": "prompt",
|
||
"type": "STRING",
|
||
"widget": {
|
||
"name": "prompt"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "num_inference_steps",
|
||
"name": "num_inference_steps",
|
||
"type": "INT",
|
||
"widget": {
|
||
"name": "num_inference_steps"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "cached",
|
||
"name": "cached",
|
||
"type": "BOOLEAN",
|
||
"widget": {
|
||
"name": "cached"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "guidance_scale",
|
||
"name": "guidance_scale",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "guidance_scale"
|
||
},
|
||
"link": null
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "image",
|
||
"name": "image",
|
||
"type": "IMAGE",
|
||
"links": [
|
||
102,
|
||
120,
|
||
121
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "Flux Inpainting"
|
||
},
|
||
"widgets_values": [
|
||
"",
|
||
50,
|
||
false,
|
||
30
|
||
],
|
||
"title": "Flux inpaint holes"
|
||
},
|
||
{
|
||
"id": 49,
|
||
"type": "DepthEstimatorNode",
|
||
"pos": [
|
||
538.0506591796875,
|
||
1368.599853515625
|
||
],
|
||
"size": [
|
||
315,
|
||
82
|
||
],
|
||
"flags": {},
|
||
"order": 16,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "image",
|
||
"name": "image",
|
||
"type": "IMAGE",
|
||
"link": 120
|
||
},
|
||
{
|
||
"localized_name": "model_name",
|
||
"name": "model_name",
|
||
"type": "STRING",
|
||
"widget": {
|
||
"name": "model_name"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "depth_scale",
|
||
"name": "depth_scale",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "depth_scale"
|
||
},
|
||
"link": null
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "depth tensor",
|
||
"name": "depth tensor",
|
||
"type": "TENSOR",
|
||
"links": [
|
||
126
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "DepthEstimatorNode"
|
||
},
|
||
"widgets_values": [
|
||
"Depth-Anything-V2-Metric-Indoor-Base-hf",
|
||
0.30000000000000004,
|
||
1
|
||
]
|
||
},
|
||
{
|
||
"id": 54,
|
||
"type": "DepthRenormalizer",
|
||
"pos": [
|
||
688.8441772460938,
|
||
1541.053466796875
|
||
],
|
||
"size": [
|
||
418.1999816894531,
|
||
98
|
||
],
|
||
"flags": {},
|
||
"order": 17,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "depth",
|
||
"name": "depth",
|
||
"type": "TENSOR",
|
||
"link": 126
|
||
},
|
||
{
|
||
"localized_name": "guidance_depth",
|
||
"name": "guidance_depth",
|
||
"type": "TENSOR",
|
||
"link": 127
|
||
},
|
||
{
|
||
"localized_name": "guidance_mask",
|
||
"name": "guidance_mask",
|
||
"type": "MASK",
|
||
"link": 128
|
||
},
|
||
{
|
||
"localized_name": "use_inverse",
|
||
"name": "use_inverse",
|
||
"type": "BOOLEAN",
|
||
"widget": {
|
||
"name": "use_inverse"
|
||
},
|
||
"link": null
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "depth tensor",
|
||
"name": "depth tensor",
|
||
"type": "TENSOR",
|
||
"links": [
|
||
131
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "DepthRenormalizer"
|
||
},
|
||
"widgets_values": [
|
||
true
|
||
],
|
||
"title": "Align new depth to cloud"
|
||
},
|
||
{
|
||
"id": 9,
|
||
"type": "TransformPointCloud",
|
||
"pos": [
|
||
-509.0394287109375,
|
||
790.4733276367188
|
||
],
|
||
"size": [
|
||
329.20001220703125,
|
||
46
|
||
],
|
||
"flags": {},
|
||
"order": 7,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "pointcloud",
|
||
"name": "pointcloud",
|
||
"type": "TENSOR",
|
||
"link": 42
|
||
},
|
||
{
|
||
"localized_name": "transform_matrix",
|
||
"name": "transform_matrix",
|
||
"type": "MAT_4X4",
|
||
"link": 17
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "transformed pointcloud",
|
||
"name": "transformed pointcloud",
|
||
"type": "TENSOR",
|
||
"links": [
|
||
34,
|
||
135
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "TransformPointCloud"
|
||
},
|
||
"widgets_values": []
|
||
},
|
||
{
|
||
"id": 50,
|
||
"type": "DepthToPointCloud",
|
||
"pos": [
|
||
1079.2274169921875,
|
||
1205.6041259765625
|
||
],
|
||
"size": [
|
||
315,
|
||
170
|
||
],
|
||
"flags": {},
|
||
"order": 18,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "image",
|
||
"name": "image",
|
||
"type": "IMAGE",
|
||
"link": 121
|
||
},
|
||
{
|
||
"localized_name": "depthmap",
|
||
"name": "depthmap",
|
||
"shape": 7,
|
||
"type": "TENSOR",
|
||
"link": 131
|
||
},
|
||
{
|
||
"localized_name": "mask",
|
||
"name": "mask",
|
||
"shape": 7,
|
||
"type": "MASK",
|
||
"link": 146
|
||
},
|
||
{
|
||
"localized_name": "input_projection",
|
||
"name": "input_projection",
|
||
"type": "COMBO",
|
||
"widget": {
|
||
"name": "input_projection"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "input_horizontal_fov",
|
||
"name": "input_horizontal_fov",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "input_horizontal_fov"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "depth_scale",
|
||
"name": "depth_scale",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "depth_scale"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "invert_depth",
|
||
"name": "invert_depth",
|
||
"type": "BOOLEAN",
|
||
"widget": {
|
||
"name": "invert_depth"
|
||
},
|
||
"link": null
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "pointcloud",
|
||
"name": "pointcloud",
|
||
"type": "TENSOR",
|
||
"links": [
|
||
134
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "DepthToPointCloud"
|
||
},
|
||
"widgets_values": [
|
||
"PINHOLE",
|
||
90,
|
||
1,
|
||
false
|
||
]
|
||
},
|
||
{
|
||
"id": 6,
|
||
"type": "TransformToMatrix",
|
||
"pos": [
|
||
-659.3237915039062,
|
||
1054.6514892578125
|
||
],
|
||
"size": [
|
||
315,
|
||
154
|
||
],
|
||
"flags": {},
|
||
"order": 0,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "shiftX",
|
||
"name": "shiftX",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "shiftX"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "shiftY",
|
||
"name": "shiftY",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "shiftY"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "shiftZ",
|
||
"name": "shiftZ",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "shiftZ"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "theta",
|
||
"name": "theta",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "theta"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "phi",
|
||
"name": "phi",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "phi"
|
||
},
|
||
"link": null
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "transformation matrix",
|
||
"name": "transformation matrix",
|
||
"type": "MAT_4X4",
|
||
"links": [
|
||
17
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "TransformToMatrix"
|
||
},
|
||
"widgets_values": [
|
||
-0.1,
|
||
0,
|
||
0,
|
||
0,
|
||
0
|
||
],
|
||
"title": "Camera shift (dolly −0.1)"
|
||
},
|
||
{
|
||
"id": 63,
|
||
"type": "SaveWEBM",
|
||
"pos": [
|
||
2163.24658203125,
|
||
1041.8690185546875
|
||
],
|
||
"size": [
|
||
315,
|
||
437
|
||
],
|
||
"flags": {},
|
||
"order": 21,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "images",
|
||
"name": "images",
|
||
"type": "IMAGE",
|
||
"link": 154
|
||
},
|
||
{
|
||
"localized_name": "filename_prefix",
|
||
"name": "filename_prefix",
|
||
"type": "STRING",
|
||
"widget": {
|
||
"name": "filename_prefix"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "codec",
|
||
"name": "codec",
|
||
"type": "COMBO",
|
||
"widget": {
|
||
"name": "codec"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "fps",
|
||
"name": "fps",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "fps"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "crf",
|
||
"name": "crf",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "crf"
|
||
},
|
||
"link": null
|
||
}
|
||
],
|
||
"outputs": [],
|
||
"properties": {},
|
||
"widgets_values": [
|
||
"ComfyUI",
|
||
"vp9",
|
||
24,
|
||
32
|
||
]
|
||
},
|
||
{
|
||
"id": 10,
|
||
"type": "ProjectPointCloud",
|
||
"pos": [
|
||
-146.46339416503906,
|
||
791.6277465820312
|
||
],
|
||
"size": [
|
||
315,
|
||
218
|
||
],
|
||
"flags": {},
|
||
"order": 8,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "pointcloud",
|
||
"name": "pointcloud",
|
||
"type": "TENSOR",
|
||
"link": 34
|
||
},
|
||
{
|
||
"localized_name": "output_projection",
|
||
"name": "output_projection",
|
||
"type": "COMBO",
|
||
"widget": {
|
||
"name": "output_projection"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "output_horizontal_fov",
|
||
"name": "output_horizontal_fov",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "output_horizontal_fov"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "output_width",
|
||
"name": "output_width",
|
||
"type": "INT",
|
||
"widget": {
|
||
"name": "output_width"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "output_height",
|
||
"name": "output_height",
|
||
"type": "INT",
|
||
"widget": {
|
||
"name": "output_height"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "point_size",
|
||
"name": "point_size",
|
||
"type": "INT",
|
||
"widget": {
|
||
"name": "point_size"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "return_inverse_depth",
|
||
"name": "return_inverse_depth",
|
||
"type": "BOOLEAN",
|
||
"widget": {
|
||
"name": "return_inverse_depth"
|
||
},
|
||
"link": null
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "image",
|
||
"name": "image",
|
||
"type": "IMAGE",
|
||
"links": [
|
||
113,
|
||
118
|
||
]
|
||
},
|
||
{
|
||
"localized_name": "mask",
|
||
"name": "mask",
|
||
"type": "MASK",
|
||
"links": [
|
||
105,
|
||
128
|
||
]
|
||
},
|
||
{
|
||
"localized_name": "depth tensor",
|
||
"name": "depth tensor",
|
||
"type": "TENSOR",
|
||
"links": [
|
||
127
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "ProjectPointCloud"
|
||
},
|
||
"widgets_values": [
|
||
"PINHOLE",
|
||
90,
|
||
1024,
|
||
1024,
|
||
2,
|
||
false
|
||
]
|
||
},
|
||
{
|
||
"id": 1,
|
||
"type": "LoadImage",
|
||
"pos": [
|
||
-1259.08349609375,
|
||
769.6061401367188
|
||
],
|
||
"size": [
|
||
315,
|
||
314
|
||
],
|
||
"flags": {},
|
||
"order": 1,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "image",
|
||
"name": "image",
|
||
"type": "COMBO",
|
||
"widget": {
|
||
"name": "image"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "choose file to upload",
|
||
"name": "upload",
|
||
"type": "IMAGEUPLOAD",
|
||
"widget": {
|
||
"name": "upload"
|
||
},
|
||
"link": null
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "IMAGE",
|
||
"name": "IMAGE",
|
||
"type": "IMAGE",
|
||
"links": [
|
||
41,
|
||
114
|
||
]
|
||
},
|
||
{
|
||
"localized_name": "MASK",
|
||
"name": "MASK",
|
||
"type": "MASK",
|
||
"links": null
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "LoadImage"
|
||
},
|
||
"widgets_values": [
|
||
"camera_example_pinhole.jpg",
|
||
"image"
|
||
]
|
||
},
|
||
{
|
||
"id": 35,
|
||
"type": "GrowMask",
|
||
"pos": [
|
||
429.3408203125,
|
||
883.9153442382812
|
||
],
|
||
"size": [
|
||
315,
|
||
82
|
||
],
|
||
"flags": {},
|
||
"order": 11,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "mask",
|
||
"name": "mask",
|
||
"type": "MASK",
|
||
"link": 106
|
||
},
|
||
{
|
||
"localized_name": "expand",
|
||
"name": "expand",
|
||
"type": "INT",
|
||
"widget": {
|
||
"name": "expand"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "tapered_corners",
|
||
"name": "tapered_corners",
|
||
"type": "BOOLEAN",
|
||
"widget": {
|
||
"name": "tapered_corners"
|
||
},
|
||
"link": null
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "MASK",
|
||
"name": "MASK",
|
||
"type": "MASK",
|
||
"links": [
|
||
116,
|
||
119,
|
||
146
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "GrowMask"
|
||
},
|
||
"widgets_values": [
|
||
3,
|
||
false
|
||
]
|
||
},
|
||
{
|
||
"id": 55,
|
||
"type": "PointCloudUnion",
|
||
"pos": [
|
||
1526.904052734375,
|
||
1011.9266967773438
|
||
],
|
||
"size": [
|
||
367.79998779296875,
|
||
46
|
||
],
|
||
"flags": {},
|
||
"order": 19,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "pointcloud1",
|
||
"name": "pointcloud1",
|
||
"type": "TENSOR",
|
||
"link": 135
|
||
},
|
||
{
|
||
"localized_name": "pointcloud2",
|
||
"name": "pointcloud2",
|
||
"type": "TENSOR",
|
||
"link": 134
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "merged pointcloud",
|
||
"name": "merged pointcloud",
|
||
"type": "TENSOR",
|
||
"links": [
|
||
152
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "PointCloudUnion"
|
||
},
|
||
"widgets_values": [],
|
||
"title": "Merge old + new points"
|
||
},
|
||
{
|
||
"id": 68,
|
||
"type": "CameraInterpolationNode",
|
||
"pos": [
|
||
1570.71630859375,
|
||
1636.495361328125
|
||
],
|
||
"size": [
|
||
200.21640014648438,
|
||
46
|
||
],
|
||
"flags": {},
|
||
"order": 5,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "initial_matrix",
|
||
"name": "initial_matrix",
|
||
"type": "MAT_4X4",
|
||
"link": 149
|
||
},
|
||
{
|
||
"localized_name": "final_matrix",
|
||
"name": "final_matrix",
|
||
"type": "MAT_4X4",
|
||
"link": 148
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "trajectory",
|
||
"name": "trajectory",
|
||
"type": "TENSOR",
|
||
"links": [
|
||
153
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "CameraInterpolationNode"
|
||
},
|
||
"widgets_values": [
|
||
2
|
||
]
|
||
},
|
||
{
|
||
"id": 69,
|
||
"type": "CameraMotionNode",
|
||
"pos": [
|
||
1743.3812255859375,
|
||
1234.6585693359375
|
||
],
|
||
"size": [
|
||
278.75,
|
||
198
|
||
],
|
||
"flags": {},
|
||
"order": 20,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "pointcloud",
|
||
"name": "pointcloud",
|
||
"type": "TENSOR",
|
||
"link": 152
|
||
},
|
||
{
|
||
"localized_name": "trajectory",
|
||
"name": "trajectory",
|
||
"type": "TENSOR",
|
||
"link": 153
|
||
},
|
||
{
|
||
"localized_name": "n_points",
|
||
"name": "n_points",
|
||
"type": "INT",
|
||
"widget": {
|
||
"name": "n_points"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "output_projection",
|
||
"name": "output_projection",
|
||
"type": "COMBO",
|
||
"widget": {
|
||
"name": "output_projection"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "output_horizontal_fov",
|
||
"name": "output_horizontal_fov",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "output_horizontal_fov"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "output_width",
|
||
"name": "output_width",
|
||
"type": "INT",
|
||
"widget": {
|
||
"name": "output_width"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "output_height",
|
||
"name": "output_height",
|
||
"type": "INT",
|
||
"widget": {
|
||
"name": "output_height"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "point_size",
|
||
"name": "point_size",
|
||
"type": "INT",
|
||
"widget": {
|
||
"name": "point_size"
|
||
},
|
||
"link": null
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "motion_frames",
|
||
"name": "motion_frames",
|
||
"type": "IMAGE",
|
||
"links": [
|
||
154
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "CameraMotionNode"
|
||
},
|
||
"widgets_values": [
|
||
10,
|
||
"PINHOLE",
|
||
90,
|
||
512,
|
||
512,
|
||
1,
|
||
0,
|
||
false,
|
||
false
|
||
]
|
||
},
|
||
{
|
||
"id": 61,
|
||
"type": "TransformToMatrix",
|
||
"pos": [
|
||
1221.929443359375,
|
||
1524.7064208984375
|
||
],
|
||
"size": [
|
||
315,
|
||
154
|
||
],
|
||
"flags": {},
|
||
"order": 2,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "shiftX",
|
||
"name": "shiftX",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "shiftX"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "shiftY",
|
||
"name": "shiftY",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "shiftY"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "shiftZ",
|
||
"name": "shiftZ",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "shiftZ"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "theta",
|
||
"name": "theta",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "theta"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "phi",
|
||
"name": "phi",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "phi"
|
||
},
|
||
"link": null
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "transformation matrix",
|
||
"name": "transformation matrix",
|
||
"type": "MAT_4X4",
|
||
"links": [
|
||
149
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "TransformToMatrix"
|
||
},
|
||
"widgets_values": [
|
||
0.10000000000000002,
|
||
0,
|
||
0,
|
||
0,
|
||
0
|
||
]
|
||
},
|
||
{
|
||
"id": 67,
|
||
"type": "TransformToMatrix",
|
||
"pos": [
|
||
1205.505126953125,
|
||
1794.5091552734375
|
||
],
|
||
"size": [
|
||
270,
|
||
154
|
||
],
|
||
"flags": {},
|
||
"order": 3,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{
|
||
"localized_name": "shiftX",
|
||
"name": "shiftX",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "shiftX"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "shiftY",
|
||
"name": "shiftY",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "shiftY"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "shiftZ",
|
||
"name": "shiftZ",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "shiftZ"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "theta",
|
||
"name": "theta",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "theta"
|
||
},
|
||
"link": null
|
||
},
|
||
{
|
||
"localized_name": "phi",
|
||
"name": "phi",
|
||
"type": "FLOAT",
|
||
"widget": {
|
||
"name": "phi"
|
||
},
|
||
"link": null
|
||
}
|
||
],
|
||
"outputs": [
|
||
{
|
||
"localized_name": "transformation matrix",
|
||
"name": "transformation matrix",
|
||
"type": "MAT_4X4",
|
||
"links": [
|
||
148
|
||
]
|
||
}
|
||
],
|
||
"properties": {
|
||
"Node name for S&R": "TransformToMatrix"
|
||
},
|
||
"widgets_values": [
|
||
0.20000000000000004,
|
||
0,
|
||
0,
|
||
0,
|
||
0
|
||
]
|
||
},
|
||
{
|
||
"id": 70,
|
||
"type": "MarkdownNote",
|
||
"title": "About this workflow",
|
||
"pos": [
|
||
-1819.08349609375,
|
||
568.1746215820312
|
||
],
|
||
"size": [
|
||
520,
|
||
288
|
||
],
|
||
"flags": {},
|
||
"order": 0,
|
||
"mode": 0,
|
||
"inputs": [],
|
||
"outputs": [],
|
||
"properties": {},
|
||
"widgets_values": [
|
||
"# Iterative point-cloud inpainting\n\nEnriches a single-image point cloud with generated content: move the camera back → render the cloud (holes appear) → grow + invert the coverage mask → **Flux-inpaint the holes** → re-estimate depth on the inpainted image → **DepthRenormalizer** aligns it to the original cloud's depth → lift the new pixels to 3D → **PointCloudUnion** merges everything → orbit render of the enriched scene.\n\nOne-node alternative: PointcloudTrajectoryEnricher (`PC_enricher.json`).\n\n- **Set:** input image; camera shift; inpaint prompt.\n- **Requires:** inpainting_flux (auto-installed), Depth-Anything V2."
|
||
],
|
||
"color": "#432",
|
||
"bgcolor": "#653"
|
||
}
|
||
],
|
||
"links": [
|
||
[
|
||
17,
|
||
6,
|
||
0,
|
||
9,
|
||
1,
|
||
"MAT_4X4"
|
||
],
|
||
[
|
||
34,
|
||
9,
|
||
0,
|
||
10,
|
||
0,
|
||
"TENSOR"
|
||
],
|
||
[
|
||
41,
|
||
1,
|
||
0,
|
||
18,
|
||
0,
|
||
"IMAGE"
|
||
],
|
||
[
|
||
42,
|
||
18,
|
||
0,
|
||
9,
|
||
0,
|
||
"TENSOR"
|
||
],
|
||
[
|
||
102,
|
||
43,
|
||
0,
|
||
26,
|
||
0,
|
||
"IMAGE"
|
||
],
|
||
[
|
||
105,
|
||
10,
|
||
1,
|
||
27,
|
||
0,
|
||
"MASK"
|
||
],
|
||
[
|
||
106,
|
||
27,
|
||
0,
|
||
35,
|
||
0,
|
||
"MASK"
|
||
],
|
||
[
|
||
113,
|
||
10,
|
||
0,
|
||
45,
|
||
0,
|
||
"IMAGE"
|
||
],
|
||
[
|
||
114,
|
||
1,
|
||
0,
|
||
46,
|
||
0,
|
||
"IMAGE"
|
||
],
|
||
[
|
||
115,
|
||
46,
|
||
0,
|
||
18,
|
||
1,
|
||
"TENSOR"
|
||
],
|
||
[
|
||
116,
|
||
35,
|
||
0,
|
||
48,
|
||
0,
|
||
"MASK"
|
||
],
|
||
[
|
||
117,
|
||
48,
|
||
0,
|
||
47,
|
||
0,
|
||
"IMAGE"
|
||
],
|
||
[
|
||
118,
|
||
10,
|
||
0,
|
||
43,
|
||
0,
|
||
"IMAGE"
|
||
],
|
||
[
|
||
119,
|
||
35,
|
||
0,
|
||
43,
|
||
1,
|
||
"MASK"
|
||
],
|
||
[
|
||
120,
|
||
43,
|
||
0,
|
||
49,
|
||
0,
|
||
"IMAGE"
|
||
],
|
||
[
|
||
121,
|
||
43,
|
||
0,
|
||
50,
|
||
0,
|
||
"IMAGE"
|
||
],
|
||
[
|
||
126,
|
||
49,
|
||
0,
|
||
54,
|
||
0,
|
||
"TENSOR"
|
||
],
|
||
[
|
||
127,
|
||
10,
|
||
2,
|
||
54,
|
||
1,
|
||
"TENSOR"
|
||
],
|
||
[
|
||
128,
|
||
10,
|
||
1,
|
||
54,
|
||
2,
|
||
"MASK"
|
||
],
|
||
[
|
||
131,
|
||
54,
|
||
0,
|
||
50,
|
||
1,
|
||
"TENSOR"
|
||
],
|
||
[
|
||
134,
|
||
50,
|
||
0,
|
||
55,
|
||
1,
|
||
"TENSOR"
|
||
],
|
||
[
|
||
135,
|
||
9,
|
||
0,
|
||
55,
|
||
0,
|
||
"TENSOR"
|
||
],
|
||
[
|
||
146,
|
||
35,
|
||
0,
|
||
50,
|
||
2,
|
||
"MASK"
|
||
],
|
||
[
|
||
148,
|
||
67,
|
||
0,
|
||
68,
|
||
1,
|
||
"MAT_4X4"
|
||
],
|
||
[
|
||
149,
|
||
61,
|
||
0,
|
||
68,
|
||
0,
|
||
"MAT_4X4"
|
||
],
|
||
[
|
||
152,
|
||
55,
|
||
0,
|
||
69,
|
||
0,
|
||
"TENSOR"
|
||
],
|
||
[
|
||
153,
|
||
68,
|
||
0,
|
||
69,
|
||
1,
|
||
"TENSOR"
|
||
],
|
||
[
|
||
154,
|
||
69,
|
||
0,
|
||
63,
|
||
0,
|
||
"IMAGE"
|
||
]
|
||
],
|
||
"groups": [
|
||
{
|
||
"id": 1,
|
||
"title": "1. Image → point cloud",
|
||
"bounding": [
|
||
-1279.08349609375,
|
||
696.4371337890625,
|
||
717.7805786132812,
|
||
612.99560546875
|
||
],
|
||
"color": "#3f789e",
|
||
"font_size": 24,
|
||
"flags": {}
|
||
},
|
||
{
|
||
"id": 2,
|
||
"title": "2. Novel view & hole mask",
|
||
"bounding": [
|
||
-679.3237915039062,
|
||
508.17462158203125,
|
||
2045.3826293945312,
|
||
720.4768676757812
|
||
],
|
||
"color": "#a1309b",
|
||
"font_size": 24,
|
||
"flags": {}
|
||
},
|
||
{
|
||
"id": 3,
|
||
"title": "3. Flux inpaint",
|
||
"bounding": [
|
||
-40.612165451049805,
|
||
1030.0487060546875,
|
||
783.4570751190186,
|
||
755.2059020996094
|
||
],
|
||
"color": "#8A8",
|
||
"font_size": 24,
|
||
"flags": {}
|
||
},
|
||
{
|
||
"id": 4,
|
||
"title": "4. Lift inpainted region & merge",
|
||
"bounding": [
|
||
518.0506591796875,
|
||
951.9266967773438,
|
||
1396.6533813476562,
|
||
707.1267700195312
|
||
],
|
||
"color": "#b58b2a",
|
||
"font_size": 24,
|
||
"flags": {}
|
||
},
|
||
{
|
||
"id": 5,
|
||
"title": "5. Orbit render",
|
||
"bounding": [
|
||
1185.505126953125,
|
||
981.8690185546875,
|
||
1312.741455078125,
|
||
986.64013671875
|
||
],
|
||
"color": "#88A",
|
||
"font_size": 24,
|
||
"flags": {}
|
||
}
|
||
],
|
||
"config": {},
|
||
"extra": {
|
||
"ds": {
|
||
"scale": 0.611590904484147,
|
||
"offset": [
|
||
781.292906075573,
|
||
-479.4680770622288
|
||
]
|
||
},
|
||
"frontendVersion": "1.18.9",
|
||
"camera_comfyui_rev": 1
|
||
},
|
||
"version": 0.4
|
||
}
|