Nodes/ComfyUI-SplatCam/SplatCam · Image → 3D Camera
ComfyUI Node

SplatCam · Image → 3D Camera

Turn one image into a camera you can fly. The node builds a 3D Gaussian splat from your image with fal.ai TripoSplat, opens a live viewport right on the node, and emits the rendered view, a silhouette mask, a depth map, and any camera move you record — ready for a Save Video node or as a camera-motion reference for video models. Queue once to build the splat (cached — the same image never pays twice). Fly the camera, press Record, then queue again to emit your take.

By tahabahrami·Created 21 days ago·Updated 21 days ago· 1
SplatCam · Image → 3D Camera
  • image
  • model_3d
  • image
  • mask
  • depth
  • video
num_gaussians262144
num_inference_steps20
guidance_scale3.0
fal_seed-1
capture_width1024
capture_height1024
record_fps24
record_modergb
force_regeneratefalse
viewport_state
Category3d/SplatCam

Inputs (12)

NameTypeDefaultDescription
num_gaussiansINT26214432768–262144Gaussian count: requested from TripoSplat for image inputs, and used as the surface-sampling density for mesh inputs.
num_inference_stepsINT201–50Flow-matching sampler steps.
guidance_scaleFLOAT3.00–10Classifier-free guidance strength.
fal_seedINT-1-1–2147483647Deterministic seed sent to fal; -1 omits it. Changing this is a new cache key and therefore a new paid generation.
capture_widthINT102464–4096Pixel width of the emitted view, mask, and depth images.
capture_heightINT102464–4096Pixel height of the emitted view, mask, and depth images.
record_fpsINT241–60Frame rate used when recording and transcoding an orbit take.
record_modeCOMBOrgbWhich pass the recorded take captures. 'depth' gives a video models can read as pure camera motion and geometry, with no colour or texture to copy; 'mask' records the silhouette only.
force_regenerateBOOLEANfalsePay fal for a fresh splat even when this exact image and settings are already cached locally.
viewport_stateSTRINGManaged by the node's viewport. Holds the splat token, camera, and capture handles; never edit it by hand.
imageoptIMAGESource image; fal TripoSplat builds the splat (~$0.05, cached). Connect one IMAGE; the first of a batch is used. Not needed when a splat is connected.
model_3doptSPLAT,MESH,FILE_3D,FILE_3D_SPLAT_ANY,FILE_3D_PLY,FILE_3D_SPLAT,FILE_3D_GLB,FILE_3D_GLTF,FILE_3D_OBJ,FILE_3D_STLBring your own 3D — fully local, fal is never called. Accepts a SPLAT, a MESH (e.g. from a local image-to-3D model), a 3DGS .ply/.splat, or a glb/gltf/obj/stl mesh file (surface-sampled into Gaussians). Takes precedence over the image input.

Outputs (4)

NameTypeDescription
imageIMAGE
maskMASKSplat silhouette: 1 where the model covers a pixel, 0 elsewhere.
depthIMAGEAlpha-weighted depth of the current view; near surfaces are bright.
videoVIDEORecorded orbit as MP4. Empty until a take is recorded.