SkillAgentSearch skills...

3dgeer

[ICLR 2026] The official implementation associated with the paper "3DGEER: 3D Gaussian Rendering Made Exact and Efficient for Generic Cameras"

Install / Use

/learn @boschresearch/3dgeer

README

<div align="center"> <h1>[2026 ICLR] 3DGEER: 3D Gaussian Rendering <br> Made Exact and Efficient for Generic Cameras</h1>

Zixun Huang · Cho-Ying Wu · Yuliang Guo · Xinyu Huang · Liu Ren

Bosch Center for AI, Bosch Research North America

<a href="https://arxiv.org/abs/2505.24053"><img src="https://img.shields.io/badge/arXiv-2505.24053-red" alt="arXiv"></a> <a href="https://openreview.net/forum?id=4voMNlRWI7"><img src="https://img.shields.io/badge/OpenReview-Top_1%25_Score-orange" alt="OpenReview"></a> <a href="https://iclr.cc/virtual/2026/poster/10011512"><img src="https://img.shields.io/badge/ICLR-2026-blue" alt="ICLR 2026"></a> <a href="https://zixunh.github.io/3d-geer/"><img src="https://img.shields.io/badge/Project_Page-3DGEER-green" alt="Project Page"></a> <a href="https://github.com/boschresearch/3dgeer/tree/gsplat-geer"><img src="https://img.shields.io/badge/gsplat--geer-Extension-purple" alt="Project Page"></a> <a href="https://www.youtube.com/watch?v=Grl9jSMIgds"><img src="https://img.shields.io/badge/Video-YouTube-yellow" alt="Video"></a>

<p align="center"> <a href='https://zixunh.github.io/3d-geer'> <img src="assets/teaser.gif" alt="teaser" style="width: 100%;"> Check Project Page for More Visuals </a> </p> </div>

🧐Overview

<div class="row"> <div class="col-md-8 col-md-offset-2"> <section> <p> 3D Gaussian Splatting (3DGS) has rapidly become one of the most influential paradigms in neural rendering. It delivers impressive real-time performance while maintaining high visual fidelity, making it a strong alternative to NeRF-style volumetric methods. But there is a fundamental problem hiding beneath its success: </p> <blockquote style="font-size: 13px;"> <strong>Splatting doesn't obey exactness in projective geometry.</strong> </blockquote> <p> The splatting approximation is usually harmless for narrow field-of-view (FoV) pinhole cameras. However, once we move to fisheye, omnidirectional, or generic camera models — especially those common in augmented reality, robotics and autonomous driving — the approximation error becomes significant. </p> </section> </div> </div>

😺Key Features

This repository contains the official authors implementation associated with the ICLR 2026 paper "3DGEER: 3D Gaussian Rendering Made Exact and Efficient for Generic Cameras". The gsplat-geer OSS extension can be found here.

<div class="row"> <div class="col-md-8 col-md-offset-2"> <section> <ul> <li>Projective <strong>exactness</strong> + Real-time <strong>efficiency</strong></li> <li>Compatibility with generic camera models (pinhole / fisheye) + Strong generalization to <strong>extreme FoV</strong></li> <li>Adaptation to <strong>widely-used</strong> GS frameworks including <code>diff-gaussian-rasterization</code>, <code>gsplat</code>, <code>drivestudio</code></li>; now supports dynamic outdoor scene rendering under wide-FoV fisheye cameras. </ul> </section> </div> </div> <section class="section" id="BibTeX"> <div class="container is-max-desktop content"> <h2 class="title">📰BibTeX</h2> <p>If you find our work useful, we’d really appreciate a ⭐ or citation.</p> <pre><code>@misc{huang20263dgeer3dgaussianrendering, title={3DGEER: 3D Gaussian Rendering Made Exact and Efficient for Generic Cameras}, author={Zixun Huang and Cho-Ying Wu and Yuliang Guo and Xinyu Huang and Liu Ren}, year={2026}, eprint={2505.24053}, archivePrefix={arXiv}, primaryClass={cs.GR}, url={https://arxiv.org/abs/2505.24053}, }</code></pre> </div> </section>

🎉News

<p align="center"> <img src="assets/drive-geer.gif" alt="teaser" style="width: 100%;"> </p>
  • TBD: drivestudio-geer and stormGaussian-geer will be released here as well!
  • 2026-03-19: 3DGEER now supports dynamic outdoor scene rendering under wide-FoV fisheye cameras with the integration into DriveStudio.
  • 2026-03-17: SIBR_remoteGaussian_app is adapted to our work as an interactive viewer for training and trained checkpoints. Try the BEAP mode in the viewer; Pinhole and Fisheye modes are supported as well.
  • 2026-03-09: gsplat-geer released here!
  • 2026-03-09: Code released! Can Gaussian rendering be both exact and fast without relying on lossy splatting? Check out 3DGEER!
  • 2026-03-09: Code release approved. License updated. Requested admin to push code to BoschResearch.
  • 2026-01-25: 3DGEER accepted to ICLR 2026, with an initial review of average 7 (top 1% score).
  • 2025-05-29: Preprint released on Arxiv.

📷3DGEER-CUDA-Rasterizer

The full CUDA implementation can be found here: ./submodules/geer-rasterizer/.

Key Insight 1: Fixing the Math Behind Gaussian Projection

  • Ray–Gaussian Integral (Forward & Backward): Analytical forward rendering and numerical stable backward gradient computation. (See paper Appendix C for the math.)

    <div align="center"> <img src="assets/forward2backward.gif" width="60%"> </div>

Key Insight 2: Fixing the Math Behind Gaussian Association

  • Particle Bounding Frustum: Exact and minimal boundary geometry for ray–particle association. (See paper Appendix D for the math.)

    <div align="center"> <img src="assets/asso.gif" width="60%"> </div>

Key Insight 3: Optimizing the Ray Distribution Behind Pixelwise Color Supervision

  • Bipolar Equiangular Projection: Maintains uniform ray sampling across arbitrary fields of view, thereby providing stable, FoV-invariant supervision for radiance field training.

    <div align="center"> <img src="assets/beap.gif" width="60%"> </div>

🔧Dependency and Viewer Setup

Conda Based Installation

Following the 3dgs dependencies https://github.com/graphdeco-inria/gaussian-splatting to install the 3dgs environment, and then run the following command to replace the diff-gaussian-rasterization for using a geer-version CUDA rasterizer:

pip install ./submodules/geer-rasterizer

Docker Configuration (Recommend)

Set you data path and 3dgeer codebase path in ./docker/init_my_docker.sh.

# Build up 3dgs environments for 3DGEER. Example:
bash ./docker/build.sh 4090
# Reset Docker on Terminal 1
bash ./docker/init_my_docker.sh
# If you modify algorithm upon our geer-rasterizer, inside docker container, recompile:
pip install --no-build-isolation ./submodules/geer-rasterizer

SIBR Viewer Configuration with Docker

⚠️ Important Notice on Visualization: SIBR_gaussianViewer_app is currently not supported for Gaussian Exact and Efficient Rendering (GEER). Please do not use:

  $sibr_gv -m "./output/scnt/<SCENE_ID>/dslr"

as it invokes the vanilla 3D Gaussian Splatting rasterizer for offline rendering from checkpoints. This leads to invalid results, since GEER-trained (ray-based) scenes are incompatible with splatting-based rendering.

✅ Recommended Alternatives:

  • During training, use SIBR_remoteGaussian_app, which connects via port and calls our modified GEER rasterizer.
# Enter Workspace for SIBR Viewer on Terminal 2
bash ./docker/run_my_docker.sh
# Inside docker container, run:
$sibr_rg
  • To use SIBR_remoteGaussian_app from checkpoints, first run the following on Terminal 1.
bash scripts/visualize.sh <SCENE_ID> <DATA_ROOT> <CKPT_DIR> <MODE: BEAP, PH or KB> # Example: 1d003b07bd/dslr data/scnt/datasets ckpt/scnt KB
# Then (on Terminal 2) launch:
$sibr_rg
  • For offline visualization, We recommend using our gsplat-geer implementation, built on top of: https://github.com/nerfstudio-project/gsplat/blob/main/docs/3dgut.md

Note: the mismatched culling issue in UT is resolved using our PBF-based fix.

🏃Quick Start

1. Data Preparation

Our framework follows the standard COLMAP data structure. For generic cameras (e.g., Fisheye), ensure your cameras.txt includes the specific intrinsic parameters. Link to detailed data format documentation.

Expected Directory Structure:

|_./data/scnt
    |_datasets # e.g., download data into this folder
        |_1d003b07bd
        |   |_colmap
        |   |   |_images.txt
        |   |   |_points3D.txt
        |   |   |_cameras.txt
        |   |   |_...
        |   |_nerfstudio
        |   |   |_transforms.json
        |   |_resized_images
        |       |_000000.jpg
        |       |_000001.jpg
        |       |_...
        |_e3ecd49e2b
        |_...

2. Training 3DGEER

To train 3DGEER on ScanNet++ data in BEAP mode (default, recommended):

bash ./scripts/train.sh

Key training arguments:

| Argument | Description | Default | |---|---|---| | -s / --source_path | Path to the scene dataset directory | — | | -m / --model_path | Output directory for checkpoints and logs | ./output/ | | --render_model | Training projection mode: BEAP, KB, EQ, or PH | BEAP | | --sample_step | Ray sampling interval in radians (BEAP/KB) | — | | --fov_mod | FoV scale factor applied during training (BEAP mode) | — | | --mask_path | Path to validity mask PNG | — | | --raymap_path | Path to per-pixel ray-direction map .npy (KB/EQ mode) | — | | --focal_scaling

Related Skills

View on GitHub
GitHub Stars122
CategoryDevelopment
Updated2d ago
Forks20

Languages

Python

Security Score

100/100

Audited on Apr 7, 2026

No findings