Yalda Foroutan*, Ipek Oztas*, Daniel Rebain, Aysegul Dundar, Kwang Moo Yi, Lily Goli†, Andrea Tagliasacchi†
Official implementation of FullCircle, a method for robust 3D reconstruction from casual 360° captures.
git clone --recursive git@github.com:theialab/fullcircle.git
cd fullcircle
bash install_env.sh fullcircle
conda activate fullcirclegit clone --recursive git@github.com:theialab/fullcircle.git
cd fullcircle
docker build -t fullcircle .
docker run --gpus all -it fullcircle bashDownload the dataset from HuggingFace and place scenes under data/. Each scene should be organized as follows:
data/<scene_name>/
├── images/ # fisheye frames (camera1/, camera2/)
├── masks/ # fisheye masks (camera1/, camera2/)
├── omni/images/ # 360° omnidirectional frames
└── sparse/0/ # COLMAP reconstruction
Note
Remember to set the DISPLAY environment variable if you are running on a remote server from the command line.
Alternatively, use the viser GUI contributed by the community (@tangkangqi):
python train.py --config-name apps/nerf_synthetic_3dgut.yaml path=data/nerf_synthetic/lego with_viser_gui=TrueNote
Remember to install viser first via pip install viser and forward the port 8080 to your local machine if you are running on a remote server.
Masks are already provided in the released data. Re-generate them with:
bash scripts/run_masking.sh <scene_name>COLMAP files are already provided in the data. Re-run calibration with:
bash scripts/run_colmap.sh <scene_name>Note: COLMAP masks should invert the capturer masks and include the fisheye border (masking/mask_train.png); COLMAP ignores pixels where the mask is 0.
python train.py \
--config-name apps/colmap_3dgrt.yaml \
path=data/<scene_name> \
out_dir=runs \
dataset.downsample_factor=4 \
dataset.test_frame_suffix="_test"python render.py \
--checkpoint runs/<scene_name>/ckpt_last.pt \
--out-dir runs/<scene_name>@article{foroutan2026fullcircle,
title = {FullCircle: Effortless 3D Reconstruction from Casual 360° Captures},
author = {Foroutan, Yalda and Oztas, Ipek and Rebain, Daniel and Dundar, Aysegul and Yi, Kwang Moo and Goli, Lily and Tagliasacchi, Andrea},
journal = {arXiv preprint arXiv:2603.22572},
year = {2026}
}