Skip to content

Repository files navigation

ATGS: Anchored Temporal Gaussian Splatting for Long Volumetric Video Representation

Jiahao Wu*1,2, Jie Liang*1,2, Die Hu1, Jiayu Yang2, Kaiqiang Xiong1,2, Xiaoyun Zheng2, Xiang Li1,2, Chao Wang ✉2, Ronggang Wang ✉1,2

1 Peking University 2 Pengcheng Laboratory

ACM TOG ProjectPage Youtube

💡 Overview

ATGS represents long volumetric video with anchored temporal Gaussian splatting. A spacetime encoder (Hash or HexPlane) models dynamics over time clips and can be swapped by changing the config (hash=True/False).

Installation

conda env create --file env.yml

After that, you need to install tiny-cuda-nn (1.7) and gsplat.

🔧 Data Preparation

We use the VRU dataset as an example. First, download the VRU Long dataset (1400 frames) from Hugging Face. Follow the step-by-step instructions in utils/multiview_data_process/readme.md to process the data. Preprocessed cameras are available here.

You can also download our processed ply files from Google Drive and place them under data/ (or your own path and pass it via --base_path).

⚡ Training

Long-sequence training entry point: train_long.py. Experiment switches live in config files under arguments/vru/ or arguments/vrugz/.

Hash encoder (hash=True):

python train_long.py \
  -s /path/to/vru_long/ \
  -m output/exp_name/ \
  --frames_start_end 0 250 \
  --configs arguments/vru/basketball.py \
  --base_path /path/to/250_points_enhanced.ply

HexPlane encoder (hash=False): use arguments/vru/basketball_plane.py or arguments/vrugz/basketball_plane.py instead.

Other training options (iterations, encoder levels, balanced accumulation, etc.) are set in those config files.

Flag / env Meaning
CUDA_VISIBLE_DEVICES GPU id (set in shell before running)
-s Source multi-view images
-m Output / checkpoint directory
--frames_start_end Frame window [start, end)
--configs Config file (mmcv-style)
--base_path Initial PLY
--restore_iteration N Resume from point_cloud/iteration_N

⚡ Rendering

Entry point: render.py. Keep -s, -m, --frames_start_end, --configs, and --base_path consistent with the training run.

python render.py \
  -s /path/to/images/ \
  -m output/exp_name/ \
  --frames_start_end 0 250 \
  --configs arguments/vru/basketball.py \
  --base_path /path/to/init_points.ply \
  --iteration -1 \
  --skip_train \
  --skip_video

Outputs are written to <model_path>/test/ours_<iteration>/renders/<view_id>/*.jpg (and matching gt/).

⚡ Evaluation

Entry point: metrics.py. Set --input_dir_path to the folder that contains both renders/ and gt/ (not the renders/ folder itself), e.g. output/exp_name/test/ours_<iteration> for render.py, or testall/ours_<iteration> for training-time eval.

python metrics.py \
  --input_dir_path output/exp_name/test/ours_<iteration>

It evaluates every view under renders/, writes per-image and average PSNR / DSSIM / LPIPS to <input_dir_path>/<view_id>.csv, and prints the averages.

Citation

If you find this work useful, please cite:

@article{wu2026atgs,
  author  = {Wu, Jiahao and Liang, Jie and Hu, Die and Yang, Jiayu and Xiong, Kaiqiang and Li, Xiang and Zheng, Xiaoyun and Wang, Chao and Wang, Ronggang},
  title   = {ATGS: Anchored Temporal Gaussian Splatting for Long Volumetric Video Representation},
  journal = {ACM Transactions on Graphics},
  volume  = {45},
  number  = {4},
  pages   = {110:1--110:13},
  year    = {2026},
  doi     = {10.1145/3811306},
  publisher = {Association for Computing Machinery}
}

Acknowledgement

This codebase builds upon LocalDyGS and related 3D Gaussian Splatting research. We thank the authors for open-sourcing their work.

About

[SIGGRAPH(ToG)'2026] ATGS: Anchored Temporal Gaussian Splatting for Long Volumetric Video Representation

Resources

Stars

19 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages