InfiniSplat v2: Open Feed-Forward Splats From 2–50 Photos

Introduction
InfiniSplat v2 went public on October 12. Zhejiang University's ZJU3DV group, working with Hello TransTech and Shenzhen University, released the inference code in the zju3dv/InfiniSplat repo (release commit 2026-10-12 13:06 UTC). The weights are on Hugging Face at Edisoneh/InfiniSplat-v2, and there's a hosted Gradio demo. You give it 2 to 50 overlapping photos (or a short video) of a static scene, with or without camera poses. In one forward pass, with no per-scene optimization, it returns a 3D Gaussian Splatting scene as a .ply, plus an optional standalone HTML viewer. Modality: multi-view images to a 3DGS scene. The weights are public, with no login needed, under ZJU's Project Registration License. Where to run it today: in the browser through the HF Space (ZeroGPU), or locally on an NVIDIA CUDA GPU.
What shipped
- Code: a
v2/package with aninfinisplatCLI and a Python API (Pipeline.from_pretrained,export_ply), plus COLMAP prep scripts. v1 (single image, SIGGRAPH Asia 2026) now lives alongside it underv1/. - Weights: one inference bundle,
config.jsonplus a 6.6 GBmodel.safetensors, built on Depth Anything 3. The download script checks the SHA256 before it writes anything. - Examples: a 90.4 MB archive of 114 original PNGs covering three scenes: DTU scan 24 (32 views), Hypersim
ai_004_009(50 views, cameras supplied) and Hypersimai_006_001(32 views, cameras estimated). - Demo Space: upload 2–50 images, or a video with a frame-count slider. Choose DA3-estimated, NPZ, COLMAP or pose-free cameras. Download the Gaussian PLY and HTML. Six precomputed examples are included, two of them indoor videos.
- Project page: zju3dv.github.io/InfiniSplat2, with side-by-side comparisons against DA3-GS, WorldMirror 2.0, tttLRM and ReSplat, and a 1,000+ frame KITTI reconstruction. The paper is still marked "coming soon".
How it works
The authors summarize v2 as a dual-branch design. The geometry branch, taken from Depth Anything 3, stays frozen. A second branch learns the Gaussian attributes (scale, rotation, color, opacity) on top of it. Opacity also does cleanup work: points that disagree across views get low opacity, so floaters fade out instead of smearing. Training uses scale-aligned ground-truth cameras and deliberately wide-angle target views. The goal is renders that hold up when you orbit far from the input cameras, which is where feed-forward splat models usually degrade.
There are three camera modes:
da3-pose(recommended when you have no calibration): DA3 estimates cameras first, then a second pass reconstructs conditioned on them.provided: your own OpenCV camera-to-world poses and intrinsics in an NPZ, or an undistorted COLMAP model.pose-free: RGB only.
Run it
Python 3.10–3.12 and an NVIDIA GPU. The authors tested PyTorch 2.7.1 + CUDA 12.8 on an H20.
git clone https://github.com/zju3dv/InfiniSplat.git
cd InfiniSplat/v2
python3 -m venv .venv && source .venv/bin/activate
pip install torch==2.7.1 --index-url https://download.pytorch.org/whl/cu128
pip install .
pip install --no-deps 'depth-anything-3 @ git+https://github.com/ByteDance-Seed/Depth-Anything-3.git@41736238f5bced4debf3f2a12375d2466874866d'
python scripts/download_weights.py --repo-id Edisoneh/InfiniSplat-v2 --output weights/da3
# your own photos: 2–8 overlapping shots of one static scene to start
infinisplat --model weights/da3 --images-dir images --pose-mode da3-pose \
--long-side 224 --output result_test --no-html- Outputs:
scene.ply(Gaussians, SH0),cameras.npz,result.json, andscene.htmlif you install@playcanvas/splat-transform@2.6.0and drop--no-html. - Knobs:
--long-sidedefaults to 518 (range 112–2044).--max-viewsdefaults to 32 and goes up to 50. If you run out of memory, start at 2–4 images and--long-side 224. - From a phone video: the COLMAP guide pulls frames with
ffmpeg -vf fps=2.4 -frames:v 24, runsscripts/prepare_colmap.py, then reconstructs from the undistorted cameras.
Why game devs should care
Photogrammetry and per-scene 3DGS training both ask for dozens to hundreds of photos and minutes to hours of optimization for each location. InfiniSplat v2 takes a handful of overlapping shots and gives you a splat in a single inference pass. That makes it practical as a quick capture tool: scan a real corridor, café or rooftop to use as level-blockout reference, lighting and look-dev reference, or a background plate for a world-model or video pipeline. The output is a standard Gaussian .ply, the format that PlayCanvas/SuperSplat and the common Unity and Unreal Gaussian-splat plugins read. We haven't tested engine import ourselves yet.
Caveats
- Licence isn't Apache/MIT: PRL v1.0 is free for research, education and personal use. Any company or organization project, commercial or not, internal or not, must be registered via ZJU's form before use begins. Registration is free and automatic. The DA3 backbone and the weight bundle also carry their own terms, so check them before you ship.
- Not metric: PLY coordinates are in the model's normalized RDNorm space, not world units. Expect to rescale and orient the scene by hand in your engine.
- SH0 only: the export has no view-dependent spherical harmonics, so shiny surfaces won't shift highlights as you move.
- Static scenes only: moving objects, motion blur, video cuts and large exposure changes all hurt the result. Quality depends on overlap and camera estimates.
- Paper pending: there are no published metrics yet. The comparisons are visual only, on the project page.
Conclusion
InfiniSplat v2 is one of the cleaner open releases for turning a handful of photos into a Gaussian scene: real weights, a working CLI with three camera modes, COLMAP and video recipes, and a free browser demo. For game teams, it's a fast way to capture real places as splats for reference and look-dev. Register before you use it on a team project, and plan to fix the scale yourself.
—Titus
