This repository contains the official implementation of our BMVC 2025 paper:
![]() |
![]() |
![]() |
![]() |
Use the following commands to create a conda environment and install the required packages:
conda create -n c3gs python=3.7.13
conda activate c3gs
pip install -r requirements.txt
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 -f https://download.pytorch.org/whl/torch_stable.htmlInstall Gaussian Splatting renderer. We are using the MVPGS implementation which returns both rendered image and depth:
git clone https://github.com/zezeaaa/MVPGS.git --recursive
pip install MVPGS/submodules/diff-gaussian-rasterization
pip install MVPGS/submodules/simple-knn-
DTU
Download DTU data and Depth raw. Unzip and organize them as:
mvs_training ├── dtu ├── Cameras ├── Depths ├── Depths_raw └── Rectified -
Download NeRF Synthetic, Real Forward-facing, and Tanks and Temples datasets.
This implementation is built upon the MVSGaussian framework, with our modules and improvements integrated into its existing pipeline.
To maintain compatibility, we preserve the original directory and command structure (e.g., paths under mvsgs/...).
To train a generalizable model from scratch on DTU, specify data_root in configs/mvsgs/dtu_pretrain.yaml first and then run:
python train_net.py --cfg_file configs/mvsgs/dtu_pretrain.yaml train.batch_size 4More details can be found in the MVSGaussian codebase.
One strategy is to optimize only the initial Gaussian point cloud provided by the generalizable model.
bash scripts/mvsgs/llff_ft.sh
bash scripts/mvsgs/nerf_ft.sh
bash scripts/mvsgs/tnt_ft.shMore details can be found in the MVSGaussian codebase.
Use the following command to evaluate the model on DTU:
python run.py --type evaluate --cfg_file configs/mvsgs/dtu_pretrain.yaml mvsgs.cas_config.render_if False,True mvsgs.cas_config.volume_planes 48,8 mvsgs.eval_depth TrueThe rendered images will be saved in result/mvsgs/dtu_pretrain.
python run.py --type evaluate --cfg_file configs/mvsgs/llff_eval.yamlpython run.py --type evaluate --cfg_file configs/mvsgs/nerf_eval.yamlpython run.py --type evaluate --cfg_file configs/mvsgs/tnt_eval.yamlIf you find this work useful in your research, please cite:
@inproceedings{hu2025c3gs,
title = {{$C^3$-GS: Learning Context-aware, Cross-dimension, Cross-scale Feature for Generalizable Gaussian Splatting}},
author = {Hu, Yuxi and Zhang, Jun and Chen, Kuangyi and Zhang, Zhe and Fraundorfer, Friedrich},
booktitle = {British Machine Vision Conference (BMVC)},
year = {2025}
}To support practical usage on a single GPU (e.g., RTX 3090/4090), the released code applies the Transformer only at the low-resolution level.
Compared to the original paper setting (Transformer at both low and high resolution), this variant trades off a small drop in accuracy for significantly better efficiency and scalability.
This repository builds on the excellent works of MVSGaussian, MVSplat. We sincerely thank the authors for their contributions to the community.



