3DGS reconstruction with Nerfstudio
September 9, 2026 · View on GitHub
Export one synchronized multi-view frame from 4DAnyone and reconstruct it as a 3D Gaussian Splatting (3DGS) scene with Nerfstudio Splatfacto.
Installation
Install Nerfstudio in a new environment by following the official installation guide, then install:
pip install huggingface-hub safetensors
Export
Run the exporter in the 4DAnyone inference environment:
conda activate 4danyone
python scripts/export_nerfstudio.py \
--data_dir data/fdanyone/pexels/2785536-uhd_2160_3840_25fps \
--output_dir data/ns_data/pexels/2785536-uhd_2160_3840_25fps/frame_000 \
--frame_index 0
The exported Nerfstudio data is written to:
data/ns_data/pexels/<clip>/frame_000/
├── transforms.json
├── sparse_pcd.ply # visual-hull initialization
├── images/00.png ... <N-1>.png
└── masks/00.png ... <N-1>.png
Train
Standard Splatfacto:
ns-train splatfacto \
--data data/ns_data/pexels/2785536-uhd_2160_3840_25fps/frame_000 \
--output-dir data/ns_outputs/pexels/2785536-uhd_2160_3840_25fps/frame_000 \
--pipeline.model.background-color random
Splatfacto with perceptual loss:
python scripts/train_nerfstudio.py splatfacto-perceptual \
--data data/ns_data/pexels/2785536-uhd_2160_3840_25fps/frame_000 \
--output-dir data/ns_outputs/pexels/2785536-uhd_2160_3840_25fps/frame_000 \
--pipeline.model.background-color random \
--pipeline.model.perceptual-loss-weight 0.4 \
--pipeline.model.perceptual-compute-dtype bfloat16
If the GPU supports bfloat16, we recommend enabling it to accelerate training.
View
Launch the viewer with the config path printed by training:
python scripts/view_nerfstudio.py \
--load-config <training-output>/config.yml
Example 3DGS reconstruction in the Nerfstudio viewer:

Note
This guide reconstructs a static 3DGS from a single synchronized timestamp and cannot reproduce the 4DGS results shown in our work.
The FreeTimeGS implementation used in the paper is not publicly available. We are evaluating open-source alternatives for a reproducible 4DGS pipeline.