Nodes/ComfyUI-SplatKit/SphereSfM Dataset (Dual-Res: low-res SfM + 8K faces)
ComfyUI Node

SphereSfM Dataset (Dual-Res: low-res SfM + 8K faces)

A ComfyUI node in SplatKit with 27 inputs and 3 outputs.

By mickmumpitz·Created 19 days ago·Updated a day ago· 0
SphereSfM Dataset (Dual-Res: low-res SfM + 8K faces)
  • pano_frames_1
  • pano_frames_2
  • pano_frames_3
  • pano_frames_4
  • model_dir
  • num_images
  • num_points
hires_dir
output_namemy_scene
matcher_typeexhaustive
on_splitstop
face_size0
max_num_features8192
peak_threshold0.0066
edge_threshold10.00
max_num_matches32768
filter_max_reproj_error4.00
filter_min_tri_angle1.50
init_min_tri_angle4.00
init_min_num_inliers30
init_max_forward_motion1.00
image_ordercamera_major
hires_glob*.png
frame_stride1
max_frames0
hires_1
hires_2
hires_3
hires_4
cleanup_hires_sourcefalse
CategorySplatKit

Inputs (27)

NameTypeDefaultDescription
pano_frames_1IMAGEEquirect trajectory 1 (the frames SfM poses).
hires_dirSTRINGOPTIONAL folder of matching hi-res equirects (e.g. <dataset>/panoramas_upscaled). Sorted order AND COUNT must match the frames wired in above, 1:1 (thin with this node's frame_stride, not the loader's). LEAVE EMPTY for a plain single-res SphereSfM run -- the cube faces are then reprojected from the posed frames.
output_nameSTRINGmy_sceneDataset folder under ComfyUI/output (or an absolute path).
pano_frames_2optIMAGEOptional low-res trajectory 2.
pano_frames_3optIMAGEOptional low-res trajectory 3.
pano_frames_4optIMAGEOptional low-res trajectory 4.
matcher_typeoptCOMBOexhaustiveexhaustive matches ALL pairs (links non-adjacent trajectories); sequential only matches temporally adjacent frames.
on_splitoptCOMBOstopstop = raise with the per-model breakdown if >1 model forms; largest = reproject the biggest model anyway (legacy behaviour).
face_sizeoptINT00–8192Output cube-face size in px; 0 = COLMAP default (scaled from the rescaled 8K SPHERE camera -> full detail).
max_num_featuresoptINT8192512–65536
peak_thresholdoptFLOAT0.00660–1
edge_thresholdoptFLOAT10.001–100
max_num_matchesoptINT327681024–262144
filter_max_reproj_erroroptFLOAT4.000.5–32
filter_min_tri_angleoptFLOAT1.500.1–30
init_min_tri_angleoptFLOAT4.000.5–30
init_min_num_inliersoptINT3010–500
init_max_forward_motionoptFLOAT1.000.1–1
image_orderoptCOMBOcamera_major2 options: camera_major, frame_major
hires_globoptSTRING*.pngGlob for the hi-res files inside hires_dir.
frame_strideoptINT11–100Use every Nth frame for SfM. Stride HERE, not in the image loader: this thins the low-res frames and the matching hi-res files together, so the two sets stay aligned 1:1.
max_framesoptINT00–2000Cap the frame count after striding (0 = no cap). Frames are picked evenly across the strided clip.
hires_1optSTRINGhires_manifest from the HiRes Composite feeding pano_frames_1. Wire it and hires_dir/hires_glob are ignored (dual-res on).
hires_2optSTRINGhires_manifest for pano_frames_2.
hires_3optSTRINGhires_manifest for pano_frames_3.
hires_4optSTRINGhires_manifest for pano_frames_4.
cleanup_hires_sourceoptBOOLEANfalseAfter SfM succeeds, DELETE each consumed hi-res equirect (the HiRes Composite's frames/*.png, several GB per trajectory) from its ORIGINAL folder -- only once a byte-identical-size copy has been confirmed staged in this dataset's _spheresfm_work/equirect_hires (what repair/re-reprojection actually read from). OFF (default): keep everything, nothing is deleted -- safest, and required if you plan to re-run this node with a different frame_stride/ max_frames (a wider selection needs files this pass didn't keep). ON: frees the frames/ folder's disk once you're done iterating on THIS dataset. Only files this run actually used are touched; nothing outside hires_dir is ever removed.

Outputs (3)

NameTypeDescription
model_dirSTRING
num_imagesINT
num_pointsINT