ComfyUI Node
SphereSfM Dataset
A ComfyUI node in SplatKit with 24 inputs and 3 outputs.
SphereSfM Dataset
- initial_pano
- pano_frames_1
- pano_frames_2
- pano_frames_3
- pano_frames_4
- model_dir
- num_images
- num_points
◄output_namespheresfm_dataset►
◄frame_stride1►
◄max_frames0►
◄matcher_typesequential►
◄face_size0►
◄max_num_features8192►
◄peak_threshold0.0066►
◄edge_threshold10►
◄max_num_matches32768►
◄filter_max_reproj_error4.0►
◄filter_min_tri_angle1.5►
◄init_min_tri_angle4.0►
◄init_min_num_inliers30►
◄init_max_forward_motion1.00►
◄modecolmap_now►
◄image_ordercamera_major►
◄initial_pano_modereplace►
◄initial_pano_hirestrue►
◄reuse_solvefalse►
CategorySplatKit
Inputs (24)
| Name | Type | Default | Description |
|---|---|---|---|
| output_name | STRING | spheresfm_dataset | — |
| initial_panoopt | IMAGE | The pristine SOURCE equirect panorama (the still image WAN was conditioned on). Placed at frame 0000 of the SfM sequence and reprojected into cube faces like every other frame, so the reconstruction is anchored on the clean original instead of WAN's (often slightly drifted/degraded) first generated frame. Auto-resized to the WAN frame resolution (SphereSfM needs one camera size). See initial_pano_mode for replace-vs-prepend. | |
| pano_frames_1opt | IMAGE | The (first) WAN equirect pano video. Required in practice -- SfM needs frames -- but declared optional so it can sit below initial_pano in the input list. | |
| pano_frames_2opt | IMAGE | Optional extra WAN pano video (e.g. a second trajectory). Concatenated after pano_frames_1 before SfM runs. | |
| pano_frames_3opt | IMAGE | Optional third WAN pano video; concatenated in order. | |
| pano_frames_4opt | IMAGE | Optional fourth WAN pano video; concatenated in order. | |
| frame_strideopt | INT | 11–100 | Use every Nth frame. SfM cost grows with frame count; thin long clips but keep enough overlap for matching. |
| max_framesopt | INT | 00–1000 | Cap frames after stride (0 = no cap). |
| matcher_typeopt | COMBO | sequential | sequential = ordered video frames (fast, default). exhaustive = match all pairs (slower, for unordered stills). |
| face_sizeopt | INT | 00–2048 | Cube-face output resolution (px). 0 = auto (~equirect_w/4). Raise for sharper training images (more disk). |
| max_num_featuresopt | INT | 81921024–32768 | — |
| peak_thresholdopt | FLOAT | 0.00660–0.1 | — |
| edge_thresholdopt | FLOAT | 101–50 | — |
| max_num_matchesopt | INT | 327684096–131072 | — |
| filter_max_reproj_erroropt | FLOAT | 4.01–16 | — |
| filter_min_tri_angleopt | FLOAT | 1.50.1–10 | — |
| init_min_tri_angleopt | FLOAT | 4.00.5–16 | Min triangulation angle (deg) for the INITIAL image pair. COLMAP's default is 16, tuned for wide-baseline photos; WAN/orbit clips have modest parallax (~4-15 deg), so 16 causes 'No good initial image pair found'. Lower if SfM won't start; raise for a sturdier init. |
| init_min_num_inliersopt | INT | 3010–200 | Min verified inliers for the initial image pair (COLMAP default 100). |
| init_max_forward_motionopt | FLOAT | 1.000.5–1 | Max forward-motion ratio allowed for the initial pair (COLMAP default 0.95). Spherical cameras still get parallax under forward/push-in motion, so 1.0 lets push-in trajectories initialize. |
| modeopt | COMBO | colmap_now | colmap_now = run SfM now and output a cube-face COLMAP dataset (then upscale it in place with the camera-sorted upscale workflow). panorama_only = SKIP SfM and just save the raw equirect panoramas; the panorama upscale workflow then upscales the coherent equirect video and runs SphereSfM on the UPSCALED panoramas (best quality). |
| image_orderopt | COMBO | camera_major | Order recorded in the dataset marker for upscaling (COLMAP files are left untouched either way). camera_major groups each cube face into a coherent per-view sub-video so a temporal upscaler keeps fixed context; frame_major keeps the plain lexical (frame-by-frame) order. |
| initial_pano_modeopt | COMBO | replace | Only used when initial_pano is connected. replace = overwrite WAN's frame 0 with the pristine initial pano (they depict the same view, so this avoids a near-duplicate frame -- recommended). prepend = keep WAN's frame 0 and insert the initial pano just before it (adds one extra frame; use if WAN's first frame already drifted to a slightly different view). |
| initial_pano_hiresopt | BOOLEAN | true | Keep the initial_pano at its NATIVE (higher) resolution instead of downscaling it to the WAN frame size. ON (recommended if your pano is hi-res): the pano is registered as its own SPHERE camera, so its 6 cube faces are reprojected from the sharp original (set face_size high to keep that detail). OFF: resize the pano down to the WAN resolution (one shared camera) -- use as a fallback if your colmap_sphere build rejects the multi-camera path. |
| reuse_solveopt | BOOLEAN | false | Skip the SfM solve when this dataset's _spheresfm_work already holds one built from EXACTLY these frames and these SfM settings. Only the cube faces are re-rendered, so changing face_size or image_order costs seconds instead of a full feature/matching/bundle-adjustment pass. NO precision trade: the reused poses and sparse cloud are the identical files a fresh run would produce. If anything the solve depends on changed (frames, stride, initial_pano, any SIFT/mapper knob) it re-solves automatically and prints why. Leave OFF for a first build; turn ON when re-running the same clip. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| model_dir | STRING | — |
| num_images | INT | — |
| num_points | INT | — |