{ "id": "dd56c0bf-7405-406e-924f-42b2feacb73f", "revision": 0, "last_node_id": 9, "last_link_id": 9, "nodes": [ { "id": 3, "type": "SaveWEBM", "pos": [ 606.5880737304688, 1515.5966796875 ], "size": [ 315, 437 ], "flags": {}, "order": 5, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", "link": 5 } ], "outputs": [], "properties": {}, "widgets_values": [ "ComfyUI", "vp9", 10.000000000000002, 32 ] }, { "id": 7, "type": "CameraMotionNode", "pos": [ 176.07933044433594, 1504.22705078125 ], "size": [ 278.75, 270 ], "flags": {}, "order": 4, "mode": 0, "inputs": [ { "name": "pointcloud", "type": "TENSOR", "link": 6 }, { "name": "trajectory", "type": "TENSOR", "link": 9 } ], "outputs": [ { "name": "motion_frames", "type": "IMAGE", "links": [ 5 ] }, { "name": "mask_frames", "type": "MASK", "links": null } ], "properties": { "Node name for S&R": "CameraMotionNode" }, "widgets_values": [ 10, "PINHOLE", 90, 512, 512, 1, 0, false, false ], "title": "Render motion" }, { "id": 6, "type": "LoadPointCloud", "pos": [ -357.24761962890625, 1294.427734375 ], "size": [ 315, 58 ], "flags": {}, "order": 0, "mode": 0, "inputs": [], "outputs": [ { "name": "loaded pointcloud", "type": "TENSOR", "links": [ 6 ] } ], "properties": { "Node name for S&R": "LoadPointCloud" }, "widgets_values": [ "ComfyUIPointCloud_00001.ply" ], "title": "Load saved cloud (.ply/.npy)" }, { "id": 1, "type": "TransformToMatrix", "pos": [ -537.2319946289062, 1491.40380859375 ], "size": [ 315, 154 ], "flags": {}, "order": 1, "mode": 0, "inputs": [], "outputs": [ { "name": "transformation matrix", "type": "MAT_4X4", "links": [ 7 ] } ], "properties": { "Node name for S&R": "TransformToMatrix" }, "widgets_values": [ 0, 0, 0, 0, 0 ], "title": "Start pose (identity)" }, { "id": 5, "type": "TransformToMatrix", "pos": [ -531.216796875, 1701.1632080078125 ], "size": [ 315, 154 ], "flags": {}, "order": 2, "mode": 0, "inputs": [], "outputs": [ { "name": "transformation matrix", "type": "MAT_4X4", "links": [ 8 ] } ], "properties": { "Node name for S&R": "TransformToMatrix" }, "widgets_values": [ 0.10000000000000002, 0, 0, 0, 0 ], "title": "End pose (dolly +0.1)" }, { "id": 8, "type": "CameraInterpolationNode", "pos": [ -121.91971588134766, 1597.3514404296875 ], "size": [ 200.21640014648438, 46 ], "flags": {}, "order": 3, "mode": 0, "inputs": [ { "name": "initial_matrix", "type": "MAT_4X4", "link": 7 }, { "name": "final_matrix", "type": "MAT_4X4", "link": 8 } ], "outputs": [ { "name": "trajectory", "type": "TENSOR", "links": [ 9 ] } ], "properties": { "Node name for S&R": "CameraInterpolationNode" }, "widgets_values": [ 2 ] }, { "id": 9, "type": "MarkdownNote", "title": "About this workflow", "pos": [ -1097.2319946289062, 1294.427734375 ], "size": [ 520, 236 ], "flags": {}, "order": 0, "mode": 0, "inputs": [], "outputs": [], "properties": {}, "widgets_values": [ "# Load a saved point cloud & orbit\n\nReloads a point cloud saved by SavePointCloud and renders a short camera move between two poses (identity → 0.1 forward) as a WEBM.\n\n- **Set:** the file in LoadPointCloud (dropdown lists the ComfyUI input dir — run `PointCloud.json` or `fisheye_to_pointcloud.json` first); the two TransformToMatrix poses.\n- **Requires:** nothing beyond this pack." ], "color": "#432", "bgcolor": "#653" } ], "links": [ [ 5, 7, 0, 3, 0, "IMAGE" ], [ 6, 6, 0, 7, 0, "TENSOR" ], [ 7, 1, 0, 8, 0, "MAT_4X4" ], [ 8, 5, 0, 8, 1, "MAT_4X4" ], [ 9, 8, 0, 7, 1, "TENSOR" ] ], "groups": [], "config": {}, "extra": { "ds": { "scale": 1.015255979947716, "offset": [ 636.7531305750655, -1186.3099424359816 ] }, "frontendVersion": "1.21.7", "camera_comfyui_rev": 1 }, "version": 0.4 }