Files
Alexander KharinandClaude Fable 5 d77af07189 Apply workflow improvements: runnable defaults, templates, dep trim, CI
- 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>
2026-07-16 18:49:14 +03:00

213 lines
4.1 KiB
JSON

{
"id": "00000000-0000-0000-0000-000000000000",
"revision": 0,
"last_node_id": 5,
"last_link_id": 3,
"nodes": [
{
"id": 1,
"type": "TransformToMatrix",
"title": "Start pose (identity)",
"pos": [
-500,
320
],
"size": [
315,
154
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "transformation matrix",
"type": "MAT_4X4",
"links": [
1
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "TransformToMatrix"
},
"widgets_values": [
0.0,
0.0,
0.0,
0.0,
0.0
]
},
{
"id": 2,
"type": "TransformToMatrix",
"title": "End pose (edit me)",
"pos": [
-500,
540
],
"size": [
315,
154
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "transformation matrix",
"type": "MAT_4X4",
"links": [
2
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "TransformToMatrix"
},
"widgets_values": [
0.0,
0.0,
0.3,
0.0,
30.0
]
},
{
"id": 3,
"type": "CameraInterpolationNode",
"title": "Interpolate 20 poses",
"pos": [
-120,
430
],
"size": [
226,
78
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "initial_matrix",
"type": "MAT_4X4",
"link": 1
},
{
"name": "final_matrix",
"type": "MAT_4X4",
"link": 2
}
],
"outputs": [
{
"name": "trajectory",
"type": "TENSOR",
"links": [
3
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CameraInterpolationNode"
},
"widgets_values": [
20
]
},
{
"id": 4,
"type": "SaveTrajectory",
"title": "Save to output/*.npy",
"pos": [
170,
430
],
"size": [
315,
82
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "trajectory",
"type": "TENSOR",
"link": 3
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveTrajectory"
},
"widgets_values": [
"ComfyUITrajectory"
]
},
{
"id": 5,
"type": "MarkdownNote",
"title": "About this workflow",
"pos": [
-1080,
320
],
"size": [
520,
430
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {},
"widgets_values": [
"# Record a camera trajectory\n\nProduces the `.npy` trajectory file consumed by `PC_enricher.json` and `wan_vace_ref_to_video.json` (LoadTrajectory): two poses are SE(3)-interpolated into a smooth 20-step path and saved by **SaveTrajectory** to your ComfyUI **output** directory.\n\n- **Set:** the end pose (shift XYZ in scene units — metric if the cloud came from metric depth — plus theta = pitch, phi = yaw) and `num_steps`.\n- **Then:** move the saved file from `output/` to `input/` so LoadTrajectory can list it. A bundled example (`ComfyUITrajectory_00001.npy`) is already installed by install.py.\n- Chain more CameraInterpolationNode segments (or use CameraTrajectoryNode on a point cloud) for multi-keyframe paths."
],
"color": "#432",
"bgcolor": "#653"
}
],
"links": [
[
1,
1,
0,
3,
0,
"MAT_4X4"
],
[
2,
2,
0,
3,
1,
"MAT_4X4"
],
[
3,
3,
0,
4,
0,
"TENSOR"
]
],
"groups": [],
"config": {},
"extra": {
"camera_comfyui_rev": 1
},
"version": 0.4
}